diff options
author | Chen Liangjun <b36089@freescale.com> | 2012-09-19 13:30:27 +0800 |
---|---|---|
committer | b02247 <b02247@freescale.com> | 2012-09-19 14:03:35 +0800 |
commit | c9dfae3bf5ea765c4d6e3a74f1af4f72558983d0 (patch) | |
tree | ea1946aae2eb8cbbe4fe02bbac47031ff8d94af2 | |
parent | 1c6987dd2de5099b441a745f0ea8bd5d52244165 (diff) |
ENGR00224938 HDMI audio: clear HDMI dma done bit before startimx-android-r13.4-ga
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>
-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 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); |