Re: link state problem with dwc3 in supper-speed device mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 25, 2016 at 04:08:50PM +0300, Felipe Balbi wrote:
> 
> Hi,
> 
> Bin Liu <b-liu@xxxxxx> writes:
> >> >> > I run into a link state problem when dwc3 is in supper-speed device
> >> >> > mode.
> >> >> >
> >> >> > Modprobe g_zero, link state is U3 (checked in DSTS).
> >> >> >
> >> >> > After dwc3 is enumerated by the host, the trace on the bus is as:
> >> >> >
> >> >> > [both Device and Host are in U0 now]
> >> >> > D->H: LGO_U1
> >> >> > H->D: LAU
> >> >> > D->H: LPMA
> >> >> >
> >> >> > but actually dwc3 goes to U2. Is this expected?
> >> >> 
> >> >> That's host putting the bus to U2 due to inactivity. No problems there.
> >> >> 
> >> >> > Now remove the cable from the host, but dwc3 does not generate any
> >> >> > change, link state is still in U2, no any ftrace log either from the
> >> >> > point when removing the cable.
> >> >> 
> >> >> Are you missing a disconnect interrupt? Which revision of dwc3 are you
> >> >
> >> > Yes, no disconnect interrupt in the first detach.
> >> 
> >> yeah, that confuses dwc3 quite a bit :-) This controller won't do
> >> anything if it doesn't know about voltage levels.
> >> 
> >> >> dealing with? Which SoC is this? Do you have that TI mailbox to generate
> >> >
> >> > This is TI AM57x on DRA7-EVM. dwc3 version is 2.02a.
> >> 
> >> Why aren't you using the UTMI mailbox? There's even a driver written for
> >> it already.
> >
> > Yes, the driver is there. Right now mailbox is only used for ID pin.
> > But the board does not register extcon for VBUS detect, so the mailbox
> > is not used for VBUS events.
> 
> Seems like dwc3-omap doesn't like ID-only boards. I remember that used
> to work just fine. Maybe track down the regression?

Do you mean this DRA7-EVM used to work? This is the only AM57x board I can
find which has SS device port. :-(

> 
> >> >> UTMI messages about VBUS levels? Are you programming that correctly to
> >> >> tell dwc3 VBUS is not valid anymore?
> >> >
> >> > There is no VBUS detection on this device and board. Is the VBUS
> >> > detection needed for dwc3 to work in device mode? 
> >> 
> >> In the case of DRA7x, you don't *really* need detection. All you need to
> >> do is correctly update UTMI mailbox.
> >
> > But the UTMI mailbox is driven by extcon events, right? The board
> > doesn't have external circuit or gpio to detect VBUS.
> 
> Then you should use ID event to *also* fiddle with VBUSVALID bit. That
> used to work just fine, I guess commit below broke it:
> 
> commit d2728fb3e01f9265571a5f7a5feeac4493d2a365
> Author: Roger Quadros <rogerq@xxxxxx>
> Date:   Wed May 11 17:36:45 2016 +0300
> 
>     usb: dwc3: omap: Pass VBUS and ID events transparently
>     
>     Don't make any decisions regarding VBUS session based on ID
>     status. That is best left to the OTG core.
>     
>     Pass ID and VBUS events independent of each other so that OTG
>     core knows exactly what to do.
>     
>     This makes dual-role with extcon work with OTG irq on OMAP platforms.
>     
>     Signed-off-by: Roger Quadros <rogerq@xxxxxx>
>     Signed-off-by: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx>
> 

Just reviewed this patch, it seems to be the regression. But SS should
not generate ID pin event either, right? SS uses far-end termination, it
does not have ID pin as USB2.0. I will try to revert this patch to find
out...

> >> > The problem only happens in supper-speed, not high-speed mode.
> >> 
> >> Now idea what to make of this, really. It's not a matter of speed, it's
> >> a matter of how UTMI behaves.
> >
> > Yeah, this confuses me too. I could modify the board to add a GPIO to
> > detect VBUS so that I can use the UTMI mailbox. But I wanted to really
> > know the problem before fixing it... HS works without using the mailbox,
> > but SS doesn't...
> 
> Gotta try to figure that one out. If you can't figure it out, there's no
> way to move forward.

I will try my best ;)

> 
> >> >> > Then remove the cable, dwc3 changes as follows in ftrace:
> >> >> >
> >> >> > RX.Detect
> >> >> > U0
> >> >> > U0
> >> >> > RX.Detect
> >> >> > U3
> >> >> >
> >> >> > Basically the host does not enumerate dwc3 in every another attach.
> >> >> >
> >> >> > Any comments about this problem? BTY, I checked with kernel v4.9-rc1,
> >> >> > v4.8, v4.4, v3.14 if it matters...
> >> >> 
> >> >> Sounds like a problem outside dwc3. Which SoC and which dwc3 revision?
> >> >
> >> > Inside dwc3, what makes dwc3 to generate the disconnect evt? rx/tx
> >> > remote termination or vbus disconnect?
> >> 
> >> VBUS valid being sent over UTMI, hence TI's UTMI mailbox ;-)
> >
> > Ok, I will modify the board to use the mailbox.
> 
> might wanna try reverting commit above before modifying your board.
> 
> -- 
> balbi

Thanks,
-Bin.

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux