Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 78b8e141 authored by Bjorn Helgaas's avatar Bjorn Helgaas Committed by Len Brown
Browse files

ACPI: fix synthetic HID for \_SB_



This makes \_SB_ show up as /sys/devices/LNXSYSTM:00/LNXSYBUS:00
rather than "device:00".  This has been broken for a loooong time
(at least since 2.6.13) because device->parent is an acpi_device
pointer, not a handle.

Signed-off-by: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent e3b87f8a
Loading
Loading
Loading
Loading
+6 −12
Original line number Diff line number Diff line
@@ -1100,6 +1100,12 @@ static void acpi_device_set_id(struct acpi_device *device)
		if (ACPI_IS_ROOT_DEVICE(device)) {
			hid = ACPI_SYSTEM_HID;
			break;
		} else if (ACPI_IS_ROOT_DEVICE(device->parent)) {
			/* \_SB_, the only root-level namespace device */
			hid = ACPI_BUS_HID;
			strcpy(device->pnp.device_name, ACPI_BUS_DEVICE_NAME);
			strcpy(device->pnp.device_class, ACPI_BUS_CLASS);
			break;
		}

		status = acpi_get_object_info(device->handle, &info);
@@ -1149,18 +1155,6 @@ static void acpi_device_set_id(struct acpi_device *device)
		break;
	}

	/*
	 * \_SB
	 * ----
	 * Fix for the system root bus device -- the only root-level device.
	 */
	if (((acpi_handle)device->parent == ACPI_ROOT_OBJECT) &&
	     (device->device_type == ACPI_BUS_TYPE_DEVICE)) {
		hid = ACPI_BUS_HID;
		strcpy(device->pnp.device_name, ACPI_BUS_DEVICE_NAME);
		strcpy(device->pnp.device_class, ACPI_BUS_CLASS);
	}

	if (hid) {
		device->pnp.hardware_id = ACPI_ALLOCATE_ZEROED(strlen (hid) + 1);
		if (device->pnp.hardware_id) {