2012-10-09 13:53:36

by Toshi Kani

[permalink] [raw]
Subject: Re: [PATCH] ACPI: dock: Remove redundant ACPI NS walk

Hi Len,

Can you please review this patch? Please let me know if there is
anything I need to do for 3.7.

Thanks,
-Toshi


On Wed, 2012-09-12 at 14:30 -0600, Toshi Kani wrote:
> Combined two ACPI namespace walks, which look for dock stations
> and then bays separately, into a single walk.
>
> Signed-off-by: Toshi Kani <[email protected]>
> ---
> drivers/acpi/dock.c | 26 +++++++-------------------
> 1 files changed, 7 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
> index 88eb143..ae4ebf2 100644
> --- a/drivers/acpi/dock.c
> +++ b/drivers/acpi/dock.c
> @@ -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
> * @lvl: unused
> - * @context: counter of dock stations found
> + * @context: 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
> -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);
>
> 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)
> {
> if (acpi_disabled)
> return 0;
>
> - /* look for a dock station */
> + /* look for dock stations and bays */
> 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) {
> printk(KERN_INFO PREFIX "No dock devices found.\n");
> return 0;