summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLi Jun <B47624@freescale.com>2014-09-24 14:35:31 +0800
committerLeonard Crestez <leonard.crestez@nxp.com>2018-08-23 16:56:03 +0300
commit93740fd6609dd5266f3db5125d78e95525e6288f (patch)
treedaaae3444c3c41cab33651098f11bb2986984f8c /drivers
parent78aa6e5136584d1ae787f90b93d9717cdd7a3337 (diff)
MLK-9606-4 usb: chipidea: otg: test: tst_maint timer implementation
This patch implements otg test device session maintain timer, if the timer expires, A device as host should end the session, and clear tst_maint flag when turn off vbus. Acked-by: Peter Chen <peter.chen@freescale.com> Signed-off-by: Li Jun <b47624@freescale.com> (cherry picked from commit 9d3bd049aef442f11dce77226a0ca09893a6656b)
Diffstat (limited to 'drivers')
-rw-r--r--drivers/usb/chipidea/otg_fsm.c19
-rw-r--r--drivers/usb/chipidea/otg_fsm.h3
2 files changed, 22 insertions, 0 deletions
diff --git a/drivers/usb/chipidea/otg_fsm.c b/drivers/usb/chipidea/otg_fsm.c
index e8486d524b13..7e2fca1d45f0 100644
--- a/drivers/usb/chipidea/otg_fsm.c
+++ b/drivers/usb/chipidea/otg_fsm.c
@@ -219,6 +219,8 @@ static unsigned otg_timer_ms[] = {
TB_DATA_PLS,
TB_SSEND_SRP,
TA_DP_END,
+ TA_TST_MAINT,
+ 0,
};
/*
@@ -371,6 +373,21 @@ static int a_dp_end_tmout(struct ci_hdrc *ci)
return 0;
}
+static int a_tst_maint_tmout(struct ci_hdrc *ci)
+{
+ ci->fsm.tst_maint = 0;
+ if (ci->fsm.otg_vbus_off) {
+ ci->fsm.otg_vbus_off = 0;
+ dev_dbg(ci->dev,
+ "test device does not disconnect, end the session!\n");
+ }
+
+ /* End the session */
+ ci->fsm.a_bus_req = 0;
+ ci->fsm.a_bus_drop = 1;
+ return 0;
+}
+
/*
* Keep this list in the same order as timers indexed
* by enum otg_fsm_timer in include/linux/usb/otg-fsm.h
@@ -389,6 +406,8 @@ static int (*otg_timer_handlers[])(struct ci_hdrc *) = {
b_data_pls_tmout, /* B_DATA_PLS */
b_ssend_srp_tmout, /* B_SSEND_SRP */
a_dp_end_tmout, /* A_DP_END */
+ a_tst_maint_tmout, /* A_TST_MAINT */
+ NULL, /* HNP_POLLING */
};
/*
diff --git a/drivers/usb/chipidea/otg_fsm.h b/drivers/usb/chipidea/otg_fsm.h
index 96b79a501bdd..c93461513739 100644
--- a/drivers/usb/chipidea/otg_fsm.h
+++ b/drivers/usb/chipidea/otg_fsm.h
@@ -44,6 +44,9 @@
*/
#define TA_DP_END (200)
+#define TA_TST_MAINT (9900) /* OTG test device session maintain
+ * timer, 9.9s~10.1s
+ */
/*
* B-device timing constants