diff options
Diffstat (limited to 'drivers/ata/sata_sil.c')
-rw-r--r-- | drivers/ata/sata_sil.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/ata/sata_sil.c b/drivers/ata/sata_sil.c index ca8d99312472..7808d0369d91 100644 --- a/drivers/ata/sata_sil.c +++ b/drivers/ata/sata_sil.c | |||
@@ -356,6 +356,7 @@ static void sil_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val) | |||
356 | 356 | ||
357 | static void sil_host_intr(struct ata_port *ap, u32 bmdma2) | 357 | static void sil_host_intr(struct ata_port *ap, u32 bmdma2) |
358 | { | 358 | { |
359 | struct ata_eh_info *ehi = &ap->eh_info; | ||
359 | struct ata_queued_cmd *qc = ata_qc_from_tag(ap, ap->active_tag); | 360 | struct ata_queued_cmd *qc = ata_qc_from_tag(ap, ap->active_tag); |
360 | u8 status; | 361 | u8 status; |
361 | 362 | ||
@@ -428,6 +429,10 @@ static void sil_host_intr(struct ata_port *ap, u32 bmdma2) | |||
428 | /* kick HSM in the ass */ | 429 | /* kick HSM in the ass */ |
429 | ata_hsm_move(ap, qc, status, 0); | 430 | ata_hsm_move(ap, qc, status, 0); |
430 | 431 | ||
432 | if (unlikely(qc->err_mask) && (qc->tf.protocol == ATA_PROT_DMA || | ||
433 | qc->tf.protocol == ATA_PROT_ATAPI_DMA)) | ||
434 | ata_ehi_push_desc(ehi, "BMDMA2 stat 0x%x", bmdma2); | ||
435 | |||
431 | return; | 436 | return; |
432 | 437 | ||
433 | err_hsm: | 438 | err_hsm: |
@@ -534,6 +539,7 @@ static void sil_thaw(struct ata_port *ap) | |||
534 | */ | 539 | */ |
535 | static void sil_dev_config(struct ata_port *ap, struct ata_device *dev) | 540 | static void sil_dev_config(struct ata_port *ap, struct ata_device *dev) |
536 | { | 541 | { |
542 | int print_info = ap->eh_context.i.flags & ATA_EHI_PRINTINFO; | ||
537 | unsigned int n, quirks = 0; | 543 | unsigned int n, quirks = 0; |
538 | unsigned char model_num[41]; | 544 | unsigned char model_num[41]; |
539 | 545 | ||
@@ -549,16 +555,18 @@ static void sil_dev_config(struct ata_port *ap, struct ata_device *dev) | |||
549 | if (slow_down || | 555 | if (slow_down || |
550 | ((ap->flags & SIL_FLAG_MOD15WRITE) && | 556 | ((ap->flags & SIL_FLAG_MOD15WRITE) && |
551 | (quirks & SIL_QUIRK_MOD15WRITE))) { | 557 | (quirks & SIL_QUIRK_MOD15WRITE))) { |
552 | ata_dev_printk(dev, KERN_INFO, "applying Seagate errata fix " | 558 | if (print_info) |
553 | "(mod15write workaround)\n"); | 559 | ata_dev_printk(dev, KERN_INFO, "applying Seagate " |
560 | "errata fix (mod15write workaround)\n"); | ||
554 | dev->max_sectors = 15; | 561 | dev->max_sectors = 15; |
555 | return; | 562 | return; |
556 | } | 563 | } |
557 | 564 | ||
558 | /* limit to udma5 */ | 565 | /* limit to udma5 */ |
559 | if (quirks & SIL_QUIRK_UDMA5MAX) { | 566 | if (quirks & SIL_QUIRK_UDMA5MAX) { |
560 | ata_dev_printk(dev, KERN_INFO, | 567 | if (print_info) |
561 | "applying Maxtor errata fix %s\n", model_num); | 568 | ata_dev_printk(dev, KERN_INFO, "applying Maxtor " |
569 | "errata fix %s\n", model_num); | ||
562 | dev->udma_mask &= ATA_UDMA5; | 570 | dev->udma_mask &= ATA_UDMA5; |
563 | return; | 571 | return; |
564 | } | 572 | } |