diff options
Diffstat (limited to 'drivers/ata/pata_legacy.c')
-rw-r--r-- | drivers/ata/pata_legacy.c | 14 |
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 = { | |||
787 | static struct ata_port_operations qdi6580dp_port_ops = { | 794 | static 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 | ||