Hi, The USB OTG 2.0 adds a a_bidl_adis_tmr timer which is described as: 1. Table 7-2: A-device state machine parameters a_bidl_adis_tmr Used by an A-device to determine when the B-device has finished being host 2. 7.4.5.6 a_bidl_adis_tmr This timer is used by the A-device in the a_peripheral state. The “B-device idle timeout” (a_aidl_bdis_tmout) variable is TRUE when the A-device detects that the B-device has been idle for a sufficient amount of time to allow the B-device to have performed a reset 23 . The A-device uses this variable to transition from the a_peripheral state to the a_wait_bcon state 3. 7.1.5 a_suspend (the page cooment 19) If b_conn became FALSE due to the removal of the B-plug (rather than a disconnect) then the a_bidl_adis_tmr will subsequently expire and the A-device will transition to a_wait_bcon. After this the a_wait_bcon_tmr will expire and the A-device will transition to a_wait_vfall. 4. 7.1.6 a_peripheral The A-device transitions from the a_peripheral state to the a_wait_bcon state if the a_bidl_adis_tmr times out (a_bidl_adis_tmout = TRUE). If the A-device detects more than TA_BIDL_ADIS min of continuous idle (i.e. J_state), on the bus, then the A-device may transition to the a_wait_bcon state. If no activity is detected after TA_BIDL_ADIS max the A-device shall transition back to the a_wait_bcon state. 5. Figure 7-1: A-device State Diagram The a_bidl_adis_tmr is listed in the a_peripheral state "output variable" part of the state diagram. It seems from the state diagram that this timer should be started when the A-device enters the a_peripheral state; If the a_bidl_adis_tmr timer times out, the A-device will enter a_wait_bcon state; But the timer out value TA_BIDL_ADIS (B-Idle to A-Disconnect) is 155 ms (min) to 200 ms (max); So, if this timer is started once the a_peripheral state is entered, it means the A-device can at most stay in a_peripheral state for 200ms, and that doesn't make sense because the B-device (b_host) may need more time to work with the A-device (a_pheripheral). >From the name of this timer, it seems it should be started when the A-device detects B-device idles the bus (or suspend the bus) while the A-device is in a_peripheral state. But there is a saying "In the case of any conflict between these diagrams and the behavior described in the rest of the document, the state machines take precedence." So which one should we follow to start the a_bidl_adis_tmr ? Thanks, Cory -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html