diff options
-rw-r--r-- | Documentation/IPMI.txt | 18 | ||||
-rw-r--r-- | drivers/char/ipmi/ipmi_si_intf.c | 38 |
2 files changed, 40 insertions, 16 deletions
diff --git a/Documentation/IPMI.txt b/Documentation/IPMI.txt index 16eb4c9e9233..f13c9132e9f2 100644 --- a/Documentation/IPMI.txt +++ b/Documentation/IPMI.txt | |||
@@ -348,34 +348,40 @@ You can change this at module load time (for a module) with: | |||
348 | 348 | ||
349 | modprobe ipmi_si.o type=<type1>,<type2>.... | 349 | modprobe ipmi_si.o type=<type1>,<type2>.... |
350 | ports=<port1>,<port2>... addrs=<addr1>,<addr2>... | 350 | ports=<port1>,<port2>... addrs=<addr1>,<addr2>... |
351 | irqs=<irq1>,<irq2>... trydefaults=[0|1] | 351 | irqs=<irq1>,<irq2>... |
352 | regspacings=<sp1>,<sp2>,... regsizes=<size1>,<size2>,... | 352 | regspacings=<sp1>,<sp2>,... regsizes=<size1>,<size2>,... |
353 | regshifts=<shift1>,<shift2>,... | 353 | regshifts=<shift1>,<shift2>,... |
354 | slave_addrs=<addr1>,<addr2>,... | 354 | slave_addrs=<addr1>,<addr2>,... |
355 | force_kipmid=<enable1>,<enable2>,... | 355 | force_kipmid=<enable1>,<enable2>,... |
356 | kipmid_max_busy_us=<ustime1>,<ustime2>,... | 356 | kipmid_max_busy_us=<ustime1>,<ustime2>,... |
357 | unload_when_empty=[0|1] | 357 | unload_when_empty=[0|1] |
358 | trydefaults=[0|1] trydmi=[0|1] tryacpi=[0|1] | ||
359 | tryplatform=[0|1] trypci=[0|1] | ||
358 | 360 | ||
359 | Each of these except si_trydefaults is a list, the first item for the | 361 | Each of these except try... items is a list, the first item for the |
360 | first interface, second item for the second interface, etc. | 362 | first interface, second item for the second interface, etc. |
361 | 363 | ||
362 | The si_type may be either "kcs", "smic", or "bt". If you leave it blank, it | 364 | The si_type may be either "kcs", "smic", or "bt". If you leave it blank, it |
363 | defaults to "kcs". | 365 | defaults to "kcs". |
364 | 366 | ||
365 | If you specify si_addrs as non-zero for an interface, the driver will | 367 | If you specify addrs as non-zero for an interface, the driver will |
366 | use the memory address given as the address of the device. This | 368 | use the memory address given as the address of the device. This |
367 | overrides si_ports. | 369 | overrides si_ports. |
368 | 370 | ||
369 | If you specify si_ports as non-zero for an interface, the driver will | 371 | If you specify ports as non-zero for an interface, the driver will |
370 | use the I/O port given as the device address. | 372 | use the I/O port given as the device address. |
371 | 373 | ||
372 | If you specify si_irqs as non-zero for an interface, the driver will | 374 | If you specify irqs as non-zero for an interface, the driver will |
373 | attempt to use the given interrupt for the device. | 375 | attempt to use the given interrupt for the device. |
374 | 376 | ||
375 | si_trydefaults sets whether the standard IPMI interface at 0xca2 and | 377 | trydefaults sets whether the standard IPMI interface at 0xca2 and |
376 | any interfaces specified by ACPE are tried. By default, the driver | 378 | any interfaces specified by ACPE are tried. By default, the driver |
377 | tries it, set this value to zero to turn this off. | 379 | tries it, set this value to zero to turn this off. |
378 | 380 | ||
381 | The other try... items disable discovery by their corresponding | ||
382 | names. These are all enabled by default, set them to zero to disable | ||
383 | them. The tryplatform disables openfirmware. | ||
384 | |||
379 | The next three parameters have to do with register layout. The | 385 | The next three parameters have to do with register layout. The |
380 | registers used by the interfaces may not appear at successive | 386 | registers used by the interfaces may not appear at successive |
381 | locations and they may not be in 8-bit registers. These parameters | 387 | locations and they may not be in 8-bit registers. These parameters |
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c index a58beddb4821..0ac9b45a585e 100644 --- a/drivers/char/ipmi/ipmi_si_intf.c +++ b/drivers/char/ipmi/ipmi_si_intf.c | |||
@@ -1214,6 +1214,10 @@ static bool si_tryacpi = 1; | |||
1214 | #ifdef CONFIG_DMI | 1214 | #ifdef CONFIG_DMI |
1215 | static bool si_trydmi = 1; | 1215 | static bool si_trydmi = 1; |
1216 | #endif | 1216 | #endif |
1217 | static bool si_tryplatform = 1; | ||
1218 | #ifdef CONFIG_PCI | ||
1219 | static bool si_trypci = 1; | ||
1220 | #endif | ||
1217 | static bool si_trydefaults = 1; | 1221 | static bool si_trydefaults = 1; |
1218 | static char *si_type[SI_MAX_PARMS]; | 1222 | static char *si_type[SI_MAX_PARMS]; |
1219 | #define MAX_SI_TYPE_STR 30 | 1223 | #define MAX_SI_TYPE_STR 30 |
@@ -1254,6 +1258,15 @@ module_param_named(trydmi, si_trydmi, bool, 0); | |||
1254 | MODULE_PARM_DESC(trydmi, "Setting this to zero will disable the" | 1258 | MODULE_PARM_DESC(trydmi, "Setting this to zero will disable the" |
1255 | " default scan of the interfaces identified via DMI"); | 1259 | " default scan of the interfaces identified via DMI"); |
1256 | #endif | 1260 | #endif |
1261 | module_param_named(tryplatform, si_tryplatform, bool, 0); | ||
1262 | MODULE_PARM_DESC(tryacpi, "Setting this to zero will disable the" | ||
1263 | " default scan of the interfaces identified via platform" | ||
1264 | " interfaces like openfirmware"); | ||
1265 | #ifdef CONFIG_PCI | ||
1266 | module_param_named(trypci, si_trypci, bool, 0); | ||
1267 | MODULE_PARM_DESC(tryacpi, "Setting this to zero will disable the" | ||
1268 | " default scan of the interfaces identified via pci"); | ||
1269 | #endif | ||
1257 | module_param_named(trydefaults, si_trydefaults, bool, 0); | 1270 | module_param_named(trydefaults, si_trydefaults, bool, 0); |
1258 | MODULE_PARM_DESC(trydefaults, "Setting this to 'false' will disable the" | 1271 | MODULE_PARM_DESC(trydefaults, "Setting this to 'false' will disable the" |
1259 | " default scan of the KCS and SMIC interface at the standard" | 1272 | " default scan of the KCS and SMIC interface at the standard" |
@@ -3387,13 +3400,15 @@ static int init_ipmi_si(void) | |||
3387 | return 0; | 3400 | return 0; |
3388 | initialized = 1; | 3401 | initialized = 1; |
3389 | 3402 | ||
3390 | rv = platform_driver_register(&ipmi_driver); | 3403 | if (si_tryplatform) { |
3391 | if (rv) { | 3404 | rv = platform_driver_register(&ipmi_driver); |
3392 | printk(KERN_ERR PFX "Unable to register driver: %d\n", rv); | 3405 | if (rv) { |
3393 | return rv; | 3406 | printk(KERN_ERR PFX "Unable to register " |
3407 | "driver: %d\n", rv); | ||
3408 | return rv; | ||
3409 | } | ||
3394 | } | 3410 | } |
3395 | 3411 | ||
3396 | |||
3397 | /* Parse out the si_type string into its components. */ | 3412 | /* Parse out the si_type string into its components. */ |
3398 | str = si_type_str; | 3413 | str = si_type_str; |
3399 | if (*str != '\0') { | 3414 | if (*str != '\0') { |
@@ -3416,11 +3431,14 @@ static int init_ipmi_si(void) | |||
3416 | return 0; | 3431 | return 0; |
3417 | 3432 | ||
3418 | #ifdef CONFIG_PCI | 3433 | #ifdef CONFIG_PCI |
3419 | rv = pci_register_driver(&ipmi_pci_driver); | 3434 | if (si_trypci) { |
3420 | if (rv) | 3435 | rv = pci_register_driver(&ipmi_pci_driver); |
3421 | printk(KERN_ERR PFX "Unable to register PCI driver: %d\n", rv); | 3436 | if (rv) |
3422 | else | 3437 | printk(KERN_ERR PFX "Unable to register " |
3423 | pci_registered = 1; | 3438 | "PCI driver: %d\n", rv); |
3439 | else | ||
3440 | pci_registered = 1; | ||
3441 | } | ||
3424 | #endif | 3442 | #endif |
3425 | 3443 | ||
3426 | #ifdef CONFIG_ACPI | 3444 | #ifdef CONFIG_ACPI |