diff options
Diffstat (limited to 'sys/dev/ata/ata-disk.c')
| -rw-r--r-- | sys/dev/ata/ata-disk.c | 12 |
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) || |
