From c9dfae3bf5ea765c4d6e3a74f1af4f72558983d0 Mon Sep 17 00:00:00 2001 From: Chen Liangjun Date: Wed, 19 Sep 2012 13:30:27 +0800 Subject: ENGR00224938 HDMI audio: clear HDMI dma done bit before start HDMI hardware fix: signal of HDMI DMA DONE is hard connected to SDMA event line. SDMA event is triggered by edge. If the HDMI DMA done is already 1 before start, there would be no SDMA event being trigged after HDMI generates another HDMI DONE signal. In this patch, clear HDMI DONE bit before start HDMI audio DMA. Signed-off-by: Chen Liangjun --- sound/soc/imx/imx-hdmi-dma.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sound/soc/imx/imx-hdmi-dma.c b/sound/soc/imx/imx-hdmi-dma.c index ab0207a428d0..8ada80e0cc74 100644 --- a/sound/soc/imx/imx-hdmi-dma.c +++ b/sound/soc/imx/imx-hdmi-dma.c @@ -1110,6 +1110,7 @@ static int hdmi_dma_trigger(struct snd_pcm_substream *substream, int cmd) struct snd_pcm_runtime *runtime = substream->runtime; struct imx_hdmi_dma_runtime_data *rtd = runtime->private_data; unsigned long offset, count, space_to_end, appl_bytes; + unsigned int status; switch (cmd) { case SNDRV_PCM_TRIGGER_START: @@ -1164,6 +1165,9 @@ static int hdmi_dma_trigger(struct snd_pcm_substream *substream, int cmd) hdmi_fifo_reset(); udelay(1); + status = hdmi_dma_get_irq_status(); + hdmi_dma_clear_irq_status(status); + hdmi_dma_priv->tx_active = true; hdmi_dma_start(); hdmi_dma_irq_mask(0); -- cgit v1.2.3