aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/sata_sil24.c
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2007-09-23 00:14:11 -0400
committerJeff Garzik <jeff@garzik.org>2007-10-12 14:55:40 -0400
commit854c73a2f1c3bcc4aa88c25e208dc597e8efb795 (patch)
tree210569f3c4fa4f9413ceb0bc3fcf89648a9894b2 /drivers/ata/sata_sil24.c
parentc78968bb0f7714ceba1cdfa23714454fc98cefdf (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.c13
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",