Hi, Dejin Zheng <zhengdej...@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
signature.asc
Description: PGP signature