aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/pata_legacy.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ata/pata_legacy.c')
-rw-r--r--drivers/ata/pata_legacy.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.c
index 6932e56d179c..9df1ff7e1eaa 100644
--- a/drivers/ata/pata_legacy.c
+++ b/drivers/ata/pata_legacy.c
@@ -25,6 +25,13 @@
25 * http://www.ryston.cz/petr/vlb/pdc20230b.html 25 * http://www.ryston.cz/petr/vlb/pdc20230b.html
26 * http://www.ryston.cz/petr/vlb/pdc20230c.html 26 * http://www.ryston.cz/petr/vlb/pdc20230c.html
27 * http://www.ryston.cz/petr/vlb/pdc20630.html 27 * http://www.ryston.cz/petr/vlb/pdc20630.html
28 * QDI65x0:
29 * http://www.ryston.cz/petr/vlb/qd6500.html
30 * http://www.ryston.cz/petr/vlb/qd6580.html
31 *
32 * QDI65x0 probe code based on drivers/ide/legacy/qd65xx.c
33 * Rewritten from the work of Colten Edwards <pje120@cs.usask.ca> by
34 * Samuel Thibault <samuel.thibault@ens-lyon.org>
28 * 35 *
29 * Unsupported but docs exist: 36 * Unsupported but docs exist:
30 * Appian/Adaptec AIC25VL01/Cirrus Logic PD7220 37 * Appian/Adaptec AIC25VL01/Cirrus Logic PD7220
@@ -35,7 +42,7 @@
35 * the MPIIX where the tuning is PCI side but the IDE is "ISA side". 42 * the MPIIX where the tuning is PCI side but the IDE is "ISA side".
36 * 43 *
37 * Specific support is included for the ht6560a/ht6560b/opti82c611a/ 44 * Specific support is included for the ht6560a/ht6560b/opti82c611a/
38 * opti82c465mv/promise 20230c/20630/winbond83759A 45 * opti82c465mv/promise 20230c/20630/qdi65x0/winbond83759A
39 * 46 *
40 * Use the autospeed and pio_mask options with: 47 * Use the autospeed and pio_mask options with:
41 * Appian ADI/2 aka CLPD7220 or AIC25VL01. 48 * Appian ADI/2 aka CLPD7220 or AIC25VL01.
@@ -672,7 +679,7 @@ static void qdi6580dp_set_piomode(struct ata_port *ap, struct ata_device *adev)
672 outb(timing, ld_qdi->timing + 2 * ap->port_no); 679 outb(timing, ld_qdi->timing + 2 * ap->port_no);
673 /* Clear the FIFO */ 680 /* Clear the FIFO */
674 if (adev->class != ATA_DEV_ATA) 681 if (adev->class != ATA_DEV_ATA)
675 outb(0x5F, ld_qdi->timing + 3); 682 outb(0x5F, (ld_qdi->timing & 0xFFF0) + 3);
676} 683}
677 684
678/** 685/**
@@ -707,7 +714,7 @@ static void qdi6580_set_piomode(struct ata_port *ap, struct ata_device *adev)
707 outb(timing, ld_qdi->timing + 2 * adev->devno); 714 outb(timing, ld_qdi->timing + 2 * adev->devno);
708 /* Clear the FIFO */ 715 /* Clear the FIFO */
709 if (adev->class != ATA_DEV_ATA) 716 if (adev->class != ATA_DEV_ATA)
710 outb(0x5F, ld_qdi->timing + 3); 717 outb(0x5F, (ld_qdi->timing & 0xFFF0) + 3);
711} 718}
712 719
713/** 720/**
@@ -787,6 +794,7 @@ static struct ata_port_operations qdi6580_port_ops = {
787static struct ata_port_operations qdi6580dp_port_ops = { 794static struct ata_port_operations qdi6580dp_port_ops = {
788 .inherits = &legacy_base_port_ops, 795 .inherits = &legacy_base_port_ops,
789 .set_piomode = qdi6580dp_set_piomode, 796 .set_piomode = qdi6580dp_set_piomode,
797 .qc_issue = qdi_qc_issue,
790 .sff_data_xfer = vlb32_data_xfer, 798 .sff_data_xfer = vlb32_data_xfer,
791}; 799};
792 800