diff options
author | Nicolin Chen <b42378@freescale.com> | 2012-08-31 13:54:45 +0800 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2012-09-05 13:14:21 +0800 |
commit | 0dddff2d8383aabe2349f8e57417fc55f8a45386 (patch) | |
tree | 9d83692df78a8b4937fd988a1ebd0295120e2ddc | |
parent | 98c31c451e32bb0c36fa9ae9292beb41f7f90436 (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>
-rw-r--r-- | sound/soc/codecs/mxc_spdif.c | 5 |
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: |