diff options
author | Tejun Heo <htejun@gmail.com> | 2007-09-23 00:14:11 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-10-12 14:55:40 -0400 |
commit | 854c73a2f1c3bcc4aa88c25e208dc597e8efb795 (patch) | |
tree | 210569f3c4fa4f9413ceb0bc3fcf89648a9894b2 /drivers/ata/sata_sil24.c | |
parent | c78968bb0f7714ceba1cdfa23714454fc98cefdf (diff) |
libata: misc updates for AN
Update AN support in preparation of PMP support.
* s/ata_id_has_AN/ata_id_has_atapi_AN/
* add AN enabled reporting during configuration
* add err_mask to AN configuration failure reporting
* update LOCKING comment for ata_scsi_media_change_notify()
* check whether ATA dev is attached to SCSI dev ata_scsi_media_change_notify()
* set ATA_FLAG_AN in ahci and sata_sil24
Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: Kriten Carlson Accardi <kristen.c.accardi@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata/sata_sil24.c')
-rw-r--r-- | drivers/ata/sata_sil24.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c index 3dcb223117be..d9c010ab2280 100644 --- a/drivers/ata/sata_sil24.c +++ b/drivers/ata/sata_sil24.c | |||
@@ -168,7 +168,7 @@ enum { | |||
168 | 168 | ||
169 | DEF_PORT_IRQ = PORT_IRQ_COMPLETE | PORT_IRQ_ERROR | | 169 | DEF_PORT_IRQ = PORT_IRQ_COMPLETE | PORT_IRQ_ERROR | |
170 | PORT_IRQ_PHYRDY_CHG | PORT_IRQ_DEV_XCHG | | 170 | PORT_IRQ_PHYRDY_CHG | PORT_IRQ_DEV_XCHG | |
171 | PORT_IRQ_UNK_FIS, | 171 | PORT_IRQ_UNK_FIS | PORT_IRQ_SDB_NOTIFY, |
172 | 172 | ||
173 | /* bits[27:16] are unmasked (raw) */ | 173 | /* bits[27:16] are unmasked (raw) */ |
174 | PORT_IRQ_RAW_SHIFT = 16, | 174 | PORT_IRQ_RAW_SHIFT = 16, |
@@ -237,7 +237,8 @@ enum { | |||
237 | /* host flags */ | 237 | /* host flags */ |
238 | SIL24_COMMON_FLAGS = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | | 238 | SIL24_COMMON_FLAGS = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | |
239 | ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA | | 239 | ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA | |
240 | ATA_FLAG_NCQ | ATA_FLAG_ACPI_SATA, | 240 | ATA_FLAG_NCQ | ATA_FLAG_ACPI_SATA | |
241 | ATA_FLAG_AN, | ||
241 | SIL24_COMMON_LFLAGS = ATA_LFLAG_SKIP_D2H_BSY, | 242 | SIL24_COMMON_LFLAGS = ATA_LFLAG_SKIP_D2H_BSY, |
242 | SIL24_FLAG_PCIX_IRQ_WOC = (1 << 24), /* IRQ loss errata on PCI-X */ | 243 | SIL24_FLAG_PCIX_IRQ_WOC = (1 << 24), /* IRQ loss errata on PCI-X */ |
243 | 244 | ||
@@ -818,6 +819,14 @@ static void sil24_error_intr(struct ata_port *ap) | |||
818 | 819 | ||
819 | ata_ehi_push_desc(ehi, "irq_stat 0x%08x", irq_stat); | 820 | ata_ehi_push_desc(ehi, "irq_stat 0x%08x", irq_stat); |
820 | 821 | ||
822 | if (irq_stat & PORT_IRQ_SDB_NOTIFY) { | ||
823 | struct ata_device *dev = ap->link.device; | ||
824 | |||
825 | ata_ehi_push_desc(ehi, "SDB notify"); | ||
826 | if (dev->flags & ATA_DFLAG_AN) | ||
827 | ata_scsi_media_change_notify(dev); | ||
828 | } | ||
829 | |||
821 | if (irq_stat & (PORT_IRQ_PHYRDY_CHG | PORT_IRQ_DEV_XCHG)) { | 830 | if (irq_stat & (PORT_IRQ_PHYRDY_CHG | PORT_IRQ_DEV_XCHG)) { |
822 | ata_ehi_hotplugged(ehi); | 831 | ata_ehi_hotplugged(ehi); |
823 | ata_ehi_push_desc(ehi, "%s", | 832 | ata_ehi_push_desc(ehi, "%s", |