|
@@ -749,6 +749,24 @@ static int acpiphp_bus_trim(acpi_handle handle)
|
|
|
return retval;
|
|
|
}
|
|
|
|
|
|
+static void acpiphp_set_acpi_region(struct acpiphp_slot *slot)
|
|
|
+{
|
|
|
+ struct acpiphp_func *func;
|
|
|
+ union acpi_object params[2];
|
|
|
+ struct acpi_object_list arg_list;
|
|
|
+
|
|
|
+ list_for_each_entry(func, &slot->funcs, sibling) {
|
|
|
+ arg_list.count = 2;
|
|
|
+ arg_list.pointer = params;
|
|
|
+ params[0].type = ACPI_TYPE_INTEGER;
|
|
|
+ params[0].integer.value = ACPI_ADR_SPACE_PCI_CONFIG;
|
|
|
+ params[1].type = ACPI_TYPE_INTEGER;
|
|
|
+ params[1].integer.value = 1;
|
|
|
+ /* _REG is optional, we don't care about if there is failure */
|
|
|
+ acpi_evaluate_object(func->handle, "_REG", &arg_list, NULL);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* enable_device - enable, configure a slot
|
|
|
* @slot: slot to be enabled
|
|
@@ -805,6 +823,7 @@ static int __ref enable_device(struct acpiphp_slot *slot)
|
|
|
pci_bus_assign_resources(bus);
|
|
|
acpiphp_sanitize_bus(bus);
|
|
|
acpiphp_set_hpp_values(bus);
|
|
|
+ acpiphp_set_acpi_region(slot);
|
|
|
pci_enable_bridges(bus);
|
|
|
pci_bus_add_devices(bus);
|
|
|
|