PCI hotplug changes for 2.5.58
PATCH 1/1 PCI hotplug changes for 2.5.58
Here is a minor PCI hotplug fix for 2.5.58
Please pull from: bk://linuxusb.bkbits.net/pci_hp-2.5
thanks,
greg k-h
drivers/hotplug/acpiphp_glue.c | 45 ++++++++++------------------------------- 1 files changed, 11 insertions(+), 34 deletions(-)
-----
[email protected], 2003-01-14 11:30:32-08:00, [email protected]
[PATCH] acpi_bus_register_driver patch
The current ACPI code searches for a _HID of PNP0A03. This is wrong, it needs to check _CID too. But we already have generic code for doing that, so this patch converts the ACPI pcihp code to do this.
drivers/hotplug/acpiphp_glue.c | 45 ++++++++++------------------------------- 1 files changed, 11 insertions(+), 34 deletions(-)
------
PATCH 1/1 PCI hotplug changes for 2.5.58
ChangeSet 1.1025, 2003/01/14 11:30:32-08:00, [email protected]
[PATCH] acpi_bus_register_driver patch
The current ACPI code searches for a _HID of PNP0A03. This is wrong, it needs to check _CID too. But we already have generic code for doing that, so this patch converts the ACPI pcihp code to do this.
drivers/hotplug/acpiphp_glue.c +11 -34
@@ -712,8 +712,9 @@/* find hot-pluggable slots, and then find P2P bridge */ -static int add_bridges (acpi_handle *handle) +static int add_bridges (struct acpi_device *device) { +acpi_handle *handle = device->handle;acpi_status status;unsigned long tmp;int seg, bus;
@@ -767,36 +768,6 @@ } -/* callback routine to enumerate all the bridges in ACPI namespace */ -static acpi_status -find_host_bridge (acpi_handle handle,u32 lvl,void *context,void **rv) -{ -acpi_status status; -struct acpi_device_info info; -char objname[5 ]; -struct acpi_buffer buffer = { .length =sizeof (objname), - .pointer = objname }; - - status =acpi_get_object_info (handle, &info); -if (ACPI_FAILURE (status)) { -dbg ("%s: failed to get bridge information\n" , __FUNCTION__); -return AE_OK ;/* continue */ - } - - info.hardware_id[sizeof (info.hardware_id)-1 ] ='\0' ; - -/* TBD use acpi_get_devices() API */ -if (info.current_status && - (info.valid &ACPI_VALID_HID ) && -strcmp (info.hardware_id,ACPI_PCI_HOST_HID ) ==0 ) { -acpi_get_name (handle,ACPI_SINGLE_NAME , &buffer); -dbg ("checking PCI-hotplug capable bridges under [%s]\n" , objname); -add_bridges (handle); - } -return AE_OK ; -} - -static int power_on_slot (struct acpiphp_slot *slot) {acpi_status status;
@@ -1157,6 +1128,14 @@ } } +static struct acpi_driver acpi_pci_hp_driver = { + .name ="pci_hp" , + .class ="" , + .ids =ACPI_PCI_HOST_HID , + .ops = { + .add = add_bridges, + } +};/** * acpiphp_glue_init - initializes all PCI hotplug - ACPI glue data structures
@@ -1169,9 +1148,7 @@if (list_empty (&pci_root_buses))return -1 ; - status =acpi_walk_namespace (ACPI_TYPE_DEVICE ,ACPI_ROOT_OBJECT , -ACPI_UINT32_MAX , find_host_bridge, -NULL ,NULL ); + status =acpi_bus_register_driver (&acpi_pci_hp_driver);if (ACPI_FAILURE (status)) {err ("%s: acpi_walk_namespace() failed\n" , __FUNCTION__);