]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00222836 Fix Kern BUG during Susp/Resu caused by SPDIF debug code
authorNicolin Chen <b42378@freescale.com>
Fri, 31 Aug 2012 05:54:45 +0000 (13:54 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:35:22 +0000 (08:35 +0200)
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>
sound/soc/codecs/mxc_spdif.c

index 883aa4d26687383794527306293243722213c38a..c80eed6d80d3fa28474785ecf4edd17abbcb55ea 100644 (file)
@@ -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: