Commit 600655cd authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Dmitry Torokhov
Browse files

Input: icn8505 - utilize acpi_get_subsystem_id()



Replace open coded variant of recently introduced
acpi_get_subsystem_id().

Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20220928110548.43955-1-andriy.shevchenko@linux.intel.com


Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 67706524
Loading
Loading
Loading
Loading
+9 −21
Original line number Diff line number Diff line
@@ -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;
}