summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorAlan Tull <alan.tull@freescale.com>2011-05-10 10:19:45 -0500
committerAlan Tull <alan.tull@freescale.com>2011-05-11 14:37:17 -0500
commit975e747c281219894ef0e7b3f9b99f8216225ad2 (patch)
tree19f807e8974af43faafbe5c5af3c726a1cd4705e /sound
parente03597ff921b18e4faf7609a2f4aab4bf12becc2 (diff)
ENGR00143292 Set scr low power bit when spdif not in use
Set the S/PDIF SCR register low power bit when S/PDIF is not active. Signed-off-by: Alan Tull <alan.tull@freescale.com>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/codecs/mxc_spdif.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sound/soc/codecs/mxc_spdif.c b/sound/soc/codecs/mxc_spdif.c
index 7a994ad82c6a..296d9587d5e9 100644
--- a/sound/soc/codecs/mxc_spdif.c
+++ b/sound/soc/codecs/mxc_spdif.c
@@ -521,6 +521,7 @@ static int mxc_spdif_playback_prepare(struct snd_pcm_substream *substream,
regval = __raw_readl(spdif_base_addr + SPDIF_REG_SCR);
regval &= 0xfc33e3;
+ regval &= ~SCR_LOW_POWER;
regval |= SCR_TXFIFO_AUTOSYNC | SCR_TXFIFO_NORMAL |
SCR_TXSEL_NORMAL | SCR_USRC_SEL_CHIP | (2 << SCR_TXFIFO_ESEL_BIT);
__raw_writel(regval, SPDIF_REG_SCR + spdif_base_addr);
@@ -584,6 +585,7 @@ static int mxc_spdif_playback_shutdown(struct snd_pcm_substream *substream,
regval = __raw_readl(SPDIF_REG_SCR + spdif_base_addr);
regval &= ~SCR_DMA_TX_EN;
+ regval |= SCR_LOW_POWER;
__raw_writel(regval, SPDIF_REG_SCR + spdif_base_addr);
clk_disable(plat_data->spdif_audio_clk);
@@ -705,7 +707,7 @@ static int mxc_spdif_capture_shutdown(struct snd_pcm_substream *substream,
/* turn off RX fifo, disable dma and autosync */
regval = __raw_readl(spdif_base_addr + SPDIF_REG_SCR);
- regval |= SCR_RXFIFO_OFF | SCR_RXFIFO_CTL_ZERO;
+ regval |= SCR_RXFIFO_OFF | SCR_RXFIFO_CTL_ZERO | SCR_LOW_POWER;
regval &= ~(SCR_DMA_RX_EN | SCR_RXFIFO_AUTOSYNC);
__raw_writel(regval, spdif_base_addr + SPDIF_REG_SCR);