RE: [PATCH v1 00/20] usb: third series of updates for dwc2 driver

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

 




> -----Original Message-----
> From: John Youn [mailto:John.Youn@xxxxxxxxxxxx]
> Sent: Thursday, March 19, 2015 11:55 PM
> To: Kaukab, Yousaf; John Youn; linux-usb@xxxxxxxxxxxxxxx; balbi@xxxxxx
> Cc: Herrero, Gregory; r.baldyga@xxxxxxxxxxx;
> dinguyen@xxxxxxxxxxxxxxxxxxxxx; zhangfei.gao@xxxxxxxxxx
> Subject: Re: [PATCH v1 00/20] usb: third series of updates for dwc2 driver
> 
> On 3/19/2015 8:53 AM, Kaukab, Yousaf wrote:
> >
> >
> >> -----Original Message-----
> >> From: John Youn [mailto:John.Youn@xxxxxxxxxxxx]
> >> Sent: Wednesday, March 18, 2015 8:14 PM
> >> To: Kaukab, Yousaf; John Youn; linux-usb@xxxxxxxxxxxxxxx;
> >> balbi@xxxxxx
> >> Cc: Herrero, Gregory; r.baldyga@xxxxxxxxxxx;
> >> dinguyen@xxxxxxxxxxxxxxxxxxxxx; zhangfei.gao@xxxxxxxxxx
> >> Subject: Re: [PATCH v1 00/20] usb: third series of updates for dwc2
> >> driver
> >>
> >> On 3/18/2015 8:45 AM, Kaukab, Yousaf wrote:
> >>>
> >>>
> >>>> -----Original Message-----
> >>>> From: John Youn [mailto:John.Youn@xxxxxxxxxxxx]
> >>>> Sent: Wednesday, March 18, 2015 3:33 AM
> >>>> To: Kaukab, Yousaf; linux-usb@xxxxxxxxxxxxxxx; balbi@xxxxxx;
> >>>> john.youn@xxxxxxxxxxxx
> >>>> Cc: Herrero, Gregory; r.baldyga@xxxxxxxxxxx;
> >>>> dinguyen@xxxxxxxxxxxxxxxxxxxxx; zhangfei.gao@xxxxxxxxxx
> >>>> Subject: Re: [PATCH v1 00/20] usb: third series of updates for dwc2
> >>>> driver
> >>>>
> >>>> On 3/17/2015 2:54 AM, Mian Yousaf Kaukab wrote:
> >>>>> Hi,
> >>>>> This patchset consists of some bug fixes and feature enhancements
> >>>>> for the dwc2 driver. All the patches are verified on dwc2 v3.0a
> >>>>> with dedicated fifos. Main focus of testing was with dma enabled.
> >>>>> Although basic testing without dma was also done.
> >>>>>
> >>>>> This is based on testing/next branch in Felipe's git.
> >>>>>
> >>>>> Thank you,
> >>>>>
> >>>>> Best regards,
> >>>>> Yousaf
> >>>>>
> >>>>
> >>>> Hi Yousaf,
> >>>>
> >>>> Patch 15 and 16 introduce regressions in two systems that I tested with.
> >>>
> >>> :( sorry for that. I will try to fix this asap.
> >>>
> >>>>
> >>>> After patch 15, the host fails to work at all.
> >>>
> >>> My understanding is that functionality can break within the patchset
> >>> but it
> >> should build at any point. If that's not correct, is merging patch 15
> >> and 16 OK for you?
> >>>
> >>
> >> Ok that's fine. Just thought I'd point out where the breakage started.
> >>
> >>
> >>>>
> >>>> After patch 16, the host works but the device fails enumeration
> >>>> whenever switching from an A to B cable, going from host to
> >>>> peripheral. After this fails, if you unplug and replug the B cable
> >>>> it will enumerate. But whenever you switch from A to B it always fails.
> >>>>
> >>>> Tested on a Synopsys (2.94a) and Altera (2.93a) system.
> >>>>
> >>>> I don't have any logs right now but I can get those tomorrow if you
> >>>> need
> >> them.
> >>>
> >>> It will be very helpful if you can provide log after
> >> CONFUG_USB_DWC2_DEBUG enabled and also function trace of dwc2
> driver.
> >>>
> >>
> >> Logs attached. First is device connection after driver load. Second
> >> is after role switch.
> >>
> >> Seems to fail both times with similar error.
> >>
> >> Relevant snippet:
> >>
> >> [   77.814073] dwc2 dwc2.1.auto: gintsts=44008020  gintmsk=d08c3cd4
> >> [   77.814079] dwc2 dwc2.1.auto: ++Session Request Interrupt++
> >> [   77.814091] dwc2 dwc2.1.auto: s3c_hsotg_irq: 04008020 00000000
> >> (d08c3cd4) retry 8
> >> [   77.817097] dwc2 dwc2.1.auto: s3c_hsotg_irq: 04008420 00000400
> >> (d08c3cd4) retry 8
> >> [   77.817102] dwc2 dwc2.1.auto: GINTSTS_ErlySusp
> >> [   77.820189] dwc2 dwc2.1.auto: gintsts=04008820  gintmsk=d08c3cd4
> >> [   77.820194] dwc2 dwc2.1.auto: USB SUSPEND
> >> [   77.820202] dwc2 dwc2.1.auto: DSTS=0x3
> >> [   77.820204] dwc2 dwc2.1.auto: DSTS.Suspend Status=1 HWCFG4.Power
> >> Optimize=0
> >> [   77.820213] dwc2 dwc2.1.auto: s3c_hsotg_irq: 04008020 00000000
> >> (d08c3cd4) retry 8
> >> [   78.074297] dwc2 dwc2.1.auto: s3c_hsotg_irq: 04009020 00001000
> >> (d08c3cd4) retry 8
> >> [   78.074305] dwc2 dwc2.1.auto: s3c_hsotg_irq: USBRst
> >> [   78.074310] dwc2 dwc2.1.auto: GNPTXSTS=00040400
> >> [   78.074314] dwc2 dwc2.1.auto: complete: ep ffff8800d50ce618 ep0, req
> >> ffff8800d524ae80, -104 => ffffffffa042be00
> >> [   78.074317] dwc2 dwc2.1.auto: s3c_hsotg_complete_setup: failed -104
> >> [   78.074326] dwc2 dwc2.1.auto: FIFOs reset, timeout at 100
> >> [   78.074343] dwc2 dwc2.1.auto: EP0: DIEPCTL0=0x00008000,
> >> DOEPCTL0=0x80008000
> >> [   78.074347] dwc2 dwc2.1.auto: gsintmsk now 0xd08c3cc4
> >> [   78.074351] dwc2 dwc2.1.auto: gsintmsk now 0xd08c3cd4
> >> [   78.074361] dwc2 dwc2.1.auto: DCTL=0x00000000
> >> [   78.074362] dwc2 dwc2.1.auto: s3c_hsotg_enqueue_setup: queueing setup
> >> request
> >> [   78.074363] dwc2 dwc2.1.auto: ep0: req ffff8800d524ae80:
> >> 8@ffff8801199df798, noi=0, zero=0, snok=0
> >> [   78.074364] dwc2 dwc2.1.auto: s3c_hsotg_ep_queue: don't submit request
> >> while suspended
> >> [   78.074365] dwc2 dwc2.1.auto: s3c_hsotg_enqueue_setup: failed queue (-
> 11)
> >> [   78.074372] dwc2 dwc2.1.auto: EP0: DIEPCTL0=0x00008000,
> >> DOEPCTL0=0x80008000
> >> [   78.085364] dwc2 dwc2.1.auto: s3c_hsotg_irq: 04002020 00002000
> >> (d08c3cd4) retry 8
> >> [   78.085372] dwc2 dwc2.1.auto: EnumDone (DSTS=0x00000000)
> >> [   78.085375] dwc2 dwc2.1.auto: new device is high-speed
> >> [   78.085415] dwc2 dwc2.1.auto: s3c_hsotg_enqueue_setup: queueing setup
> >> request
> >> [   78.085416] dwc2 dwc2.1.auto: ep0: req ffff8800d524ae80:
> >> 8@ffff8801199df798, noi=0, zero=0, snok=0
> >> [   78.085417] dwc2 dwc2.1.auto: s3c_hsotg_ep_queue: don't submit request
> >> while suspended
> >> [   78.085418] dwc2 dwc2.1.auto: s3c_hsotg_enqueue_setup: failed queue (-
> 11)
> >> [   78.085424] dwc2 dwc2.1.auto: EP0: DIEPCTL0=0x00008000,
> >> DOEPCTL0=0x80008000
> >
> > Thank you for the traces. Lx_state is not being updated if vbus_session() is not
> called. So we need to set lx_state to L0 on B session valid. Can you please check
> if following patch helps:
> >
> > diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> > index e1e7ab7..54a1c11 100644
> > --- a/drivers/usb/dwc2/gadget.c
> > +++ b/drivers/usb/dwc2/gadget.c
> > @@ -2515,6 +2515,7 @@ irq_retry:
> >                                 kill_all_requests(hsotg, hsotg->eps_out[0],
> >
> > -ECONNRESET);
> >
> > +                               hsotg->lx_state = DWC2_L0;
> >                                 s3c_hsotg_core_init_disconnected(hsotg, true);
> >                         }
> >                 }
> >
> 
> Yes, this fixes it.

Thank you for testing it.
I am thinking about adding a patch to enable hibernation from core parameters any way.

> 
> John

BR,
Yousaf

��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥





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

  Powered by Linux