Messages in this thread | | | From | Felipe Balbi <> | Subject | Re: [PATCH v3] usb: dwc3: core: fix a issue about clear connect state | Date | Tue, 27 Oct 2020 10:33:09 +0200 |
| |
Hi,
Dejin Zheng <zhengdejin5@gmail.com> writes: > According to Synopsys Programming Guide chapter 2.2 Register Resets, > it cannot reset the DCTL register by setting DCTL.CSFTRST for core soft > reset, if DWC3 controller as a slave device and stay connected with a usb > host, then, while rebooting linux, it will fail to reinitialize dwc3 as a > slave device when the DWC3 controller did not power off. because the > connection status is incorrect, so we also need to clear DCTL.RUN_STOP > bit for disabling connect when doing core soft reset. There will still > be other stale configuration in DCTL, so reset the other fields of DCTL > to the default value 0.
This commit log is a bit hard to understand. When does this problem actually happen? It seems like it's in the case of, perhaps, kexecing into a new kernel, is that right?
At the time dwc3_core_soft_reset() is called, the assumption is that we're starting with a clean core, from power up. If we have stale configuration from a previous run, we should fix this on the exit path. Note that if we're reaching probe with pull up connected, we already have issues elsewhere.
I think this is not the right fix for the problem.
-- balbi [unhandled content-type:application/pgp-signature]
| |