summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorNicolin Chen <b42378@freescale.com>2012-08-31 13:54:45 +0800
committerJason Liu <r64343@freescale.com>2012-09-05 13:14:21 +0800
commit0dddff2d8383aabe2349f8e57417fc55f8a45386 (patch)
tree9d83692df78a8b4937fd988a1ebd0295120e2ddc /sound
parent98c31c451e32bb0c36fa9ae9292beb41f7f90436 (diff)
ENGR00222836 Fix Kern BUG during Susp/Resu caused by SPDIF debug code
dump_reg() in msc_spdif.c will cause kernel BUG during Suspend/Resume, because of calling clk_enable() in an interrupt for playback. There's also a simular issue in capture case. Capture'd be stopped after resume for suspending. Signed-off-by: Nicolin Chen <b42378@freescale.com>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/codecs/mxc_spdif.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sound/soc/codecs/mxc_spdif.c b/sound/soc/codecs/mxc_spdif.c
index 883aa4d26687..c80eed6d80d3 100644
--- a/sound/soc/codecs/mxc_spdif.c
+++ b/sound/soc/codecs/mxc_spdif.c
@@ -571,6 +571,7 @@ static int mxc_spdif_playback_start(struct snd_pcm_substream *substream,
if (!plat_data->spdif_tx)
return -EINVAL;
+ spdif_priv->tx_active = true;
regval = __raw_readl(spdif_base_addr + SPDIF_REG_SCR);
regval &= 0xfc33e3;
regval &= ~SCR_LOW_POWER;
@@ -715,9 +716,11 @@ static int mxc_spdif_capture_start(struct snd_pcm_substream *substream,
struct mxc_spdif_platform_data *plat_data = spdif_priv->plat_data;
unsigned long regval;
- if (!plat_data->spdif_rx || !spdif_priv->rx_active)
+ if (!plat_data->spdif_rx)
return -EINVAL;
+ spdif_priv->rx_active = true;
+
regval = __raw_readl(spdif_base_addr + SPDIF_REG_SCR);
/*
* initial and reset SPDIF configuration: