summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuan-Yu Lin <guanyulin@google.com>2023-09-15 18:53:20 +0800
committerWill McVicker <willmcvicker@google.com>2024-04-16 11:58:49 -0700
commit5b3f06f18d9114f5c7c28eddf0d1a503ec2874f1 (patch)
tree722862df562318627f290b2c378b4c4a5d8ee892
parentcabb324f297cd200cbec92205b493cbad2e520c3 (diff)
downloadraviole-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.c4
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;