All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v5 4/4] usb: Change power-on / scanning timeout handling
Date: Sat, 2 Apr 2016 23:21:10 +0200	[thread overview]
Message-ID: <570037C6.1040405@redhat.com> (raw)
In-Reply-To: <56FEF496.5010305@denx.de>

Hi,

On 04/02/2016 12:22 AM, Marek Vasut wrote:
> On 03/15/2016 01:59 PM, Stefan Roese wrote:
>> This patch changes the USB port scanning procedure and timeout
>> handling in the following ways:
>>
>> a)
>> The power-on delay in usb_hub_power_on() is now reduced to a value of
>> max(100ms, "hub->desc.bPwrOn2PwrGood * 2"). The code does not wait
>> using mdelay, instead usb_hub_power_on() will wait before querying
>> the device in the scanning loop later. The total timeout for this
>> hub, which is 1 second + "hub->desc.bPwrOn2PwrGood * 2" is calculated
>> and will be used in the following per-port scanning loop as the timeout
>> to detect active USB devices on this hub.
>>
>> b)
>> Don't delay the minimum delay (for power to stabilize) in
>> usb_hub_power_on(). Instead skip querying these devices in the scannig
>> loop until the delay time is reached.
>>
>> c)
>> The ports are now scanned in a quasi parallel way. The current code did
>> wait for each (unconnected) port to reach its timeout and only then
>> continue with the next port. This patch now changes this to scan all
>> ports of all USB hubs quasi simultaneously. For this, all ports are added
>> to a scanning list. This list is scanned until all ports are ready
>> by either a) reaching the connection timeout (calculated earlier), or
>> by b) detecting a USB device. This results in a faster USB scan time as
>> the recursive scanning of USB hubs connected to the hub that's currently
>> being scanned will start earlier.
>>
>> One small functional change to the original code is, that ports with
>> overcurrent detection will now get rescanned multiple times
>> (PORT_OVERCURRENT_MAX_SCAN_COUNT).
>>
>> Without this patch:
>> starting USB...
>> USB0:   USB EHCI 1.00
>> scanning bus 0 for devices... 9 USB Device(s) found
>>
>> time: 20.163 seconds
>>
>> With this patch:
>> starting USB...
>> USB0:   USB EHCI 1.00
>> scanning bus 0 for devices... 9 USB Device(s) found
>>
>> time: 1.822 seconds
>>
>> So ~18.3 seconds of USB scanning time reduction.
>>
>> Signed-off-by: Stefan Roese <sr@denx.de>
>> Acked-by: Hans de Goede <hdegoede@redhat.com>
>> Tested-by: Stephen Warren <swarren@nvidia.com>
>
> This breaks DWC2 on SoCkit, I can no longer detect any USB device.
> USB works without this patch though. Ideas?

Have you tried simply adding a large sleep before the
initial uart, or doing an "usb reset" after the initial
scan ?

The biggest change here is the change in timing ...

Also try defining debug printf in usb_hub.c and see what
output you get ?

Regards,

Hans

  reply	other threads:[~2016-04-02 21:21 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-15 12:59 [U-Boot] [PATCH v5 0/4] usb: Reduce USB scanning time Stefan Roese
2016-03-15 12:59 ` [U-Boot] [PATCH v5 1/4] usb: legacy_hub_port_reset(): Speedup hub reset handling Stefan Roese
2016-03-16  2:29   ` Bin Meng
2016-03-15 12:59 ` [U-Boot] [PATCH v5 2/4] usb: Remove 200 ms delay in usb_hub_port_connect_change() Stefan Roese
2016-03-16  2:29   ` Bin Meng
2016-03-15 12:59 ` [U-Boot] [PATCH v5 3/4] usb: Don't reset the USB hub a 2nd time Stefan Roese
2016-03-16  2:30   ` Bin Meng
2016-03-15 12:59 ` [U-Boot] [PATCH v5 4/4] usb: Change power-on / scanning timeout handling Stefan Roese
2016-03-15 13:07   ` Hans de Goede
2016-03-15 15:58   ` Stephen Warren
2016-03-16  2:31   ` Bin Meng
2016-04-01 22:22   ` Marek Vasut
2016-04-02 21:21     ` Hans de Goede [this message]
2016-04-27 23:07       ` Marek Vasut
2016-04-28  6:12         ` Stefan Roese
2016-03-15 19:53 ` [U-Boot] [PATCH v5 0/4] usb: Reduce USB scanning time Marek Vasut
2016-03-16  3:32   ` Simon Glass
2016-03-16  2:33 ` Bin Meng

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=570037C6.1040405@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.