Hello. Venkatraman S wrote:
It is observed that sometimes the MMC Transfer Complete (TC) is not received when DMA completion callback is processed (or takes too long to process) This patch moves the releasing of DMA channel from dma callback to the mmc transfer complete handler. This is observed consistently when descriptor loading is used (see the rest of the series) Signed-off-by: Venkatraman S <svenkatr@xxxxxx> --- drivers/mmc/host/omap_hsmmc.c | 19 +++++++++++-------- 1 files changed, 11 insertions(+), 8 deletions(-) diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c index 83f0aff..06337f6 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c @@ -1046,8 +1046,18 @@ static irqreturn_t omap_hsmmc_irq(int irq, void *dev_id) if (end_cmd || ((status & CC) && host->cmd)) omap_hsmmc_cmd_done(host, host->cmd); - if ((end_trans || (status & TC)) && host->mrq) + if ((end_trans || (status & TC)) && host->mrq) { omap_hsmmc_xfer_done(host, data); + if (host->dma_ch != -1) { + omap_free_dma(host->dma_ch); + host->dma_ch = -1; + /* + * Callback: run in interrupt context. + * mutex_unlock will throw a kernel warning if used. + */
The comment should be aligned with the rest of the code.
+ up(&host->sem); + } + } spin_unlock(&host->irq_lock);
WBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html