[libata] mark certain hardware (or drivers) with a no-atapi flag

Some hardware does not support the PACKET command at all.
Other hardware supports ATAPI, but the driver does something nasty such
as calling BUG() when an ATAPI command is issued.

For these such cases, we mark them with a new flag, ATA_FLAG_NO_ATAPI.

Initial version contributed by Ben Collins.
This commit is contained in:
Jeff Garzik
2005-12-13 02:29:45 -05:00
parent be0d9b6c7a
commit 50630195bb
5 changed files with 16 additions and 10 deletions

View File

@@ -2173,9 +2173,12 @@ ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev)
if (unlikely(!ata_dev_present(dev)))
return NULL;
if (!atapi_enabled) {
if (unlikely(dev->class == ATA_DEV_ATAPI))
if (!atapi_enabled || (ap->flags & ATA_FLAG_NO_ATAPI)) {
if (unlikely(dev->class == ATA_DEV_ATAPI)) {
printk(KERN_WARNING "ata%u(%u): WARNING: ATAPI is %s, device ignored.\n",
ap->id, dev->devno, atapi_enabled ? "not supported with this driver" : "disabled");
return NULL;
}
}
return dev;