[PATCH] mmci: fixup broken_blockend variant patch v2
rabin at rab.in
Mon Jan 17 10:12:07 EST 2011
On Mon, Jan 17, 2011 at 20:07, Linus Walleij
<linus.walleij at stericsson.com> wrote:
> + * On the U300 and Ux500 a few to many MCI_DATABLOCKEND interrupts
> + * are usually missing, so the data counter is not properly increased.
> + * This is likely because new block arrive while the IRQ is being
> + * processed without the transfers being held back, and ACK:in the
> + * interrupt will only clear the very last block and intermediate
> + * blockend interrupts get lost. So we simply mask of the blockend
> + * interrupt on these and only use the dataend interrupt.
Have you observed this to be different on the ARM variants? I asked a
related question about this earlier:
| In MMCI, on variants which use the DATABLOCKEND interrupt, if we cross
| more than one block boundary in the loop inside mmc_pio_read() or
| mmci_pio_write(), when the DATABLOCKEND irq is handled after interrupts
| are enabled in mmci_pio_irq(), won't the block count be incorrect
| because we would consider that only one block has been transferred, when
| in fact it has been two? Or can this never happen for some reason?
More information about the linux-arm-kernel