From: Nicolin Chen Date: Fri, 31 Aug 2012 05:54:45 +0000 (+0800) Subject: ENGR00222836 Fix Kern BUG during Susp/Resu caused by SPDIF debug code X-Git-Tag: v3.0.35-fsl~503 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=516cd318c4282d633995a7a624ef333973cff2a9;p=karo-tx-linux.git 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 --- 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: