Legacy memstick support + FTL questions

Alex Dubov oakad at yahoo.com
Mon Feb 22 09:04:26 EST 2010


> 
> Alex, could you explain how a single TPC is performed?
> 
> I currently first send MS_TPC_SET_RW_REG_ADRS, and then
> MS_TPC_READ_REG
> 
> When I send the TPC I specify both the tpc number and its
> len. Is the
> len transmitted?

Of course, it is. How otherwise media would know how many bits to sample
in?

> 
> I see that if I set addr.r_length != MS_TPC_READ_REG len, I
> get errors
> in reg #16, but different errors depending if i set it
> lower or higher.

This is an undefined behavior. You're confusing the state machine on the
media side. By the way, left over bytes from the incorrectly ordered
or formatted TPC can spill into block data buffer (this will cause an
apparent data corruption - I've seen this happen).

> 
> Currently I think that a level change on the #SDIO is the
> signal for
> host to start reading, but who sets the #BS to high? Host
> or card.

BS line is always mastered by host.

> 
> Does card signal end of transmission?
> 

Yes, on a data line (there's CRC as well, which must be handled by the host
transparently).

> Also it seems that if I write to 'param' register, I can't
> read it back
> (maybe I do something wrong). Is this register write only?
> 

There are no write only registers in the MS spec. Moreover, you need to 
read the param register if you're doing multi-page transfer (page address
will be updated during the transfer to point to the last accessed page).



      



More information about the linux-mtd mailing list