When to start USB OTG 2.0 a_bidl_adis_tmr timer?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux