aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/kernel-parameters.txt8
-rw-r--r--drivers/pci/quirks.c30
2 files changed, 38 insertions, 0 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 5dffcfefc3c7..61a56b100c62 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -633,6 +633,14 @@ running once the system is up.
633 inport.irq= [HW] Inport (ATI XL and Microsoft) busmouse driver 633 inport.irq= [HW] Inport (ATI XL and Microsoft) busmouse driver
634 Format: <irq> 634 Format: <irq>
635 635
636 combined_mode= [HW] control which driver uses IDE ports in combined
637 mode: legacy IDE driver, libata, or both
638 (in the libata case, libata.atapi_enabled=1 may be
639 useful as well). Note that using the ide or libata
640 options may affect your device naming (e.g. by
641 changing hdc to sdb).
642 Format: combined (default), ide, or libata
643
636 inttest= [IA64] 644 inttest= [IA64]
637 645
638 io7= [HW] IO7 for Marvel based alpha systems 646 io7= [HW] IO7 for Marvel based alpha systems
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 3a4f49f4effb..f28ebdd3958a 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1098,6 +1098,23 @@ static void __init quirk_alder_ioapic(struct pci_dev *pdev)
1098DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EESSC, quirk_alder_ioapic ); 1098DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EESSC, quirk_alder_ioapic );
1099#endif 1099#endif
1100 1100
1101enum ide_combined_type { COMBINED = 0, IDE = 1, LIBATA = 2 };
1102/* Defaults to combined */
1103static enum ide_combined_type combined_mode;
1104
1105static int __init combined_setup(char *str)
1106{
1107 if (!strncmp(str, "ide", 3))
1108 combined_mode = IDE;
1109 else if (!strncmp(str, "libata", 6))
1110 combined_mode = LIBATA;
1111 else /* "combined" or anything else defaults to old behavior */
1112 combined_mode = COMBINED;
1113
1114 return 1;
1115}
1116__setup("combined_mode=", combined_setup);
1117
1101#ifdef CONFIG_SCSI_SATA_INTEL_COMBINED 1118#ifdef CONFIG_SCSI_SATA_INTEL_COMBINED
1102static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev) 1119static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev)
1103{ 1120{
@@ -1164,6 +1181,19 @@ static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev)
1164 if (prog & comb) 1181 if (prog & comb)
1165 return; 1182 return;
1166 1183
1184 /* Don't reserve any so the IDE driver can get them (but only if
1185 * combined_mode=ide).
1186 */
1187 if (combined_mode == IDE)
1188 return;
1189
1190 /* Grab them both for libata if combined_mode=libata. */
1191 if (combined_mode == LIBATA) {
1192 request_region(0x1f0, 8, "libata"); /* port 0 */
1193 request_region(0x170, 8, "libata"); /* port 1 */
1194 return;
1195 }
1196
1167 /* SATA port is in legacy mode. Reserve port so that 1197 /* SATA port is in legacy mode. Reserve port so that
1168 * IDE driver does not attempt to use it. If request_region 1198 * IDE driver does not attempt to use it. If request_region
1169 * fails, it will be obvious at boot time, so we don't bother 1199 * fails, it will be obvious at boot time, so we don't bother