Commit 8bebbe8d authored by Li Jun's avatar Li Jun Committed by Felipe Balbi

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: default avatarLi Jun <b47624@freescale.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 716fb91d
...@@ -317,10 +317,12 @@ int otg_statemachine(struct otg_fsm *fsm) ...@@ -317,10 +317,12 @@ int otg_statemachine(struct otg_fsm *fsm)
otg_set_state(fsm, OTG_STATE_A_WAIT_VFALL); otg_set_state(fsm, OTG_STATE_A_WAIT_VFALL);
break; break;
case OTG_STATE_A_HOST: 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) fsm->otg->host->b_hnp_enable)
otg_set_state(fsm, OTG_STATE_A_SUSPEND); 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); otg_set_state(fsm, OTG_STATE_A_WAIT_BCON);
else if (!fsm->a_vbus_vld) else if (!fsm->a_vbus_vld)
otg_set_state(fsm, OTG_STATE_A_VBUS_ERR); otg_set_state(fsm, OTG_STATE_A_VBUS_ERR);
...@@ -346,8 +348,7 @@ int otg_statemachine(struct otg_fsm *fsm) ...@@ -346,8 +348,7 @@ int otg_statemachine(struct otg_fsm *fsm)
otg_set_state(fsm, OTG_STATE_A_VBUS_ERR); otg_set_state(fsm, OTG_STATE_A_VBUS_ERR);
break; break;
case OTG_STATE_A_WAIT_VFALL: case OTG_STATE_A_WAIT_VFALL:
if (fsm->a_wait_vfall_tmout || fsm->id || fsm->a_bus_req || if (fsm->a_wait_vfall_tmout)
(!fsm->a_sess_vld && !fsm->b_conn))
otg_set_state(fsm, OTG_STATE_A_IDLE); otg_set_state(fsm, OTG_STATE_A_IDLE);
break; break;
case OTG_STATE_A_VBUS_ERR: case OTG_STATE_A_VBUS_ERR:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment