[U-Boot] [PATCH v2 3/4] dm: usb: Use device_unbind_children to clean up usb devs on stop

Simon Glass sjg at chromium.org
Sat Jul 4 01:06:11 CEST 2015


On 1 July 2015 at 12:53, Hans de Goede <hdegoede at redhat.com> wrote:
> On an usb stop instead of leaving orphan usb devices behind simply remove
> them.
>
> The result of this commit is best seen in the output of "dm tree" after
> plugging out an usb hub with 2 devices plugges in and plugging in a keyb.
> instead, before this commit the output would be:
>
>  usb         [ + ]    `-- sunxi-musb
>  usb_hub     [   ]        |-- usb_hub
>  usb_mass_st [   ]        |   |-- usb_mass_storage
>  usb_dev_gen [   ]        |   `-- generic_bus_0_dev_3
>  usb_dev_gen [ + ]        `-- generic_bus_0_dev_1
>
> Notice the non active usb_hub child and its 2 non active children. The
> first child being non-active as in this example also causes usb_get_dev_index
> to return NULL when probing the first child, which results in the usb kbd
> code not binding to the keyboard.
>
> With this commit in place the output after swapping and "usb reset" is:
>
>  usb         [ + ]    `-- sunxi-musb
>  usb_dev_gen [ + ]        `-- generic_bus_0_dev_1
>
> As expected, and usb_get_dev_index works properly and the keyboard works.
>
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> ---
> Changes in v2:
> -We only need to call device_unbind_children, the children are removed
>  already by the device_remove call on the host
> -Do not add #ifdef-s around usb_stop()
> ---
>  drivers/usb/host/usb-uclass.c | 3 +++
>  1 file changed, 3 insertions(+)

Acked-by: Simon Glass <sjg at chromium.org>


More information about the U-Boot mailing list