aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2007-05-09 18:01:11 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2007-05-09 18:01:11 -0400
commit6d208b39c45edee5def6c201fcd51561c5a39828 (patch)
tree55645d2b6173e3161d12e5c9efdc4bd052b75b56 /drivers/ide
parent5cbf79cdb37be2aa2a1b4fa94144526b14557060 (diff)
ide: legacy PCI bus order probing fixes
IDE PCI host drivers should register themselves with IDE core only when IDE driver is built-in, otherwise (IDE driver is modular and thus IDE PCI host drivers are also modular) the code has no effect and just complicates the probing. Fix it by adding new config option CONFIG_IDEPCI_PCIBUS (defined only when needed and invisible to the user) and covering by #ifdef/#endif the code in question. It turned out that "ide=reverse" was silently accepted but did nothing in case when IDE driver was modular, this is fixed now. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide')
-rw-r--r--drivers/ide/Kconfig3
-rw-r--r--drivers/ide/ide.c10
-rw-r--r--drivers/ide/setup-pci.c2
3 files changed, 10 insertions, 5 deletions
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig
index a678bbecb48..1d06b415ede 100644
--- a/drivers/ide/Kconfig
+++ b/drivers/ide/Kconfig
@@ -371,6 +371,9 @@ config IDEPCI_SHARE_IRQ
371 It is safe to say Y to this question, in most cases. 371 It is safe to say Y to this question, in most cases.
372 If unsure, say N. 372 If unsure, say N.
373 373
374config IDEPCI_PCIBUS_ORDER
375 def_bool PCI && BLK_DEV_IDE=y && BLK_DEV_IDEPCI
376
374config BLK_DEV_OFFBOARD 377config BLK_DEV_OFFBOARD
375 bool "Boot off-board chipsets first support" 378 bool "Boot off-board chipsets first support"
376 depends on PCI && BLK_DEV_IDEPCI 379 depends on PCI && BLK_DEV_IDEPCI
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c
index 038f2610e73..f2b547ff772 100644
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -172,7 +172,7 @@ static int system_bus_speed; /* holds what we think is VESA/PCI bus speed */
172DECLARE_MUTEX(ide_cfg_sem); 172DECLARE_MUTEX(ide_cfg_sem);
173 __cacheline_aligned_in_smp DEFINE_SPINLOCK(ide_lock); 173 __cacheline_aligned_in_smp DEFINE_SPINLOCK(ide_lock);
174 174
175#ifdef CONFIG_BLK_DEV_IDEPCI 175#ifdef CONFIG_IDEPCI_PCIBUS_ORDER
176static int ide_scan_direction; /* THIS was formerly 2.2.x pci=reverse */ 176static int ide_scan_direction; /* THIS was formerly 2.2.x pci=reverse */
177#endif 177#endif
178 178
@@ -1333,13 +1333,13 @@ static int __init ide_setup(char *s)
1333 return 1; 1333 return 1;
1334 } 1334 }
1335 1335
1336#ifdef CONFIG_BLK_DEV_IDEPCI 1336#ifdef CONFIG_IDEPCI_PCIBUS_ORDER
1337 if (!strcmp(s, "ide=reverse")) { 1337 if (!strcmp(s, "ide=reverse")) {
1338 ide_scan_direction = 1; 1338 ide_scan_direction = 1;
1339 printk(" : Enabled support for IDE inverse scan order.\n"); 1339 printk(" : Enabled support for IDE inverse scan order.\n");
1340 return 1; 1340 return 1;
1341 } 1341 }
1342#endif /* CONFIG_BLK_DEV_IDEPCI */ 1342#endif
1343 1343
1344#ifdef CONFIG_BLK_DEV_IDEACPI 1344#ifdef CONFIG_BLK_DEV_IDEACPI
1345 if (!strcmp(s, "ide=noacpi")) { 1345 if (!strcmp(s, "ide=noacpi")) {
@@ -1599,9 +1599,9 @@ extern void __init h8300_ide_init(void);
1599 */ 1599 */
1600static void __init probe_for_hwifs (void) 1600static void __init probe_for_hwifs (void)
1601{ 1601{
1602#ifdef CONFIG_BLK_DEV_IDEPCI 1602#ifdef CONFIG_IDEPCI_PCIBUS_ORDER
1603 ide_scan_pcibus(ide_scan_direction); 1603 ide_scan_pcibus(ide_scan_direction);
1604#endif /* CONFIG_BLK_DEV_IDEPCI */ 1604#endif
1605 1605
1606#ifdef CONFIG_ETRAX_IDE 1606#ifdef CONFIG_ETRAX_IDE
1607 { 1607 {
diff --git a/drivers/ide/setup-pci.c b/drivers/ide/setup-pci.c
index 892cda75578..67035ba4bf5 100644
--- a/drivers/ide/setup-pci.c
+++ b/drivers/ide/setup-pci.c
@@ -772,6 +772,7 @@ out:
772 772
773EXPORT_SYMBOL_GPL(ide_setup_pci_devices); 773EXPORT_SYMBOL_GPL(ide_setup_pci_devices);
774 774
775#ifdef CONFIG_IDEPCI_PCIBUS_ORDER
775/* 776/*
776 * Module interfaces 777 * Module interfaces
777 */ 778 */
@@ -878,3 +879,4 @@ void __init ide_scan_pcibus (int scan_direction)
878 __pci_register_driver(d, d->driver.owner, d->driver.mod_name); 879 __pci_register_driver(d, d->driver.owner, d->driver.mod_name);
879 } 880 }
880} 881}
882#endif