Re: dwc2: composite device fails to reset "suspended" flag

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

 



Hi Frank,

On 12/24/2018 7:04 PM, Frank Mori Hess wrote:
> Hi Minas,
> 
> On Mon, Dec 24, 2018 at 12:41 AM Minas Harutyunyan
> <minas.harutyunyan@xxxxxxxxxxxx> wrote:
>>
>>>
>>> With DEBUG defined in dwc2/core_intr.c I get:
>>>
>>> #unplugging
>>> [  364.111260] dwc2 ffb00000.usb: GINTSTS_ErlySusp
>>> [  364.115831] dwc2 ffb00000.usb: gintsts=04008828  gintmsk=d08c3cc4
>>> [  364.121906] dwc2 ffb00000.usb: USB SUSPEND
>>> [  364.125994] dwc2 ffb00000.usb: dwc2_handle_usb_suspend_intr: DSTS=0x3cf701
>>> [  364.132844] dwc2 ffb00000.usb: DSTS.Suspend Status=1 HWCFG4.Power
>>> Optimize=0 HWCFG4.Hibernation=0
>>>
>> You didn't see dummy USBRst interrupt on disconnect, follow to above
>> interrupts?
>>
> 
> No, I only see the suspend interrupt when pulling the plug.  The
> USBRst happens after plugging back in.  It's actually not a problem
> for my use case if the device just appears suspended while the cable
> is disconnected, the problem is when the cable is plugged back in and
> the device still appears to be suspended.  So it's ok if the gadget
> disconnect doesn't happen until I plug back in.  Locally, I've
> addressed the problem by making the gadget/composite.c clear
> cdev->suspended in its gadget reset/disconnect handler.  I also made
> dwc2 generate gadget reset events, just because they seemed to have
> been overlooked (libcomposite uses the same handler for disconnect and
> reset so it doesn't make much difference in my case).
> 
> One other fact that may be relevant, I'm using a normal A/B usb cable,
> not an OTG cable.  So maybe that takes the OTG HNP and SRP protocols
> our of play and suppresses the session end interrupt?
> 
Which type of receptacle on the board?
Please provide full register dump.

Thanks,
Minas

>>
>>> #plugging back in
>>> [  526.407546] dwc2 ffb00000.usb: EnumDone (DSTS=0x003cf000)
>>> [  526.412936] dwc2 ffb00000.usb: new device is high-speed
>>> [  526.470634] dwc2 ffb00000.usb: GINTSTS_ErlySusp
>>> [  526.475204] dwc2 ffb00000.usb: dwc2_hsotg_irq: USBRst
>>> [  526.527561] dwc2 ffb00000.usb: EnumDone (DSTS=0x000e0000)
>>> [  526.532953] dwc2 ffb00000.usb: new device is high-speed
>>> [  526.587560] dwc2 ffb00000.usb: new address 6
>>> [  526.620544] g_serial gadget: high-speed config #2: CDC ACM config
>>>
> 
> 
> 





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

  Powered by Linux