diff options
| author | Jack Pham <jackp@codeaurora.org> | 2016-02-10 16:44:27 -0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 21:25:53 -0700 |
| commit | 40a697724b89211485416d5a9a4eafd4d906cd15 (patch) | |
| tree | b9a1e5620e7fb24ab63d1d750b4576321b9458f0 /include/uapi/linux/ppdev.h | |
| parent | 7f5ffc4abd4c2cfe7148897f95d4462a123affea (diff) | |
usb: dwc3-msm: Fix incorrect roles with multiple instances
dwc3_init_sm() uses a static boolean variable which does not
play nicely when multiple instances are in use. For instance
if one controller is configured in host-only mode, it would
set the sm_initialized flag and can force the second controller
to also see ID=0 and enter host mode even if it is a peripheral.
The false ID=0 is actually caused by the init sequence never
actually setting the initial inputs bit, so the state machine
simply sees it as unset and proceeds to the A_IDLE case. Fix this
by setting it to 1 to match the id_state=FLOAT during probe().
Furthermore, there is no longer any use case for the vbus_init
completion since the state machine should only be entered upon
event changes anyway. So removing that can allow us to get rid
of dwc3_init_sm() entirely. Also ensure that sm_work is
unconditionally flushed before processing the initial events.
CRs-Fixed: 974882
Change-Id: I48e361a622bffa62ab7fa4c8d2e6719e66b90076
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Diffstat (limited to 'include/uapi/linux/ppdev.h')
0 files changed, 0 insertions, 0 deletions
