diff options
author | Kristen Accardi <kristen.c.accardi@intel.com> | 2006-02-23 20:56:03 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-03-23 17:35:15 -0500 |
commit | 20416ea54087c25502d6fb973b8e119973e16341 (patch) | |
tree | 47ca50997cbb408852021315ff4da315292467c2 /drivers/pci/hotplug/acpiphp_core.c | |
parent | ceaba663055e38226a070a9668eac5881d65a2cc (diff) |
[PATCH] acpiphp: add dock event handling
These patches add generic dock event handling to acpiphp. If there are
pci devices that need to be inserted/removed after the dock event, the
event notification will be handed down to the normal pci hotplug event
handler in acpiphp so that new bridges/devices can be enumerated.
Because some dock stations do not have pci bridges or pci devices that
need to be inserted after a dock, acpiphp will remain loaded to handle
dock events even if no hotpluggable pci slots are discovered.
You probably need to have the pci=assign-busses kernel parameter enabled
to use these patches, and you may not allow ibm_acpi to handle docking
notifications and use this patch.
This patch incorporates feedback provided by many.
Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/pci/hotplug/acpiphp_core.c')
-rw-r--r-- | drivers/pci/hotplug/acpiphp_core.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/pci/hotplug/acpiphp_core.c b/drivers/pci/hotplug/acpiphp_core.c index 60c4c38047a3..bce71c933478 100644 --- a/drivers/pci/hotplug/acpiphp_core.c +++ b/drivers/pci/hotplug/acpiphp_core.c | |||
@@ -429,14 +429,17 @@ static void __exit cleanup_slots (void) | |||
429 | static int __init acpiphp_init(void) | 429 | static int __init acpiphp_init(void) |
430 | { | 430 | { |
431 | int retval; | 431 | int retval; |
432 | int docking_station; | ||
432 | 433 | ||
433 | info(DRIVER_DESC " version: " DRIVER_VERSION "\n"); | 434 | info(DRIVER_DESC " version: " DRIVER_VERSION "\n"); |
434 | 435 | ||
435 | acpiphp_debug = debug; | 436 | acpiphp_debug = debug; |
436 | 437 | ||
438 | docking_station = find_dock_station(); | ||
439 | |||
437 | /* read all the ACPI info from the system */ | 440 | /* read all the ACPI info from the system */ |
438 | retval = init_acpi(); | 441 | retval = init_acpi(); |
439 | if (retval) | 442 | if (retval && !(docking_station)) |
440 | return retval; | 443 | return retval; |
441 | 444 | ||
442 | return init_slots(); | 445 | return init_slots(); |
@@ -448,6 +451,8 @@ static void __exit acpiphp_exit(void) | |||
448 | cleanup_slots(); | 451 | cleanup_slots(); |
449 | /* deallocate internal data structures etc. */ | 452 | /* deallocate internal data structures etc. */ |
450 | acpiphp_glue_exit(); | 453 | acpiphp_glue_exit(); |
454 | |||
455 | remove_dock_station(); | ||
451 | } | 456 | } |
452 | 457 | ||
453 | module_init(acpiphp_init); | 458 | module_init(acpiphp_init); |