From: John Youn <John.Youn@synopsys.com>
To: Doug Anderson <dianders@chromium.org>,
John Youn <John.Youn@synopsys.com>
Cc: Stefan Wahren <stefan.wahren@i2se.com>,
Michael Niewoehner <linux@mniewoehner.de>,
Tao Huang <huangtao@rock-chips.com>,
Julius Werner <jwerner@chromium.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
Caesar Wang <caesar.upstream@gmail.com>,
Heiko Stuebner <heiko@sntech.de>, Felipe Balbi <balbi@kernel.org>,
Remi Pommarel <repk@triplefau.lt>,
Kever Yang <kever.yang@rock-chips.com>
Subject: Re: [RFT PATCH 2/2] Revert "usb: dwc2: Fix probe problem on bcm2835"
Date: Tue, 22 Mar 2016 13:37:26 -0700 [thread overview]
Message-ID: <56F1AD06.1010301@synopsys.com> (raw)
In-Reply-To: <CAD=FV=UGW7pCjVh1cjKDHs3yDni5RY-qtbMJP7qDp1cAPbJ2uQ@mail.gmail.com>
On 3/22/2016 12:44 PM, Doug Anderson wrote:
> John,
>
> On Tue, Mar 22, 2016 at 12:26 PM, John Youn <John.Youn@synopsys.com> wrote:
>> Thanks for the debug logs and everyones help.
>>
>> After reviewing with our hardware engineers, it seems this is likely
>> to do with the IDDIG debounce filtering when switching between
>> modes. You can see if this is enabled in your core by checking
>> GHWCFG4.IddgFltr.
>>
>> From the databook:
>>
>> OTG_EN_IDDIG_FILTER
>>
>> Specifies whether to add a filter on the "iddig" input from the
>> PHY. If your PHY already has a filter on iddig for de-bounce, then
>> it is not necessary to enable the one in the DWC_otg. The filter
>> is implemented in the DWC_otg_wpc module as a 20-bit counter that
>> works on the PHY clock. In the case of the UTMI+ PHY, this pin is
>> from the PHY. In the case of the ULPI PHY, this signal is
>> generated by the ULPI Wrapper inside the core.
>>
>>
>> This only affects OTG cores and the delay is 10ms for 30MHz PHY clock
>> and 50ms with a 6MHz PHY clock.
>
> Wow, nice to have it so perfectly explained! :)
>
>
>> The reason we see this after a reset is that by default the IDDIG
>> indicates device mode. But if the id pin is set to host the core will
>> immediately detect it after the reset and trigger the filtering delay
>> before changing to host mode.
>>
>> This delay is also triggered by force mode. This is the origin of the
>> 25 ms delay specified in the databook. The databook did not take into
>> account that there might be a 6MHz clock so this delay could actually
>> be up to 50 ms. So we aren't delaying enough time for those cases.
>>
>> I think this explains all the problems and platform differences we are
>> seeing related to this.
>>
>> I think we can just add an IDDIG delay after a force mode, a clear
>> force mode, and any time after reset where we don't do either a force
>> or clear force mode immediately afterwards. Maybe set the delay time
>> via a core parameter or measure it once on probe. Or we can probably
>> just poll for the mode change in all of the above conditions.
>
> The driver seems to be able to figure out the PHY clock in most cases
> in dwc2_calc_frame_interval(). It doesn't seem to handle 6MHz there,
> though. I wonder if that's another bug?
>
> Polling seems fine too, though.
>
>
>> Are you able to continue looking into this? If not, I can take it up.
>
> I'm pretty much out of time at this point and it sounds like you've
> though through all of the corner cases. If you can take it up that
> would be wonderful! :) I'm happy to give the patches a test, though!
> :)
>
Ok sure. I'll try to get something testable within a few days.
Regards,
John
next prev parent reply other threads:[~2016-03-22 20:37 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-04 18:23 [RFT PATCH 1/2] usb: dwc2: Add a 10 ms delay to dwc2_core_reset() Douglas Anderson
2016-03-04 18:23 ` [RFT PATCH 2/2] Revert "usb: dwc2: Fix probe problem on bcm2835" Douglas Anderson
2016-03-04 22:54 ` Michael Niewoehner
2016-03-07 18:40 ` Stefan Wahren
2016-03-07 21:30 ` Doug Anderson
2016-03-08 17:49 ` Stefan Wahren
2016-03-09 19:01 ` Stefan Wahren
2016-03-09 19:06 ` Doug Anderson
2016-03-10 19:14 ` John Youn
2016-03-16 18:28 ` John Youn
2016-03-18 23:14 ` Stefan Wahren
2016-03-19 2:17 ` Eric Anholt
2016-03-19 7:44 ` Martin Sperl
2016-03-19 9:52 ` Stefan Wahren
2016-03-19 10:10 ` Martin Sperl
2016-03-19 12:09 ` Stefan Wahren
2016-03-19 9:45 ` Stefan Wahren
2016-03-19 5:21 ` Doug Anderson
2016-03-22 19:26 ` John Youn
2016-03-22 19:44 ` Doug Anderson
2016-03-22 20:37 ` John Youn [this message]
2016-03-24 6:18 ` John Youn
2016-03-04 22:54 ` [RFT PATCH 1/2] usb: dwc2: Add a 10 ms delay to dwc2_core_reset() Michael Niewoehner
2016-03-05 0:09 ` Michael Niewoehner
2016-03-05 0:33 ` Doug Anderson
2016-03-05 1:09 ` Doug Anderson
2016-03-05 20:41 ` Michael Niewoehner
2016-03-06 1:38 ` Doug Anderson
2016-03-04 23:46 ` Karl Palsson
2016-03-05 0:36 ` Doug Anderson
2016-03-04 23:52 ` Sergei Shtylyov
2016-03-05 2:23 ` John Youn
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=56F1AD06.1010301@synopsys.com \
--to=john.youn@synopsys.com \
--cc=balbi@kernel.org \
--cc=caesar.upstream@gmail.com \
--cc=dianders@chromium.org \
--cc=gregkh@linuxfoundation.org \
--cc=heiko@sntech.de \
--cc=huangtao@rock-chips.com \
--cc=jwerner@chromium.org \
--cc=kever.yang@rock-chips.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=linux@mniewoehner.de \
--cc=repk@triplefau.lt \
--cc=stefan.wahren@i2se.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).