[PATCH] mmc: mmci: Support non-power-of-two block sizes for ux500v2 variant
Linus Walleij
linus.walleij at linaro.org
Fri Oct 12 17:22:44 EDT 2012
On Fri, Oct 12, 2012 at 4:02 PM, Ulf Hansson <ulf.hansson at stericsson.com> wrote:
> From: Ulf Hansson <ulf.hansson at linaro.org>
>
> For the ux500v2 variant non power of two block sizes are supported.
> This will make it possible to decrease data overhead for SDIO
> transfers. Although we need to put some constraints to the alignment
> of the buffers when enabling this feature.
>
> Buffers must be 4 bytes aligned due to restrictions that the PL18x
> FIFO accesses must be done in a 4 byte aligned manner. Moreover we
> need to enable DMA_REQCTL for SDIO to support write of non 32 bytes
> aligned sg element lengths. In PIO mode any buffer length can be
> handled as long as the buffer address is 4 byte aligned.
>
> Signed-off-by: Ulf Hansson <ulf.hansson at linaro.org>
> Signed-off-by: Per Forlin <per.forlin at stericsson.com>
Reviewed-by: Linus Walleij <linus.walleij at linaro.org>
I finally understand how this works now.
Bonus for comments like this:
> +/*
> + * DMA request control is required for write
> + * if transfer size is not 32 byte aligned.
> + * DMA request control is also needed if the total
> + * transfer size is 32 byte aligned but any of the
> + * sg element lengths are not aligned with 32 byte.
> + */
> #define MCI_ST_DPSM_DMAREQCTL (1 << 12)
Which make you understand what is actually happening.
Yours,
Linus Walleij
More information about the linux-arm-kernel
mailing list