diff options
author | Guan-Yu Lin <guanyulin@google.com> | 2023-09-15 18:53:20 +0800 |
---|---|---|
committer | Will McVicker <willmcvicker@google.com> | 2024-04-16 11:58:49 -0700 |
commit | 5b3f06f18d9114f5c7c28eddf0d1a503ec2874f1 (patch) | |
tree | 722862df562318627f290b2c378b4c4a5d8ee892 | |
parent | cabb324f297cd200cbec92205b493cbad2e520c3 (diff) | |
download | raviole-device-5b3f06f18d9114f5c7c28eddf0d1a503ec2874f1.tar.gz |
usb: dwc3: gadget mode engagement during aoc ssr
Handle the case when pixel attempts to enter gadget mode during AoC SSR.
This patch defer the enumeration until AoC SSR is finished. dwc3_otg_fsm
should not accept any state change during AoC SSR, except when gadget
mode ends during AoC SSR. In this case, OTG_STATE_B_PERIPHERAL ->
OTG_STATE_UNDEFINED is expected.
Bug: 297480242
Test: The following 4 tests passed:
1. AoC SSR during host mode.
2. AoC SSR during gadget mode.
3. Host mode starts/ends during AoC SSR.
4. Gadget mode starts/ends during AoC SSR.
Change-Id: I37763a5b728e58b4a43a454d5696ba04e8a73878
Signed-off-by: Guan-Yu Lin <guanyulin@google.com>
-rw-r--r-- | drivers/usb/dwc3/dwc3-exynos-otg.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/usb/dwc3/dwc3-exynos-otg.c b/drivers/usb/dwc3/dwc3-exynos-otg.c index b717bd1bb..81563ce14 100644 --- a/drivers/usb/dwc3/dwc3-exynos-otg.c +++ b/drivers/usb/dwc3/dwc3-exynos-otg.c @@ -871,7 +871,9 @@ int dwc3_otg_fsm_try_reset(bool reset) otg = fsm->otg; dotg = container_of(otg, struct dwc3_otg, otg); dotg->fsm_reset = reset; - if (!fsm->b_sess_vld) + + // Skip role switch when we are resetting in gadget state + if (!(dotg->fsm_reset && fsm->b_sess_vld)) dwc3_otg_run_sm(fsm); return 0; |