diff options
author | Chen Liangjun <b36089@freescale.com> | 2012-09-19 13:30:27 +0800 |
---|---|---|
committer | Chen Liangjun <b36089@freescale.com> | 2012-09-19 13:41:08 +0800 |
commit | 547bcf3ca2487a8a3df4c28c393a1588665230ee (patch) | |
tree | 56b10f763a220327c2c3b3ae3a39241f7dc1a27b /sound/soc | |
parent | 59589328dd67479ec7019ac394d8c4b84787d5ac (diff) |
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 <b36089@freescale.com>
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/imx/imx-hdmi-dma.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sound/soc/imx/imx-hdmi-dma.c b/sound/soc/imx/imx-hdmi-dma.c index 74d45558c97d..342f9c85f481 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: @@ -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); |