aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/IPMI.txt18
-rw-r--r--drivers/char/ipmi/ipmi_si_intf.c38
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
359Each of these except si_trydefaults is a list, the first item for the 361Each of these except try... items is a list, the first item for the
360first interface, second item for the second interface, etc. 362first interface, second item for the second interface, etc.
361 363
362The si_type may be either "kcs", "smic", or "bt". If you leave it blank, it 364The si_type may be either "kcs", "smic", or "bt". If you leave it blank, it
363defaults to "kcs". 365defaults to "kcs".
364 366
365If you specify si_addrs as non-zero for an interface, the driver will 367If you specify addrs as non-zero for an interface, the driver will
366use the memory address given as the address of the device. This 368use the memory address given as the address of the device. This
367overrides si_ports. 369overrides si_ports.
368 370
369If you specify si_ports as non-zero for an interface, the driver will 371If you specify ports as non-zero for an interface, the driver will
370use the I/O port given as the device address. 372use the I/O port given as the device address.
371 373
372If you specify si_irqs as non-zero for an interface, the driver will 374If you specify irqs as non-zero for an interface, the driver will
373attempt to use the given interrupt for the device. 375attempt to use the given interrupt for the device.
374 376
375si_trydefaults sets whether the standard IPMI interface at 0xca2 and 377trydefaults sets whether the standard IPMI interface at 0xca2 and
376any interfaces specified by ACPE are tried. By default, the driver 378any interfaces specified by ACPE are tried. By default, the driver
377tries it, set this value to zero to turn this off. 379tries it, set this value to zero to turn this off.
378 380
381The other try... items disable discovery by their corresponding
382names. These are all enabled by default, set them to zero to disable
383them. The tryplatform disables openfirmware.
384
379The next three parameters have to do with register layout. The 385The next three parameters have to do with register layout. The
380registers used by the interfaces may not appear at successive 386registers used by the interfaces may not appear at successive
381locations and they may not be in 8-bit registers. These parameters 387locations 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
1215static bool si_trydmi = 1; 1215static bool si_trydmi = 1;
1216#endif 1216#endif
1217static bool si_tryplatform = 1;
1218#ifdef CONFIG_PCI
1219static bool si_trypci = 1;
1220#endif
1217static bool si_trydefaults = 1; 1221static bool si_trydefaults = 1;
1218static char *si_type[SI_MAX_PARMS]; 1222static 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);
1254MODULE_PARM_DESC(trydmi, "Setting this to zero will disable the" 1258MODULE_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
1261module_param_named(tryplatform, si_tryplatform, bool, 0);
1262MODULE_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
1266module_param_named(trypci, si_trypci, bool, 0);
1267MODULE_PARM_DESC(tryacpi, "Setting this to zero will disable the"
1268 " default scan of the interfaces identified via pci");
1269#endif
1257module_param_named(trydefaults, si_trydefaults, bool, 0); 1270module_param_named(trydefaults, si_trydefaults, bool, 0);
1258MODULE_PARM_DESC(trydefaults, "Setting this to 'false' will disable the" 1271MODULE_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