ACPI: dock: Remove redundant ACPI NS walk

Combined two ACPI namespace walks, which look for dock stations
and then bays separately, into a single walk.

Signed-off-by: Toshi Kani <toshi.kani@hp.com>
Reviewed-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
Toshi Kani 2012-10-23 01:30:26 +02:00 committed by Rafael J. Wysocki
parent a3cd8d2789
commit 8ab0ab2570

View File

@ -1016,44 +1016,32 @@ static int dock_remove(struct dock_station *ds)
} }
/** /**
* find_dock - look for a dock station * find_dock_and_bay - look for dock stations and bays
* @handle: acpi handle of a device * @handle: acpi handle of a device
* @lvl: unused * @lvl: unused
* @context: counter of dock stations found * @context: unused
* @rv: unused * @rv: unused
* *
* This is called by acpi_walk_namespace to look for dock stations. * This is called by acpi_walk_namespace to look for dock stations and bays.
*/ */
static __init acpi_status static __init acpi_status
find_dock(acpi_handle handle, u32 lvl, void *context, void **rv) find_dock_and_bay(acpi_handle handle, u32 lvl, void *context, void **rv)
{ {
if (is_dock(handle)) if (is_dock(handle) || is_ejectable_bay(handle))
dock_add(handle); dock_add(handle);
return AE_OK; return AE_OK;
} }
static __init acpi_status
find_bay(acpi_handle handle, u32 lvl, void *context, void **rv)
{
/* If bay is a dock, it's already handled */
if (is_ejectable_bay(handle) && !is_dock(handle))
dock_add(handle);
return AE_OK;
}
static int __init dock_init(void) static int __init dock_init(void)
{ {
if (acpi_disabled) if (acpi_disabled)
return 0; return 0;
/* look for a dock station */ /* look for dock stations and bays */
acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
ACPI_UINT32_MAX, find_dock, NULL, NULL, NULL); ACPI_UINT32_MAX, find_dock_and_bay, NULL, NULL, NULL);
/* look for bay */
acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
ACPI_UINT32_MAX, find_bay, NULL, NULL, NULL);
if (!dock_station_count) { if (!dock_station_count) {
printk(KERN_INFO PREFIX "No dock devices found.\n"); printk(KERN_INFO PREFIX "No dock devices found.\n");
return 0; return 0;