summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChen Liangjun <b36089@freescale.com>2012-09-19 13:30:27 +0800
committerb02247 <b02247@freescale.com>2012-09-19 14:03:35 +0800
commitc9dfae3bf5ea765c4d6e3a74f1af4f72558983d0 (patch)
treeea1946aae2eb8cbbe4fe02bbac47031ff8d94af2
parent1c6987dd2de5099b441a745f0ea8bd5d52244165 (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.c4
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);