diff options
author | rajesh.shah@intel.com <rajesh.shah@intel.com> | 2005-10-31 19:20:11 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-11-10 19:09:15 -0500 |
commit | 427bf532b5ad6db5addc2bce675d13f874397c0c (patch) | |
tree | 3a099b05ab3b1252d6e441855d9b1da02e0daf8c /drivers/pci/pci-acpi.c | |
parent | 1a9ed1bfe2fb17cc30227a12a3c1212128bb78b6 (diff) |
[PATCH] pciehp: request control of each hotplug controller individually
This patch tweaks the way pciehp requests control of the hotplug
hardware from BIOS. It now tries to invoke the ACPI _OSC method
for a specific hotplug controller only, rather than walking the
entire acpi namespace invoking all possible _OSC methods under
all host bridges. This allows us to gain control of each hotplug
controller individually, even if BIOS fails to give us control of
some other hotplug controller in the system.
Signed-off-by: Rajesh Shah <rajesh.shah@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/pci/pci-acpi.c')
-rw-r--r-- | drivers/pci/pci-acpi.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c index e9e37abe1f76..a9b00cc2d885 100644 --- a/drivers/pci/pci-acpi.c +++ b/drivers/pci/pci-acpi.c | |||
@@ -91,9 +91,7 @@ acpi_query_osc ( | |||
91 | static acpi_status | 91 | static acpi_status |
92 | acpi_run_osc ( | 92 | acpi_run_osc ( |
93 | acpi_handle handle, | 93 | acpi_handle handle, |
94 | u32 level, | 94 | void *context) |
95 | void *context, | ||
96 | void **retval ) | ||
97 | { | 95 | { |
98 | acpi_status status; | 96 | acpi_status status; |
99 | struct acpi_object_list input; | 97 | struct acpi_object_list input; |
@@ -184,7 +182,7 @@ EXPORT_SYMBOL(pci_osc_support_set); | |||
184 | * | 182 | * |
185 | * Attempt to take control from Firmware on requested control bits. | 183 | * Attempt to take control from Firmware on requested control bits. |
186 | **/ | 184 | **/ |
187 | acpi_status pci_osc_control_set(u32 flags) | 185 | acpi_status pci_osc_control_set(acpi_handle handle, u32 flags) |
188 | { | 186 | { |
189 | acpi_status status; | 187 | acpi_status status; |
190 | u32 ctrlset; | 188 | u32 ctrlset; |
@@ -198,10 +196,7 @@ acpi_status pci_osc_control_set(u32 flags) | |||
198 | return AE_SUPPORT; | 196 | return AE_SUPPORT; |
199 | } | 197 | } |
200 | ctrlset_buf[OSC_CONTROL_TYPE] |= ctrlset; | 198 | ctrlset_buf[OSC_CONTROL_TYPE] |= ctrlset; |
201 | status = acpi_get_devices ( PCI_ROOT_HID_STRING, | 199 | status = acpi_run_osc(handle, ctrlset_buf); |
202 | acpi_run_osc, | ||
203 | ctrlset_buf, | ||
204 | NULL ); | ||
205 | if (ACPI_FAILURE (status)) { | 200 | if (ACPI_FAILURE (status)) { |
206 | ctrlset_buf[OSC_CONTROL_TYPE] &= ~ctrlset; | 201 | ctrlset_buf[OSC_CONTROL_TYPE] &= ~ctrlset; |
207 | } | 202 | } |