[U-Boot] [PATCH v1 06/11] mmc: if possible, poll the busy state using DAT0

Jean-Jacques Hiblot jjhiblot at ti.com
Fri Jun 28 08:28:55 UTC 2019

On 28/06/2019 02:07, Marek Vasut wrote:
> On 6/27/19 12:31 PM, Jean-Jacques Hiblot wrote:
>> Using the DAT0 line as a rdy/busy line is an alternative to reading the
>> status register of the card. It especially useful in situation where the
>> bus is not in a good shape, like when modes are switched.
>> This is also how the linux driver behaves.
>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot at ti.com>
> Is this documented somewhere that this is an OK thing to do ?
> If the bus is not in a good shape, what guarantee do we have that DAT0
> (part of the bus ;-) ) would be in good shape ?

The spec states in "6.6.1 Command sets and extended settings": [...] The 
SWITCH command response is of type R1b, therefore, the host should read 
the Device status, using SEND_STATUS command, after the busy signal is 
de-asserted, to check the result of the SWITCH operation.[...]

Also this is how it is done in linux, except that instead of 
wait_dat0(), the host driver provides a card_busy() function.

I think that "not in good shape" probably means transients on the bus, 
maybe due to changes in the voltage levels. Looking at DAT0 should be 
fine because it is grounded while the card is busy.

The only trouble with using DAT0, is that the clock must run while 
waiting otherwise DAT0 may not be de-asserted, hence the encapsulation 
in the wait_dat0() so that the HW can disable automatic clock-gating 
before monitoring DAT0. Here is the relevant text from the spec:  6.7 
"clock control"  [...] The host is allowed to shut down the clock of a 
“busy” Device. The Device will complete the programming operation 
regardless of the host clock. However, the host must provide a clock 
edge for the Device to turn off its busy signal. Without a clock edge 
the Device (unless previously disconnected by a deselect command (CMD7)) 
will force the DAT0 line down, forever. [...]


More information about the U-Boot mailing list