The acpi_dev_get_first_match_dev() helper will find and return
an ACPI device pointer of the first registered device in the system
by its HID.

Use it instead of open coded variant.

Cc: Chun-Yi Lee <j...@suse.com>
Signed-off-by: Andy Shevchenko <andriy.shevche...@linux.intel.com>
---
- Chun-Yi, please, test it if possible
 drivers/platform/x86/acer-wmi.c | 49 +++++----------------------------
 1 file changed, 7 insertions(+), 42 deletions(-)

diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
index 62b54e137231..60c18f21588d 100644
--- a/drivers/platform/x86/acer-wmi.c
+++ b/drivers/platform/x86/acer-wmi.c
@@ -1881,52 +1881,17 @@ static int __init acer_wmi_enable_rf_button(void)
        return status;
 }
 
-#define ACER_WMID_ACCEL_HID    "BST0001"
-
-static acpi_status __init acer_wmi_get_handle_cb(acpi_handle ah, u32 level,
-                                               void *ctx, void **retval)
-{
-       struct acpi_device *dev;
-
-       if (!strcmp(ctx, "SENR")) {
-               if (acpi_bus_get_device(ah, &dev))
-                       return AE_OK;
-               if (strcmp(ACER_WMID_ACCEL_HID, acpi_device_hid(dev)))
-                       return AE_OK;
-       } else
-               return AE_OK;
-
-       *(acpi_handle *)retval = ah;
-
-       return AE_CTRL_TERMINATE;
-}
-
-static int __init acer_wmi_get_handle(const char *name, const char *prop,
-                                       acpi_handle *ah)
-{
-       acpi_status status;
-       acpi_handle handle;
-
-       BUG_ON(!name || !ah);
-
-       handle = NULL;
-       status = acpi_get_devices(prop, acer_wmi_get_handle_cb,
-                                       (void *)name, &handle);
-       if (ACPI_SUCCESS(status) && handle) {
-               *ah = handle;
-               return 0;
-       } else {
-               return -ENODEV;
-       }
-}
-
 static int __init acer_wmi_accel_setup(void)
 {
+       struct acpi_device *adev;
        int err;
 
-       err = acer_wmi_get_handle("SENR", ACER_WMID_ACCEL_HID, &gsensor_handle);
-       if (err)
-               return err;
+       adev = acpi_dev_get_first_match_dev("BST0001", NULL, -1);
+       if (!adev)
+               return -ENODEV;
+
+       gsensor_handle = acpi_device_handle(adev);
+       acpi_dev_put(adev);
 
        interface->capability |= ACER_CAP_ACCEL;
 
-- 
2.20.1

Reply via email to