ACPI: simplify acpiphp driver with new helper functions
authorJiang Liu <jiang.liu@huawei.com>
Fri, 28 Jun 2013 16:24:43 +0000 (00:24 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sun, 14 Jul 2013 23:33:10 +0000 (01:33 +0200)
Use the new helper functions introduced previously to simplify the
ACPI-based PCI hotplug (acpiphp) driver.

[rjw: Changelog]
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/pci/hotplug/acpiphp_glue.c

index 59df8575a48ce834fb48ea002689ed97ed9ca51a..a0a7133a1d12346746aff58d17724ca2082e73cd 100644 (file)
@@ -201,7 +201,6 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv)
        struct acpiphp_bridge *bridge = (struct acpiphp_bridge *)context;
        struct acpiphp_slot *slot;
        struct acpiphp_func *newfunc;
-       acpi_handle tmp;
        acpi_status status = AE_OK;
        unsigned long long adr, sun;
        int device, function, retval, found = 0;
@@ -232,19 +231,19 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv)
        newfunc->handle = handle;
        newfunc->function = function;
 
-       if (ACPI_SUCCESS(acpi_get_handle(handle, "_EJ0", &tmp)))
+       if (acpi_has_method(handle, "_EJ0"))
                newfunc->flags = FUNC_HAS_EJ0;
 
-       if (ACPI_SUCCESS(acpi_get_handle(handle, "_STA", &tmp)))
+       if (acpi_has_method(handle, "_STA"))
                newfunc->flags |= FUNC_HAS_STA;
 
-       if (ACPI_SUCCESS(acpi_get_handle(handle, "_PS0", &tmp)))
+       if (acpi_has_method(handle, "_PS0"))
                newfunc->flags |= FUNC_HAS_PS0;
 
-       if (ACPI_SUCCESS(acpi_get_handle(handle, "_PS3", &tmp)))
+       if (acpi_has_method(handle, "_PS3"))
                newfunc->flags |= FUNC_HAS_PS3;
 
-       if (ACPI_SUCCESS(acpi_get_handle(handle, "_DCK", &tmp)))
+       if (acpi_has_method(handle, "_DCK"))
                newfunc->flags |= FUNC_HAS_DCK;
 
        status = acpi_evaluate_integer(handle, "_SUN", NULL, &sun);
@@ -843,25 +842,14 @@ static unsigned int get_slot_status(struct acpiphp_slot *slot)
  */
 int acpiphp_eject_slot(struct acpiphp_slot *slot)
 {
-       acpi_status status;
        struct acpiphp_func *func;
-       struct acpi_object_list arg_list;
-       union acpi_object arg;
 
        list_for_each_entry(func, &slot->funcs, sibling) {
                /* We don't want to call _EJ0 on non-existing functions. */
                if ((func->flags & FUNC_HAS_EJ0)) {
-                       /* _EJ0 method take one argument */
-                       arg_list.count = 1;
-                       arg_list.pointer = &arg;
-                       arg.type = ACPI_TYPE_INTEGER;
-                       arg.integer.value = 1;
-
-                       status = acpi_evaluate_object(func->handle, "_EJ0", &arg_list, NULL);
-                       if (ACPI_FAILURE(status)) {
-                               warn("%s: _EJ0 failed\n", __func__);
+                       if (ACPI_FAILURE(acpi_evaluate_ej0(func->handle)))
                                return -1;
-                       else
+                       else
                                break;
                }
        }
@@ -1171,7 +1159,6 @@ static void handle_hotplug_event_func(acpi_handle handle, u32 type,
  */
 void acpiphp_enumerate_slots(struct pci_bus *bus, acpi_handle handle)
 {
-       acpi_handle dummy_handle;
        struct acpiphp_bridge *bridge;
 
        if (acpiphp_disabled)
@@ -1200,8 +1187,7 @@ void acpiphp_enumerate_slots(struct pci_bus *bus, acpi_handle handle)
        get_device(&bus->dev);
 
        if (!pci_is_root_bus(bridge->pci_bus) &&
-           ACPI_SUCCESS(acpi_get_handle(bridge->handle,
-                                       "_EJ0", &dummy_handle))) {
+           acpi_has_method(bridge->handle, "_EJ0")) {
                dbg("found ejectable p2p bridge\n");
                bridge->flags |= BRIDGE_HAS_EJ0;
                bridge->func = acpiphp_bridge_handle_to_function(handle);