libata: detect Device Attention support Add a new flag ATA_DFLAG_DA to indicate that device supports "Device Attention". Acked-by: Aaron Lu <aaron.lu@amd.com> Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 7705191..c14f88c 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c
@@ -2374,6 +2374,9 @@ dma_dir_string = ", DMADIR"; } + if (ata_id_has_da(dev->id)) + dev->flags |= ATA_DFLAG_DA; + /* print device info to dmesg */ if (ata_msg_drv(ap) && print_info) ata_dev_info(dev,
diff --git a/include/linux/ata.h b/include/linux/ata.h index 32df2b6..5713d3a 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h
@@ -578,6 +578,7 @@ ((u64) (id)[(n) + 0]) ) #define ata_id_cdb_intr(id) (((id)[ATA_ID_CONFIG] & 0x60) == 0x20) +#define ata_id_has_da(id) ((id)[77] & (1 << 4)) static inline bool ata_id_has_hipm(const u16 *id) {
diff --git a/include/linux/libata.h b/include/linux/libata.h index 888feef..cc22b943 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h
@@ -161,6 +161,8 @@ ATA_DFLAG_DETACH = (1 << 24), ATA_DFLAG_DETACHED = (1 << 25), + ATA_DFLAG_DA = (1 << 26), /* device supports Device Attention */ + ATA_DEV_UNKNOWN = 0, /* unknown device */ ATA_DEV_ATA = 1, /* ATA device */ ATA_DEV_ATA_UNSUP = 2, /* ATA device (unsupported) */