aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ata/ata-disk.c
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2009-02-28 11:25:05 +0000
committerAlexander Motin <mav@FreeBSD.org>2009-02-28 11:25:05 +0000
commit84b59262f102e564cafed54b3f4f2a9a893b04dc (patch)
treef3410869622522be80b33c90bcbde706aecd00e0 /sys/dev/ata/ata-disk.c
parentcd86ae77eca6da372c49b34f98ac7b1e4a93c5c6 (diff)
Notes
Diffstat (limited to 'sys/dev/ata/ata-disk.c')
-rw-r--r--sys/dev/ata/ata-disk.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/dev/ata/ata-disk.c b/sys/dev/ata/ata-disk.c
index e11f3f90fb2e..a1280ac30ac6 100644
--- a/sys/dev/ata/ata-disk.c
+++ b/sys/dev/ata/ata-disk.c
@@ -79,6 +79,18 @@ ad_probe(device_t dev)
{
struct ata_device *atadev = device_get_softc(dev);
+ if (atadev->type != ATA_T_ATA)
+ return (ENXIO);
+
+ if (!(atadev->flags & ATA_D_PROBED)) {
+ atadev->flags |= ATA_D_PROBED;
+ if (ata_getparam(atadev, 1) == 0)
+ atadev->flags |= ATA_D_VALID;
+ }
+
+ if (!(atadev->flags & ATA_D_VALID))
+ return (ENXIO);
+
if (!(atadev->param.config & ATA_PROTO_ATAPI) ||
(atadev->param.config == ATA_CFA_MAGIC1) ||
(atadev->param.config == ATA_CFA_MAGIC2) ||