Legacy memstick support + FTL questions
Maxim Levitsky
maximlevitsky at gmail.com
Tue Feb 23 20:10:15 EST 2010
On Tue, 2010-02-23 at 01:01 -0800, Alex Dubov wrote:
> > > > 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?
> > By watching the #BS?
> > Every clock cycle media reads 1 or 4 bits, when #BS goes
> > low it stops
> > reading...
> > Why otherwise one would need the #BS line?
>
> It is so and not so.
> It appears, length is not transmitted as part of actual TPC payload.
> However, number of data payload bytes is always determined by the media
> register values. If this condition is not maintained all sorts of bad
> things may happen.
It is finally clear to me.
While googling I found that in fact the CRC is transmitted after data in
both directions
(ieeexplore.ieee.org/iel5/40/18745/00865865.pdf?arnumber=865865)
So, if host transmits too much or little that media expects, it will
treat wrong bytes as the CRC, and vise versa. thus both ends have to
know exactly how many bytes to expect.
One last thing that I probably will accepts as is. It appears that card
has some special way to tell the host that command if complete
regardless or serial/parallel mode, since there is special hw register
(bit 29 of register 16) that is polled only after commands, and I
verified that it takes significant time to turn that bit on, thus I
suspect that card can somehow inform the host that it not only accepted
the TPC, but actually done with the command.
Other that that, I have no more questions, thanks you again very much.
Best regards,
Maxim Levitsky
More information about the linux-mtd
mailing list