[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAD=FV=VYhxNzUS5U6xM1DBvqQEO2gXmBuWqvK4M2qCg-dbY7YQ@mail.gmail.com>
Date: Thu, 8 Oct 2015 10:34:49 -0700
From: Doug Anderson <dianders@...omium.org>
To: John Youn <John.Youn@...opsys.com>
Cc: Yunzhi Li <lyz@...k-chips.com>,
Heiko Stübner <heiko@...ech.de>,
"open list:ARM/Rockchip SoC..." <linux-rockchip@...ts.infradead.org>,
Julius Werner <jwerner@...omium.org>,
Douglas Anderson <dianders@...omium.org>,
John Youn <johnyoun@...opsys.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
"linux-usb@...r.kernel.org" <linux-usb@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 3/5] CHROMIUM: usb: dwc2: Avoid double-reset at boot time
Hi,
On Wed, Oct 7, 2015 at 5:48 PM, Douglas Anderson <dianders@...omium.org> wrote:
> In (usb: dwc2: reset dwc2 core before dwc2_get_hwparams()) we added an
> extra reset to the probe path for the dwc2 USB controllers. This
> allowed proper detection of parameters even if the firmware had already
> used the USB part.
>
> Unfortunately, this extra reset is quite slow and is affecting boot
> speed. We can avoid the double-reset by skipping the extra reset that
> would happen just after the one we added. Logic that explains why this
> is safe:
>
> * As of the CL mentioned above, we now always call dwc2_core_reset() in
> dwc2_driver_probe() before dwc2_hcd_init().
>
> * The only caller of dwc2_hcd_init() is dwc2_driver_probe(), so we're
> guaranteed that dwc2_core_reset() was called before dwc2_hdc_init().
>
> * dwc2_hdc_init() is the only caller that passes an irq other than -1 to
> dwc2_core_init(). Thus if dwc2_core_init() is called with an irq
> other than -1 we're guaranteed that dwc2_core_reset was called before
> dwc2_core_init().
>
> ...this allows us to remove the dwc2_core_reset() in dwc2_core_init() if
> irq is not < 0.
>
> Note that since "irq" wasn't used in the function dwc2_core_init()
> anyway and since select_phy was always set at exactly the same times we
> could avoid the reset, we remove "irq" and rename "select_phy" to
> "initial_setup" and adjust the callers accordingly.
>
> Signed-off-by: Douglas Anderson <dianders@...omium.org>
> ---
> drivers/usb/dwc2/core.c | 29 ++++++++++++++++++-----------
> drivers/usb/dwc2/core.h | 2 +-
> drivers/usb/dwc2/hcd.c | 6 +++---
> 3 files changed, 22 insertions(+), 15 deletions(-)
Obviously I stupidly forgot to remove the "CHROMIUM" prefix on this
patch. :( Sorry about that. I can repost if necessary...
-Doug
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists