From: Li Jun Date: Fri, 20 Mar 2015 08:28:04 +0000 (+0800) Subject: usb: chipidea: otg: remove unnecessary B_SESS_VLD timer X-Git-Tag: firefly_0821_release~176^2~2000^2~39 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=01ecd156905f6bbfe4f5bd278325071f9141726d;p=firefly-linux-kernel-4.4.55.git 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: Li Jun Signed-off-by: Peter Chen Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/usb/chipidea/otg_fsm.c b/drivers/usb/chipidea/otg_fsm.c index e3cf5be66d3d..3014e2c0ac37 100644 --- a/drivers/usb/chipidea/otg_fsm.c +++ b/drivers/usb/chipidea/otg_fsm.c @@ -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: diff --git a/drivers/usb/chipidea/otg_fsm.h b/drivers/usb/chipidea/otg_fsm.h index 94c085f456a9..d0ad4f9ef950 100644 --- a/drivers/usb/chipidea/otg_fsm.h +++ b/drivers/usb/chipidea/otg_fsm.h @@ -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, };