aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/legacy
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2007-03-03 11:48:55 -0500
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2007-03-03 11:48:55 -0500
commit849138827c962589ac50496fa7feeb2a2d51b467 (patch)
tree3b7988c756068f00ccf8a1440a0f3709a241bcad /drivers/ide/legacy
parentb6209a90eca8c9a464bf9c5b91741fb125185619 (diff)
ide: make legacy IDE VLB modules check for the "probe" kernel params (v2)
Legacy IDE VLB host drivers didn't check for "probe" options when compiled as modules, which was obviously wrong as we don't want module to poke at random I/O ports by simply loading it. Fix it by adding "probe" module param to legacy IDE VLB host drivers. v2: * don't obsolete old "ide0=dtc2278/ht6560b/qd65xx/ali14xx/umc8672" IDE driver options yet (per Alan Cox's request) and enhance documentation Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/legacy')
-rw-r--r--drivers/ide/legacy/ali14xx.c9
-rw-r--r--drivers/ide/legacy/dtc2278.c12
-rw-r--r--drivers/ide/legacy/ht6560b.c8
-rw-r--r--drivers/ide/legacy/qd65xx.c8
-rw-r--r--drivers/ide/legacy/umc8672.c15
5 files changed, 47 insertions, 5 deletions
diff --git a/drivers/ide/legacy/ali14xx.c b/drivers/ide/legacy/ali14xx.c
index f9f5b8d54d6d..91961aa03047 100644
--- a/drivers/ide/legacy/ali14xx.c
+++ b/drivers/ide/legacy/ali14xx.c
@@ -228,9 +228,17 @@ static int __init ali14xx_probe(void)
228 return 0; 228 return 0;
229} 229}
230 230
231int probe_ali14xx = 0;
232
233module_param_named(probe, probe_ali14xx, bool, 0);
234MODULE_PARM_DESC(probe, "probe for ALI M14xx chipsets");
235
231/* Can be called directly from ide.c. */ 236/* Can be called directly from ide.c. */
232int __init ali14xx_init(void) 237int __init ali14xx_init(void)
233{ 238{
239 if (probe_ali14xx == 0)
240 goto out;
241
234 /* auto-detect IDE controller port */ 242 /* auto-detect IDE controller port */
235 if (findPort()) { 243 if (findPort()) {
236 if (ali14xx_probe()) 244 if (ali14xx_probe())
@@ -238,6 +246,7 @@ int __init ali14xx_init(void)
238 return 0; 246 return 0;
239 } 247 }
240 printk(KERN_ERR "ali14xx: not found.\n"); 248 printk(KERN_ERR "ali14xx: not found.\n");
249out:
241 return -ENODEV; 250 return -ENODEV;
242} 251}
243 252
diff --git a/drivers/ide/legacy/dtc2278.c b/drivers/ide/legacy/dtc2278.c
index f2903b6e43c0..0219ffa64db6 100644
--- a/drivers/ide/legacy/dtc2278.c
+++ b/drivers/ide/legacy/dtc2278.c
@@ -92,7 +92,7 @@ static void tune_dtc2278 (ide_drive_t *drive, u8 pio)
92 HWIF(drive)->drives[!drive->select.b.unit].io_32bit = 1; 92 HWIF(drive)->drives[!drive->select.b.unit].io_32bit = 1;
93} 93}
94 94
95static int __init probe_dtc2278(void) 95static int __init dtc2278_probe(void)
96{ 96{
97 unsigned long flags; 97 unsigned long flags;
98 ide_hwif_t *hwif, *mate; 98 ide_hwif_t *hwif, *mate;
@@ -143,10 +143,18 @@ static int __init probe_dtc2278(void)
143 return 0; 143 return 0;
144} 144}
145 145
146int probe_dtc2278 = 0;
147
148module_param_named(probe, probe_dtc2278, bool, 0);
149MODULE_PARM_DESC(probe, "probe for DTC2278xx chipsets");
150
146/* Can be called directly from ide.c. */ 151/* Can be called directly from ide.c. */
147int __init dtc2278_init(void) 152int __init dtc2278_init(void)
148{ 153{
149 if (probe_dtc2278()) { 154 if (probe_dtc2278 == 0)
155 return -ENODEV;
156
157 if (dtc2278_probe()) {
150 printk(KERN_ERR "dtc2278: ide interfaces already in use!\n"); 158 printk(KERN_ERR "dtc2278: ide interfaces already in use!\n");
151 return -EBUSY; 159 return -EBUSY;
152 } 160 }
diff --git a/drivers/ide/legacy/ht6560b.c b/drivers/ide/legacy/ht6560b.c
index 02d5e20791e3..a2832643c522 100644
--- a/drivers/ide/legacy/ht6560b.c
+++ b/drivers/ide/legacy/ht6560b.c
@@ -301,12 +301,20 @@ static void tune_ht6560b (ide_drive_t *drive, u8 pio)
301#endif 301#endif
302} 302}
303 303
304int probe_ht6560b = 0;
305
306module_param_named(probe, probe_ht6560b, bool, 0);
307MODULE_PARM_DESC(probe, "probe for HT6560B chipset");
308
304/* Can be called directly from ide.c. */ 309/* Can be called directly from ide.c. */
305int __init ht6560b_init(void) 310int __init ht6560b_init(void)
306{ 311{
307 ide_hwif_t *hwif, *mate; 312 ide_hwif_t *hwif, *mate;
308 int t; 313 int t;
309 314
315 if (probe_ht6560b == 0)
316 return -ENODEV;
317
310 hwif = &ide_hwifs[0]; 318 hwif = &ide_hwifs[0];
311 mate = &ide_hwifs[1]; 319 mate = &ide_hwifs[1];
312 320
diff --git a/drivers/ide/legacy/qd65xx.c b/drivers/ide/legacy/qd65xx.c
index ab482c85e415..2fb8f50f1293 100644
--- a/drivers/ide/legacy/qd65xx.c
+++ b/drivers/ide/legacy/qd65xx.c
@@ -488,9 +488,17 @@ static int __init qd_probe(int base)
488 return 1; 488 return 1;
489} 489}
490 490
491int probe_qd65xx = 0;
492
493module_param_named(probe, probe_qd65xx, bool, 0);
494MODULE_PARM_DESC(probe, "probe for QD65xx chipsets");
495
491/* Can be called directly from ide.c. */ 496/* Can be called directly from ide.c. */
492int __init qd65xx_init(void) 497int __init qd65xx_init(void)
493{ 498{
499 if (probe_qd65xx == 0)
500 return -ENODEV;
501
494 if (qd_probe(0x30)) 502 if (qd_probe(0x30))
495 qd_probe(0xb0); 503 qd_probe(0xb0);
496 if (ide_hwifs[0].chipset != ide_qd65xx && 504 if (ide_hwifs[0].chipset != ide_qd65xx &&
diff --git a/drivers/ide/legacy/umc8672.c b/drivers/ide/legacy/umc8672.c
index 6e2c58c5f6a2..ca7974455578 100644
--- a/drivers/ide/legacy/umc8672.c
+++ b/drivers/ide/legacy/umc8672.c
@@ -165,12 +165,21 @@ static int __init umc8672_probe(void)
165 return 0; 165 return 0;
166} 166}
167 167
168int probe_umc8672 = 0;
169
170module_param_named(probe, probe_umc8672, bool, 0);
171MODULE_PARM_DESC(probe, "probe for UMC8672 chipset");
172
168/* Can be called directly from ide.c. */ 173/* Can be called directly from ide.c. */
169int __init umc8672_init(void) 174int __init umc8672_init(void)
170{ 175{
171 if (umc8672_probe()) 176 if (probe_umc8672 == 0)
172 return -ENODEV; 177 goto out;
173 return 0; 178
179 if (umc8672_probe() == 0)
180 return 0;;
181out:
182 return -ENODEV;;
174} 183}
175 184
176#ifdef MODULE 185#ifdef MODULE