]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00224938 HDMI audio: clear HDMI dma done bit before start
authorChen Liangjun <b36089@freescale.com>
Wed, 19 Sep 2012 05:30:27 +0000 (13:30 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:35:25 +0000 (08:35 +0200)
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 <b36089@freescale.com>
sound/soc/imx/imx-hdmi-dma.c

index 74d45558c97dfae1ddaaaa8d9b3c628952ce4314..342f9c85f481300f22c74fa94762be115ed10b28 100644 (file)
@@ -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:
@@ -1166,6 +1167,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);