MMC: PL180: Fix infinite loop with VExpress extended fifo implementation
authorJon Medhurst (Tixy) <jon.medhurst@linaro.org>
Fri, 4 Nov 2011 03:06:12 +0000 (03:06 +0000)
committerAndy Fleming <afleming@freescale.com>
Tue, 8 Nov 2011 20:39:58 +0000 (14:39 -0600)
commit0612fcbcb183ff250c018faa6e202a15394094f0
tree67c0a56709fd97fed34e5ad28d9cdb010a674d13
parent5721385b187b3154c7768e6c182501022f4e2e45
MMC: PL180: Fix infinite loop with VExpress extended fifo implementation

The new IO FPGA implementation for Versatile Express contains an MMCI
(PL180) cell with the FIFO extended to 128 words. This causes the
read_bytes() function to go into an infinite loop; as it will wait for
for the half-full signal (SDI_STA_RXFIFOBR) if there are more than 8
words remaining (SDI_FIFO_BURST_SIZE), but it won't receive this signal
once there are fewer than 64 words left to transfer.

One possible fix is to add some build time configuration to change
SDI_FIFO_BURST_SIZE for the new implementation. However, the problematic
code only seems to exist as a small performance optimisation, so the
solution implemented by this patch is to simply remove it. The error
checking following the loop is also removed as this will be handled by
code further down the function.

Cc: Andy Fleming <afleming@gmail.com>
Signed-off-by: Jon Medhurst <jon.medhurst@linaro.org>
drivers/mmc/arm_pl180_mmci.c