Input: icn8505 - utilize acpi_get_subsystem_id()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 28 Sep 2022 11:05:48 +0000 (14:05 +0300)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 28 Sep 2022 16:01:32 +0000 (09:01 -0700)
Replace open coded variant of recently introduced
acpi_get_subsystem_id().

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20220928110548.43955-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/chipone_icn8505.c

index f9ca550..c421f4b 100644 (file)
@@ -364,32 +364,20 @@ static irqreturn_t icn8505_irq(int irq, void *dev_id)
 
 static int icn8505_probe_acpi(struct icn8505_data *icn8505, struct device *dev)
 {
-       struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
-       const char *subsys = "unknown";
-       struct acpi_device *adev;
-       union acpi_object *obj;
-       acpi_status status;
-
-       adev = ACPI_COMPANION(dev);
-       if (!adev)
-               return -ENODEV;
+       const char *subsys;
+       int error;
 
-       status = acpi_evaluate_object(adev->handle, "_SUB", NULL, &buffer);
-       if (ACPI_SUCCESS(status)) {
-               obj = buffer.pointer;
-               if (obj->type == ACPI_TYPE_STRING)
-                       subsys = obj->string.pointer;
-               else
-                       dev_warn(dev, "Warning ACPI _SUB did not return a string\n");
-       } else {
-               dev_warn(dev, "Warning ACPI _SUB failed: %#x\n", status);
-               buffer.pointer = NULL;
-       }
+       subsys = acpi_get_subsystem_id(ACPI_HANDLE(dev));
+       error = PTR_ERR_OR_ZERO(subsys);
+       if (error == -ENODATA)
+               subsys = "unknown";
+       else if (error)
+               return error;
 
        snprintf(icn8505->firmware_name, sizeof(icn8505->firmware_name),
                 "chipone/icn8505-%s.fw", subsys);
 
-       kfree(buffer.pointer);
+       kfree_const(subsys);
        return 0;
 }