diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2021-04-07 16:30:56 +0200 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2021-04-08 19:55:40 +0200 |
commit | 02056a4f9209b7e9f65fab193069cbff36ec92b5 (patch) | |
tree | 34c26481a7149c77ea9eec8ca68b971b63f0e6aa /drivers/acpi/scan.c | |
parent | e6c1067dc1becf6c00408f59e0efa28b8d206371 (diff) |
ACPI: scan: Rearrange checks in acpi_bus_check_add()
Rearrange the checks in acpi_bus_check_add() to avoid checking
the "type" twice and take "check_dep" into account only for
ACPI_TYPE_DEVICE objects.
No intentional functional impact.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'drivers/acpi/scan.c')
-rw-r--r-- | drivers/acpi/scan.c | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index 7f39bea6328a..5b5fa77cec0e 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -1831,7 +1831,7 @@ static void acpi_scan_init_hotplug(struct acpi_device *adev) } } -static u32 acpi_scan_check_dep(acpi_handle handle) +static u32 acpi_scan_check_dep(acpi_handle handle, bool check_dep) { struct acpi_handle_list dep_devices; acpi_status status; @@ -1844,7 +1844,8 @@ static u32 acpi_scan_check_dep(acpi_handle handle) * 2. ACPI nodes describing USB ports. * Still, checking for _HID catches more then just these cases ... */ - if (!acpi_has_method(handle, "_DEP") || !acpi_has_method(handle, "_HID")) + if (!check_dep || !acpi_has_method(handle, "_DEP") || + !acpi_has_method(handle, "_HID")) return 0; status = acpi_evaluate_reference(handle, "_DEP", NULL, &dep_devices); @@ -1925,6 +1926,12 @@ static acpi_status acpi_bus_check_add(acpi_handle handle, bool check_dep, if (acpi_device_should_be_hidden(handle)) return AE_OK; + /* Bail out if there are dependencies. */ + if (acpi_scan_check_dep(handle, check_dep) > 0) { + acpi_bus_scan_second_pass = true; + return AE_CTRL_DEPTH; + } + fallthrough; case ACPI_TYPE_ANY: /* for ACPI_ROOT_OBJECT */ type = ACPI_BUS_TYPE_DEVICE; @@ -1942,27 +1949,12 @@ static acpi_status acpi_bus_check_add(acpi_handle handle, bool check_dep, break; case ACPI_TYPE_POWER: - type = ACPI_BUS_TYPE_POWER; - break; - - default: - return AE_OK; - } - - if (type == ACPI_BUS_TYPE_POWER) { acpi_add_power_resource(handle); + fallthrough; + default: return AE_OK; } - if (type == ACPI_BUS_TYPE_DEVICE && check_dep) { - u32 count = acpi_scan_check_dep(handle); - /* Bail out if the number of recorded dependencies is not 0. */ - if (count > 0) { - acpi_bus_scan_second_pass = true; - return AE_CTRL_DEPTH; - } - } - acpi_add_single_object(&device, handle, type, sta); if (!device) return AE_CTRL_DEPTH; |