Re: MMC sub-system: SDIO block-mode with increment address issue

Pierre Ossman
2007-11-20T10:58:53Z

On Mon, 19 Nov 2007 11:44:54 +0000
Dean Jenkins <djenkins@mvista.co.uk> wrote:

> This E-mail is for the attention of Pierre Ossman (MMC sub-system
> maintainer)

A cc helps if you want my attention. ;)

>
> Hi Pierre,
>
> I've being trying to get SDIO block-mode with incrementing address to
> work on an OMAP2430 based reference board with an SDIO card.
>
> Looking at the latest code ( as of 19/11/2007 ) on the mmc-git tree (I'm
> not a git expert so I'm not sure how to reference the codebase). I have
> a comment to make concerning the following code snippet...

git log or git show will give you your current top commit id.
>
> I think the lines
>
> 227 if (incr_addr)
> 228 addr += size;
>
> are incorrect and should be removed. I think the SDIO increment address
> parameter relates to the internal operation of the SDIO card and NOT to
> the external register address of the FIFO. In other words, I think with
> incrementing address enabled in block mode, the register address of the
> FIFO in the SDIO function register space will be erroneously changed on
> the next block write and will fail (it seems to fail on my card). It
> seems strange to change the register address ?
>

I don't follow. The SDIO specification very clearly defines the behaviour of incrementing address. The referenced code is very much needed to keep that behaviour when we need to split up the transfer.

I assume what you want is multiple transactions with incrementing address, but each transaction restarting at the same base address. In that case you'll have to call the sdio register functions multiple times.

Rgds
--
-- Pierre Ossman

Linux kernel, MMC maintainer http://www.kernel.org
PulseAudio, core developer http://pulseaudio.org
rdesktop, core developer http://www.rdesktop.org