From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 18/26] dm: usb: Remove inactive children after a bus scan
Date: Mon, 9 Nov 2015 09:22:52 +0100 [thread overview]
Message-ID: <564057DC.1000809@redhat.com> (raw)
In-Reply-To: <1447051688-24936-19-git-send-email-sjg@chromium.org>
Hi,
On 09-11-15 07:48, Simon Glass wrote:
> Each scan of the USB bus may return different results. Existing driver-model
> devices are reused when found, but if a device no longer exists it will stay
> around, de-activated, but bound.
>
> Detect these devices and remove them after the scan completes.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
I wonder how this is better then my original:
"dm: usb: Use device_unbind_children to clean up usb devs on stop"
Patch, the end result of both patches is the same and both are
a NOP when DM_DEVICE_REMOVE is not set. Where as my code seems
to be a much more KISS approach to the problem (my approach is
just 3 lines vs 23 lines for yours).
I know we will need usb_find_child in the DM_DEVICE_REMOVE not
set case, but why not only revert the:
"dm: usb: Rename usb_find_child to usb_find_emul_child"
commit, keep the other 2 you revert and drop this patch ?
This drops 3 patches from your patch-set and the end result is
more clean IMHO.
> Changes in v2: None
>
> drivers/usb/host/usb-uclass.c | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/drivers/usb/host/usb-uclass.c b/drivers/usb/host/usb-uclass.c
> index 4aa92f8..50538e0 100644
> --- a/drivers/usb/host/usb-uclass.c
> +++ b/drivers/usb/host/usb-uclass.c
> @@ -202,6 +202,20 @@ static void usb_scan_bus(struct udevice *bus, bool recurse)
> printf("%d USB Device(s) found\n", priv->next_addr);
> }
>
> +static void remove_inactive_children(struct uclass *uc, struct udevice *bus)
> +{
> + uclass_foreach_dev(bus, uc) {
> + struct udevice *dev, *next;
> +
> + if (!device_active(bus))
> + continue;
> + device_foreach_child_safe(dev, next, bus) {
> + if (!device_active(dev))
> + device_unbind(dev);
> + }
> + }
> +}
> +
> int usb_init(void)
> {
> int controllers_initialized = 0;
> @@ -270,6 +284,15 @@ int usb_init(void)
> }
>
> debug("scan end\n");
> +
> + /* Remove any devices that were not found on this scan */
> + remove_inactive_children(uc, bus);
> +
> + ret = uclass_get(UCLASS_USB_HUB, &uc);
> + if (ret)
> + return ret;
> + remove_inactive_children(uc, bus);
> +
Why do you need to call remove_inactive_children twice here? This seems
worthy of a comment explaining why this is necessary.
> /* if we were not able to find at least one working bus, bail out */
> if (!count)
> printf("No controllers found\n");
>
Regards,
Hans
next prev parent reply other threads:[~2015-11-09 8:22 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-09 6:47 [U-Boot] [PATCH v2 00/26] usb: Drop requirement for USB unbinding, add tests Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 01/26] sandbox: Add a way to skip time delays Simon Glass
2015-11-20 3:30 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 02/26] dm: usb: Avoid time delays in sandbox tests Simon Glass
2015-11-20 3:30 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 03/26] Move console definitions into a new console.h file Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 04/26] Drop config.h header from display_options.c Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 05/26] Add a circular memory buffer implementation Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 06/26] console: Add a console buffer Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 07/26] sandbox: Enable console recording and silent console Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 08/26] test: Record and silence console in tests Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 09/26] usb: Refactor USB tree output code for testing Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 10/26] dm: core: Add safe device iteration macros Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 11/26] sandbox: usb: Allow dynamic emulated USB device descriptors Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 12/26] sandbox: usb: Allow up to 4 emulated devices on a hub Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 13/26] sandbox: usb: Allow finding a USB emulator for a device Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 14/26] Revert "dm: usb: Rename usb_find_child to usb_find_emul_child" Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 15/26] Revert "dm: usb: Use device_unbind_children to clean up usb devs on stop" Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 16/26] Revert "dm: Export device_remove_children / device_unbind_children" Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:47 ` [U-Boot] [PATCH v2 17/26] dm: usb: Deprecate usb_get_dev_index() Simon Glass
2015-11-20 3:31 ` Simon Glass
2015-11-09 6:48 ` [U-Boot] [PATCH v2 18/26] dm: usb: Remove inactive children after a bus scan Simon Glass
2015-11-09 8:22 ` Hans de Goede [this message]
2015-11-09 20:25 ` Simon Glass
2015-11-10 23:30 ` Simon Glass
2015-11-11 17:02 ` Hans de Goede
2015-11-11 18:15 ` Simon Glass
2015-11-12 14:08 ` Hans de Goede
2015-11-13 21:58 ` Simon Glass
2015-11-15 19:35 ` Hans de Goede
2015-11-16 21:08 ` Simon Glass
2015-11-20 3:32 ` Simon Glass
2015-11-11 17:03 ` Hans de Goede
2015-11-09 6:48 ` [U-Boot] [PATCH v2 19/26] dm: test: usb: Add tests for the 'usb tree' command Simon Glass
2015-11-20 3:32 ` Simon Glass
2015-11-09 6:48 ` [U-Boot] [PATCH v2 20/26] dm: test: usb: Add a test for device reordering Simon Glass
2015-11-20 3:32 ` Simon Glass
2015-11-09 6:48 ` [U-Boot] [PATCH v2 21/26] usb: Drop unused code in usb_kbd.c Simon Glass
2015-11-20 3:32 ` Simon Glass
2015-11-09 6:48 ` [U-Boot] [PATCH v2 22/26] usb: Avoid open-coded USB constants " Simon Glass
2015-11-20 3:32 ` Simon Glass
2015-11-09 6:48 ` [U-Boot] [PATCH v2 23/26] usb: sandbox: Add support for interrupt operations Simon Glass
2015-11-20 3:32 ` Simon Glass
2015-11-09 6:48 ` [U-Boot] [PATCH v2 24/26] usb: sandbox: Add a USB emulation driver Simon Glass
2015-11-20 3:32 ` Simon Glass
2015-11-09 6:48 ` [U-Boot] [PATCH v2 25/26] sandbox: Enable USB keyboard Simon Glass
2015-11-20 3:32 ` Simon Glass
2015-11-09 6:48 ` [U-Boot] [PATCH v2 26/26] dm: test: usb: sandbox: Add keyboard tests for sandbox Simon Glass
2015-11-20 3:32 ` Simon Glass
2015-11-09 8:14 ` [U-Boot] [PATCH v2 00/26] usb: Drop requirement for USB unbinding, add tests Hans de Goede
2015-11-09 16:54 ` Simon Glass
2015-11-18 15:53 ` Simon Glass
2015-11-09 14:17 ` Marek Vasut
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=564057DC.1000809@redhat.com \
--to=hdegoede@redhat.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox