Troy found that mmc_davinci_start_command was previously enabling
interrupts too early. This was allowing a TX interrupt to be handled
while the FIFO was being stuffed, resulting in an overstuffed fifo.
Signed-off-by: Troy Kisky <[EMAIL PROTECTED]>
Signed-off-by: Bernard Blackham <[EMAIL PROTECTED]>
--
davinci_mmc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-davinci-2.6.24.git/drivers/mmc/host/davinci_mmc.c
===================================================================
--- linux-davinci-2.6.24.git.orig/drivers/mmc/host/davinci_mmc.c
2008-03-25 22:00:13.000000000 +0900
+++ linux-davinci-2.6.24.git/drivers/mmc/host/davinci_mmc.c 2008-03-25
22:01:11.000000000 +0900
@@ -188,7 +188,7 @@
/* set Command timeout */
writel(0xFFFF, host->base + DAVINCI_MMCTOR);
- /* Enable interrupt */
+ /* Enable interrupt (calculate here, defer until FIFO is stuffed). */
im_val = MMCSD_EVENT_EOFCMD
| MMCSD_EVENT_ERROR_CMDCRC
| MMCSD_EVENT_ERROR_DATACRC
@@ -205,7 +205,6 @@
if (!host->do_dma)
im_val |= MMCSD_EVENT_READ;
}
- writel(im_val, host->base + DAVINCI_MMCIM);
/*
* It is required by controoler b4 WRITE command that
@@ -236,6 +235,7 @@
host->is_core_command = 1;
writel(cmd->arg, host->base + DAVINCI_MMCARGHL);
writel(cmd_reg, host->base + DAVINCI_MMCCMD);
+ writel(im_val, host->base + DAVINCI_MMCIM);
}
static void mmc_davinci_dma_cb(int lch, u16 ch_status, void *data)
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source