Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01ecd156 authored by Li Jun's avatar Li Jun Committed by Greg Kroah-Hartman
Browse files

usb: chipidea: otg: remove unnecessary B_SESS_VLD timer



Since BSV irq is enabled for B-device all the time, so B_SESS_VLD timer
is not required, and also no need to check BSV status when B_ASE0_BRST
timer timeout.

Signed-off-by: default avatarLi Jun <jun.li@freescale.com>
Signed-off-by: default avatarPeter Chen <peter.chen@freescale.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 963719c8
Loading
Loading
Loading
Loading
+1 −30
Original line number Diff line number Diff line
@@ -320,17 +320,6 @@ static void a_wait_vfall_tmout_func(void *ptr, unsigned long indicator)
	ci_otg_queue_work(ci);
}

static void b_ase0_brst_tmout_func(void *ptr, unsigned long indicator)
{
	struct ci_hdrc *ci = (struct ci_hdrc *)ptr;

	set_tmout(ci, indicator);
	if (!hw_read_otgsc(ci, OTGSC_BSV))
		ci->fsm.b_sess_vld = 0;

	ci_otg_queue_work(ci);
}

static void b_ssend_srp_tmout_func(void *ptr, unsigned long indicator)
{
	struct ci_hdrc *ci = (struct ci_hdrc *)ptr;
@@ -342,18 +331,6 @@ static void b_ssend_srp_tmout_func(void *ptr, unsigned long indicator)
		ci_otg_queue_work(ci);
}

static void b_sess_vld_tmout_func(void *ptr, unsigned long indicator)
{
	struct ci_hdrc *ci = (struct ci_hdrc *)ptr;

	/* Check if A detached */
	if (!(hw_read_otgsc(ci, OTGSC_BSV))) {
		ci->fsm.b_sess_vld = 0;
		ci_otg_add_timer(ci, B_SSEND_SRP);
		ci_otg_queue_work(ci);
	}
}

static void b_data_pulse_end(void *ptr, unsigned long indicator)
{
	struct ci_hdrc *ci = (struct ci_hdrc *)ptr;
@@ -405,7 +382,7 @@ static int ci_otg_init_timers(struct ci_hdrc *ci)
		return -ENOMEM;

	ci->fsm_timer->timer_list[B_ASE0_BRST] =
		otg_timer_initializer(ci, &b_ase0_brst_tmout_func, TB_ASE0_BRST,
		otg_timer_initializer(ci, &set_tmout_and_fsm, TB_ASE0_BRST,
					(unsigned long)&fsm->b_ase0_brst_tmout);
	if (ci->fsm_timer->timer_list[B_ASE0_BRST] == NULL)
		return -ENOMEM;
@@ -433,11 +410,6 @@ static int ci_otg_init_timers(struct ci_hdrc *ci)
	if (ci->fsm_timer->timer_list[B_DATA_PLS] == NULL)
		return -ENOMEM;

	ci->fsm_timer->timer_list[B_SESS_VLD] =	otg_timer_initializer(ci,
					&b_sess_vld_tmout_func, TB_SESS_VLD, 0);
	if (ci->fsm_timer->timer_list[B_SESS_VLD] == NULL)
		return -ENOMEM;

	return 0;
}

@@ -671,7 +643,6 @@ static void ci_otg_fsm_event(struct ci_hdrc *ci)
			fsm->a_conn = 0;
			fsm->b_bus_req = 0;
			ci_otg_queue_work(ci);
			ci_otg_add_timer(ci, B_SESS_VLD);
		}
		break;
	case OTG_STATE_A_PERIPHERAL:
+0 −3
Original line number Diff line number Diff line
@@ -62,8 +62,6 @@
/* SSEND time before SRP */
#define TB_SSEND_SRP         (1500)	/* minimum 1.5 sec, section:5.1.2 */

#define TB_SESS_VLD          (1000)

enum ci_otg_fsm_timer_index {
	/*
	 * CI specific timers, start from the end
@@ -71,7 +69,6 @@ enum ci_otg_fsm_timer_index {
	 */
	B_DATA_PLS = NUM_OTG_FSM_TIMERS,
	B_SSEND_SRP,
	B_SESS_VLD,

	NUM_CI_OTG_FSM_TIMERS,
};