[PATCH] mmci: sync DATAEND irq with dma transfer done

Linus Walleij linus.walleij at linaro.org
Wed Apr 20 16:11:30 EDT 2011


On Wed, Apr 20, 2011 at 7:58 PM, Vitaly Wool <vitalywool at gmail.com> wrote:

> Okay, but can't we have something like this then in the unmap function:
>
>       for (i = 0; i < 100; i++) {
>               status = readl(host->base + MMCISTATUS);
>               if (host->unreliable_rxflags) {
>                       if (host->dataend)
>                              break;
>               } else if (!(status & MCI_RXDATAAVLBLMASK))
>                       break;
>               udelay(10);
>       }
>
> to minimize the changes and apparently address Russell's concern as well?

Yes that was exactly my suggestion in my first reply to Russell,
sorry if that wasn't clear. I called it bool sync_dma_job

The problem is that this HW bug is very likely present also in
unmodified ARM IP blocks, the only reason noone is seing it
is that they don't clock them very high and DMA is not really
working on them for other reasons anyway.

I.e. all versions of MMCI are likely as unreliable...

Yours,
Linus Walleij



More information about the linux-arm-kernel mailing list