usb: phy: fsm: update OTG HNP state transition conditions according to OTG and EH 2.0 spec.
According to:"On-The-Go and Embedded Host Supplement to the USB Revision 2.0 Specification July 27, 2012 Revision 2.0 version 1.1a" - From a_host to a_wait_bcon if !b_conn - Add transition from a_host to a_wait_vfall if id state is high or a_bus_drop - From a_wait_vfall to a_idle if a_wait_vfall_tmout Signed-off-by: Li Jun <b47624@freescale.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
716fb91dfe
commit
8bebbe8dc6
@ -317,10 +317,12 @@ int otg_statemachine(struct otg_fsm *fsm)
|
||||
otg_set_state(fsm, OTG_STATE_A_WAIT_VFALL);
|
||||
break;
|
||||
case OTG_STATE_A_HOST:
|
||||
if ((!fsm->a_bus_req || fsm->a_suspend_req_inf) &&
|
||||
if (fsm->id || fsm->a_bus_drop)
|
||||
otg_set_state(fsm, OTG_STATE_A_WAIT_VFALL);
|
||||
else if ((!fsm->a_bus_req || fsm->a_suspend_req_inf) &&
|
||||
fsm->otg->host->b_hnp_enable)
|
||||
otg_set_state(fsm, OTG_STATE_A_SUSPEND);
|
||||
else if (fsm->id || !fsm->b_conn || fsm->a_bus_drop)
|
||||
else if (!fsm->b_conn)
|
||||
otg_set_state(fsm, OTG_STATE_A_WAIT_BCON);
|
||||
else if (!fsm->a_vbus_vld)
|
||||
otg_set_state(fsm, OTG_STATE_A_VBUS_ERR);
|
||||
@ -346,8 +348,7 @@ int otg_statemachine(struct otg_fsm *fsm)
|
||||
otg_set_state(fsm, OTG_STATE_A_VBUS_ERR);
|
||||
break;
|
||||
case OTG_STATE_A_WAIT_VFALL:
|
||||
if (fsm->a_wait_vfall_tmout || fsm->id || fsm->a_bus_req ||
|
||||
(!fsm->a_sess_vld && !fsm->b_conn))
|
||||
if (fsm->a_wait_vfall_tmout)
|
||||
otg_set_state(fsm, OTG_STATE_A_IDLE);
|
||||
break;
|
||||
case OTG_STATE_A_VBUS_ERR:
|
||||
|
Loading…
Reference in New Issue
Block a user