aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/libata-sff.c
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2007-03-09 10:54:42 -0500
committerJeff Garzik <jeff@garzik.org>2007-04-28 14:15:59 -0400
commit8cdfb29c0cd8018f92214c11c631d8926f4cb032 (patch)
treed4a74d25c301e4c045ca21c45dbcbeadde234548 /drivers/ata/libata-sff.c
parente424675f152572d8d2365e351b90bfd81686a150 (diff)
libata/IDE: remove combined mode quirk
Both old-IDE and libata should be able handle all controllers and devices found using normal resource reservation methods. This eliminates the awful, low-performing split-driver configuration where old-IDE drove the PATA portion of a PCI device, in PIO-only mode, and libata drove the SATA portion of the /same/ PCI device, in DMA mode. Typically vendors would ship SATA hard drive / PATA optical configuration, which would lend itself to slow (PIO-only) CD-ROM performance. For Intel users running in combined mode, it is now wholly dependent on your driver choice (potentially link order, if you compile both drivers in) whether old-IDE or libata will drive your hardware. In either case, you will get full performance from both SATA and PATA ports now, without having to pass a kernel command line parameter. Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata/libata-sff.c')
-rw-r--r--drivers/ata/libata-sff.c36
1 files changed, 6 insertions, 30 deletions
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 066689c5e509..0a194660fd21 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -779,40 +779,16 @@ int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_info,
779 /* Deal with combined mode hack. This side of the logic all 779 /* Deal with combined mode hack. This side of the logic all
780 goes away once the combined mode hack is killed in 2.6.21 */ 780 goes away once the combined mode hack is killed in 2.6.21 */
781 if (!devm_request_region(dev, ATA_PRIMARY_CMD, 8, "libata")) { 781 if (!devm_request_region(dev, ATA_PRIMARY_CMD, 8, "libata")) {
782 struct resource *conflict, res; 782 pcim_pin_device(pdev);
783 res.start = ATA_PRIMARY_CMD; 783 printk(KERN_WARNING "ata: 0x%0X IDE port busy\n",
784 res.end = ATA_PRIMARY_CMD + 8 - 1; 784 ATA_PRIMARY_CMD);
785 conflict = ____request_resource(&ioport_resource, &res);
786 while (conflict->child)
787 conflict = ____request_resource(conflict, &res);
788 if (!strcmp(conflict->name, "libata"))
789 legacy_mode |= ATA_PORT_PRIMARY;
790 else {
791 pcim_pin_device(pdev);
792 printk(KERN_WARNING "ata: 0x%0X IDE port busy\n" \
793 "ata: conflict with %s\n",
794 ATA_PRIMARY_CMD,
795 conflict->name);
796 }
797 } else 785 } else
798 legacy_mode |= ATA_PORT_PRIMARY; 786 legacy_mode |= ATA_PORT_PRIMARY;
799 787
800 if (!devm_request_region(dev, ATA_SECONDARY_CMD, 8, "libata")) { 788 if (!devm_request_region(dev, ATA_SECONDARY_CMD, 8, "libata")) {
801 struct resource *conflict, res; 789 pcim_pin_device(pdev);
802 res.start = ATA_SECONDARY_CMD; 790 printk(KERN_WARNING "ata: 0x%X IDE port busy\n",
803 res.end = ATA_SECONDARY_CMD + 8 - 1; 791 ATA_SECONDARY_CMD);
804 conflict = ____request_resource(&ioport_resource, &res);
805 while (conflict->child)
806 conflict = ____request_resource(conflict, &res);
807 if (!strcmp(conflict->name, "libata"))
808 legacy_mode |= ATA_PORT_SECONDARY;
809 else {
810 pcim_pin_device(pdev);
811 printk(KERN_WARNING "ata: 0x%X IDE port busy\n" \
812 "ata: conflict with %s\n",
813 ATA_SECONDARY_CMD,
814 conflict->name);
815 }
816 } else 792 } else
817 legacy_mode |= ATA_PORT_SECONDARY; 793 legacy_mode |= ATA_PORT_SECONDARY;
818 794