Re: [PATCH 1/3] dt-bindings: mmc: mmci: add a property to disable DMA LLI

From: Yann Gautier
Date: Thu Mar 17 2022 - 06:18:54 EST


On 3/17/22 11:00, Ulf Hansson wrote:
On Tue, 15 Mar 2022 at 09:26, Yann Gautier <yann.gautier@xxxxxxxxxxx> wrote:

On 3/14/22 23:43, Linus Walleij wrote:
"On Fri, Mar 4, 2022 at 2:52 PM Yann Gautier <yann.gautier@xxxxxxxxxxx> wrote:

On STMicroelectronics variant of PL18x, the DMA Linked Lists are supported
starting from revision v2 of the peripheral. But it has limitations,
as all the buffers should be aligned on block size (except the last one).
But this cannot be guaranteed with SDIO. We should then have a property
to disable the support of LLI.

Signed-off-by: Yann Gautier <yann.gautier@xxxxxxxxxxx>

Actually I think this is present also on the ux500 variants. See:
commit 2253ed4b36dc876d1598c4dab5587e537ec68c34
"mmc: mmci: Support any block sizes for ux500v2 and qcom variant"

Spot the variant data "dma_power_of_2".

So whatever property you add
to the variant data (not in the device tree please) should
be added to the ux500 variants as well, it will *VERY* likely
have a problem with LLI elements not being a power of 2
as it is the ancestor of later STMicro variants.

It might actually be the reason for some annoying WiFi error
messages I have seen :/

Yours,
Linus Walleij

Hi Linus,

The STM32 variant uses an internal DMA, and the DMA functions are in its
dedicated file. So I was planning to do the same as what is done in
meson-gx-mmc.c: using a bounce buffer to copy from/to in case DMA
constraints are not fulfilled. Not sure it can help for Ux500.


Hi Ulf,

We already have a bounce buffer in mmci_pio_read(), but we need one in
mmc_pio_write() too, which hasn't been implemented yet.

The idea is to keep using our internal DMA, and not switch to pio mode.



Ulf, before I send my new series (although it is not ready yet), would
you be OK with the bounce buffer idea?

Yes, that works for me.
I have patches almost ready, I'll send that soon.


On the other hand, it would be even better if we could specify the
buffer limitations per mmc host instance, so upper layers (SDIO func
drivers) could conform to these - and use better buffers, to achieve a
better performance.

We've seen things that could be improved in the wifi driver. I'll check what could be done.

Best regards,
Yann



Best regards,
Yann

Kind regards
Uffe