[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