Skip to content

Commit

Permalink
efi/dev-path-parser: Refactor _UID handling to use acpi_dev_uid_to_in…
Browse files Browse the repository at this point in the history
…teger()

ACPI utils provide acpi_dev_uid_to_integer() helper to extract _UID as
an integer. Use it instead of custom approach.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Andy Shevchenko authored and Rafael J. Wysocki committed Sep 19, 2022
1 parent 2990f3a commit 7fc90e8
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions drivers/firmware/efi/dev-path-parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@
static long __init parse_acpi_path(const struct efi_dev_path *node,
struct device *parent, struct device **child)
{
char hid[ACPI_ID_LEN], uid[11]; /* UINT_MAX + null byte */
struct acpi_device *adev;
struct device *phys_dev;
char hid[ACPI_ID_LEN];
u64 uid;
int ret;

if (node->header.length != 12)
return -EINVAL;
Expand All @@ -27,12 +29,12 @@ static long __init parse_acpi_path(const struct efi_dev_path *node,
'A' + ((node->acpi.hid >> 5) & 0x1f) - 1,
'A' + ((node->acpi.hid >> 0) & 0x1f) - 1,
node->acpi.hid >> 16);
sprintf(uid, "%u", node->acpi.uid);

for_each_acpi_dev_match(adev, hid, NULL, -1) {
if (adev->pnp.unique_id && !strcmp(adev->pnp.unique_id, uid))
ret = acpi_dev_uid_to_integer(adev, &uid);
if (ret == 0 && node->acpi.uid == uid)
break;
if (!adev->pnp.unique_id && node->acpi.uid == 0)
if (ret == -ENODATA && node->acpi.uid == 0)
break;
}
if (!adev)
Expand Down

0 comments on commit 7fc90e8

Please sign in to comment.