On Wed, Feb 01, 2006 at 10:37:12AM +0100, Pierre Ossman wrote:
Russell King wrote:
On Wed, Feb 01, 2006 at 07:40:26AM +0100, Pierre Ossman wrote:As far as the hardware is concerned there are two "multi-block" transfers:
I noticed that a new transfer flag was recently added to the MMC layerThere are hosts out there (Atmel AT91-based) which need to know if the
without any immediate users, the MMC_DATA_MULTI flag. I'm guessing the
purpose of the flag is to indicate the difference between
MMC_READ_SINGLE_BLOCK and MMC_READ_MULTIPLE_BLOCKS with just one block.
If so, then that should probably be mentioned in a comment somewhere.
transfer is going to be multiple block. Rather than have them test
the op-code (which is what they're already doing), we provide a flag
instead.
* Multiple, back-to-back blocks.
* One or more blocks that need to be terminated by some form of stop
command.
The first can be identified by checking the number of blocks in the
request, the latter is harder to identify since it's a protocol semantic
(it could be just one block, but still need a stop). Does MMC_DATA_MULTI
indicate the latter, former or both?
In short, it's defined to be whatever AT91_MCI_TRTYP_MULTIPLE means in
the AT91RM9200 MMC host driver, which appears to be set for any of the
multiple block commands. They currently are doing:
and using that as a lookup table by command for the value to put into
the command register. I want to eliminate that, and not passing the
MULTI flag prevents elimination of this table.