From: John Youn <John.Youn@synopsys.com>
To: Roy <yunzhi.li@foxmail.com>,
"John.Youn@synopsys.com" <John.Youn@synopsys.com>,
Felipe Balbi <balbi@ti.com>
Cc: "Yunzhi Li" <lyz@rock-chips.com>,
"jwerner@chromium.org" <jwerner@chromium.org>,
"gregory.herrero@intel.com" <gregory.herrero@intel.com>,
"yousaf.kaukab@intel.com" <yousaf.kaukab@intel.com>,
"r.baldyga@samsung.com" <r.baldyga@samsung.com>,
"Dinh Nguyen" <dinguyen@opensource.altera.com>,
"Eddie Cai" <cf@rock-chips.com>, "Lin Huang" <hl@rock-chips.com>,
wulf <wulf@rock-chips.com>, 杨凯 <yk@rock-chips.com>,
"Tao Huang" <huangtao@rock-chips.com>,
"walkrain@126.com" <walkrain@126.com>,
"Douglas Anderson" <dianders@chromium.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [RFC PATCH v1] usb: dwc2: reduce dwc2 driver probe time
Date: Wed, 11 Feb 2015 19:33:17 -0800 [thread overview]
Message-ID: <54DC1EFD.1050306@synopsys.com> (raw)
In-Reply-To: <54DB3FBF.7010003@foxmail.com>
On 2/11/2015 3:42 AM, Roy wrote:
> Hi John Youn:
>
> Could you please give some suggestions from your point of view,
> about this probe time issue ?
>
> Thanks a lot.
>
> at 2015/2/11 2:23, Julius Werner wrote:
>>> @@ -2703,7 +2703,7 @@ int dwc2_get_hwparams(struct dwc2_hsotg *hsotg)
>>> gusbcfg = readl(hsotg->regs + GUSBCFG);
>>> gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
>>> writel(gusbcfg, hsotg->regs + GUSBCFG);
>>> - usleep_range(100000, 150000);
>>> + usleep_range(25000, 50000);
>> The point of usleep_range() is to coalesce multiple timer interrupts
>> in idle systems for power efficiency. It's pretty pointless/harmful
>> during probe anyway and there's almost never a reason to make the span
>> larger than a few milliseconds. You should reduce this to something
>> reasonable (e.g. usleep_range(25000, 26000) or even
>> usleep_range(25000, 25000)) to save another chunk of time. Same
>> applies to other delays above.
Databook does say 25ms. From what I could gather this has to
do with the debounce filter time on the IDDIG pin after the
ForceHstMode/ForceDevMode is programmed. There is no way to
poll this. I think the change is acceptable, even to lower
the range as Julius suggested.
>>
>>> do you know what's the upper boundary for AHB clock ? How fast can it
>>> be? It's not wise to change timers because "it works on my RK3288
>>> board", you need to guarantee that this won't break anybody else.
>> But this code is already a loop that spins on the AHBIdle bit, right?
>> It should work correctly regardless of the delay. The only question is
>> whether the code could be more efficient with a longer sleep... but
>> since the general recommendation is to delay for ranges less than
>> 10us, and the AHB clock would need to be lower than 100KHz (the ones I
>> see are usually in the range of tens or hundreds of MHz) to take
>> longer than that, this seems reasonable to me.
Agree with this. It shouldn't take nearly that long and you are
polling anyways.
As for the other change:
> It seems that usleep_range() at boot time will pick the longest
> value in the range. In dwc2_core_reset() there is a very long
> delay takes 200ms, and this function run twice when probe, could
> any one tell me is this delay time resonable ?
I'm not sure about this value or the reasoning/history behind
it. It is not in our internal code. It looks like it is taking
into account the delay for the ForceHstMode/ForceDevMode
programming. However, I think your change is conservative and
should be ok. Maybe Samsung engineers know about this?
John
next prev parent reply other threads:[~2015-02-12 3:33 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-10 14:05 [RFC PATCH v1] usb: dwc2: reduce dwc2 driver probe time Yunzhi Li
2015-02-10 14:47 ` Felipe Balbi
2015-02-10 18:23 ` Julius Werner
2015-02-11 11:40 ` Roy
2015-02-12 3:33 ` John Youn [this message]
2015-02-12 13:21 ` Kaukab, Yousaf
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=54DC1EFD.1050306@synopsys.com \
--to=john.youn@synopsys.com \
--cc=balbi@ti.com \
--cc=cf@rock-chips.com \
--cc=dianders@chromium.org \
--cc=dinguyen@opensource.altera.com \
--cc=gregkh@linuxfoundation.org \
--cc=gregory.herrero@intel.com \
--cc=hl@rock-chips.com \
--cc=huangtao@rock-chips.com \
--cc=jwerner@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=lyz@rock-chips.com \
--cc=r.baldyga@samsung.com \
--cc=walkrain@126.com \
--cc=wulf@rock-chips.com \
--cc=yk@rock-chips.com \
--cc=yousaf.kaukab@intel.com \
--cc=yunzhi.li@foxmail.com \
/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.