aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/hotplug/acpiphp_core.c
diff options
context:
space:
mode:
authorKristen Accardi <kristen.c.accardi@intel.com>2006-02-23 20:56:03 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2006-03-23 17:35:15 -0500
commit20416ea54087c25502d6fb973b8e119973e16341 (patch)
tree47ca50997cbb408852021315ff4da315292467c2 /drivers/pci/hotplug/acpiphp_core.c
parentceaba663055e38226a070a9668eac5881d65a2cc (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.c7
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)
429static int __init acpiphp_init(void) 429static 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
453module_init(acpiphp_init); 458module_init(acpiphp_init);