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

Commit 57f3674f authored by Bjorn Helgaas's avatar Bjorn Helgaas Committed by Len Brown
Browse files

ACPI: simplify building device HID/CID list



Minor code cleanup, no functional change.  Instead of remembering
what HIDs & CIDs to add later, just add them immediately.

Signed-off-by: default avatarBjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 6622d8ce
Loading
Loading
Loading
Loading
+23 −33
Original line number Original line Diff line number Diff line
@@ -1016,21 +1016,19 @@ static void acpi_add_id(struct acpi_device *device, const char *dev_id)


static void acpi_device_set_id(struct acpi_device *device)
static void acpi_device_set_id(struct acpi_device *device)
{
{
	struct acpi_device_info *info = NULL;
	char *hid = NULL;
	struct acpica_device_id_list *cid_list = NULL;
	char *cid_add = NULL;
	acpi_status status;
	acpi_status status;
	struct acpi_device_info *info;
	struct acpica_device_id_list *cid_list;
	int i;
	int i;


	switch (device->device_type) {
	switch (device->device_type) {
	case ACPI_BUS_TYPE_DEVICE:
	case ACPI_BUS_TYPE_DEVICE:
		if (ACPI_IS_ROOT_DEVICE(device)) {
		if (ACPI_IS_ROOT_DEVICE(device)) {
			hid = ACPI_SYSTEM_HID;
			acpi_add_id(device, ACPI_SYSTEM_HID);
			break;
			break;
		} else if (ACPI_IS_ROOT_DEVICE(device->parent)) {
		} else if (ACPI_IS_ROOT_DEVICE(device->parent)) {
			/* \_SB_, the only root-level namespace device */
			/* \_SB_, the only root-level namespace device */
			hid = ACPI_BUS_HID;
			acpi_add_id(device, ACPI_BUS_HID);
			strcpy(device->pnp.device_name, ACPI_BUS_DEVICE_NAME);
			strcpy(device->pnp.device_name, ACPI_BUS_DEVICE_NAME);
			strcpy(device->pnp.device_class, ACPI_BUS_CLASS);
			strcpy(device->pnp.device_class, ACPI_BUS_CLASS);
			break;
			break;
@@ -1043,41 +1041,43 @@ static void acpi_device_set_id(struct acpi_device *device)
		}
		}


		if (info->valid & ACPI_VALID_HID)
		if (info->valid & ACPI_VALID_HID)
			hid = info->hardware_id.string;
			acpi_add_id(device, info->hardware_id.string);
		if (info->valid & ACPI_VALID_CID)
		if (info->valid & ACPI_VALID_CID) {
			cid_list = &info->compatible_id_list;
			cid_list = &info->compatible_id_list;
			for (i = 0; i < cid_list->count; i++)
				acpi_add_id(device, cid_list->ids[i].string);
		}
		if (info->valid & ACPI_VALID_ADR) {
		if (info->valid & ACPI_VALID_ADR) {
			device->pnp.bus_address = info->address;
			device->pnp.bus_address = info->address;
			device->flags.bus_address = 1;
			device->flags.bus_address = 1;
		}
		}


		/* If we have a video/bay/dock device, add our selfdefined
		/*
		   HID to the CID list. Like that the video/bay/dock drivers
		 * Some devices don't reliably have _HIDs & _CIDs, so add
		   will get autoloaded and the device might still match
		 * synthetic HIDs to make sure drivers can find them.
		   against another driver.
		 */
		 */
		if (acpi_is_video_device(device))
		if (acpi_is_video_device(device))
			cid_add = ACPI_VIDEO_HID;
			acpi_add_id(device, ACPI_VIDEO_HID);
		else if (ACPI_SUCCESS(acpi_bay_match(device)))
		else if (ACPI_SUCCESS(acpi_bay_match(device)))
			cid_add = ACPI_BAY_HID;
			acpi_add_id(device, ACPI_BAY_HID);
		else if (ACPI_SUCCESS(acpi_dock_match(device)))
		else if (ACPI_SUCCESS(acpi_dock_match(device)))
			cid_add = ACPI_DOCK_HID;
			acpi_add_id(device, ACPI_DOCK_HID);


		break;
		break;
	case ACPI_BUS_TYPE_POWER:
	case ACPI_BUS_TYPE_POWER:
		hid = ACPI_POWER_HID;
		acpi_add_id(device, ACPI_POWER_HID);
		break;
		break;
	case ACPI_BUS_TYPE_PROCESSOR:
	case ACPI_BUS_TYPE_PROCESSOR:
		hid = ACPI_PROCESSOR_OBJECT_HID;
		acpi_add_id(device, ACPI_PROCESSOR_OBJECT_HID);
		break;
		break;
	case ACPI_BUS_TYPE_THERMAL:
	case ACPI_BUS_TYPE_THERMAL:
		hid = ACPI_THERMAL_HID;
		acpi_add_id(device, ACPI_THERMAL_HID);
		break;
		break;
	case ACPI_BUS_TYPE_POWER_BUTTON:
	case ACPI_BUS_TYPE_POWER_BUTTON:
		hid = ACPI_BUTTON_HID_POWERF;
		acpi_add_id(device, ACPI_BUTTON_HID_POWERF);
		break;
		break;
	case ACPI_BUS_TYPE_SLEEP_BUTTON:
	case ACPI_BUS_TYPE_SLEEP_BUTTON:
		hid = ACPI_BUTTON_HID_SLEEPF;
		acpi_add_id(device, ACPI_BUTTON_HID_SLEEPF);
		break;
		break;
	}
	}


@@ -1088,18 +1088,8 @@ static void acpi_device_set_id(struct acpi_device *device)
	 * This generic ID isn't useful for driver binding, but it provides
	 * This generic ID isn't useful for driver binding, but it provides
	 * the useful property that "every acpi_device has an ID."
	 * the useful property that "every acpi_device has an ID."
	 */
	 */
	if (!hid && !cid_list && !cid_add)
	if (list_empty(&device->pnp.ids))
		hid = "device";
		acpi_add_id(device, "device");

	if (hid)
		acpi_add_id(device, hid);
	if (cid_list)
		for (i = 0; i < cid_list->count; i++)
			acpi_add_id(device, cid_list->ids[i].string);
	if (cid_add)
		acpi_add_id(device, cid_add);

	kfree(info);
}
}


static int acpi_device_set_context(struct acpi_device *device)
static int acpi_device_set_context(struct acpi_device *device)