Merge remote-tracking branches 'asoc/topic/codec-mutex', 'asoc/topic/compress' and...
authorMark Brown <broonie@kernel.org>
Mon, 8 Dec 2014 13:11:52 +0000 (13:11 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 8 Dec 2014 13:11:52 +0000 (13:11 +0000)
16 files changed:
include/linux/mfd/arizona/core.h
include/linux/mfd/davinci_voicecodec.h
include/sound/soc.h
sound/soc/codecs/ab8500-codec.c
sound/soc/codecs/arizona.c
sound/soc/codecs/cq93vc.c
sound/soc/codecs/max98095.c
sound/soc/codecs/wm5102.c
sound/soc/codecs/wm8731.c
sound/soc/codecs/wm8903.c
sound/soc/codecs/wm8958-dsp2.c
sound/soc/codecs/wm8962.c
sound/soc/codecs/wm8994.c
sound/soc/codecs/wm8994.h
sound/soc/soc-compress.c
sound/soc/soc-core.c

index f34723f..910e3aa 100644 (file)
@@ -141,6 +141,7 @@ struct arizona {
 
        uint16_t dac_comp_coeff;
        uint8_t dac_comp_enabled;
+       struct mutex dac_comp_lock;
 };
 
 int arizona_clk32k_enable(struct arizona *arizona);
index cb01496..8e1cdbe 100644 (file)
@@ -99,12 +99,6 @@ struct davinci_vcif {
        dma_addr_t dma_rx_addr;
 };
 
-struct cq93vc {
-       struct platform_device *pdev;
-       struct snd_soc_codec *codec;
-       u32 sysclk;
-};
-
 struct davinci_vc;
 
 struct davinci_vc {
@@ -122,7 +116,6 @@ struct davinci_vc {
 
        /* Client devices */
        struct davinci_vcif davinci_vcif;
-       struct cq93vc cq93vc;
 };
 
 #endif
index a765c68..29a5290 100644 (file)
@@ -785,7 +785,6 @@ struct snd_soc_codec {
        struct device *dev;
        const struct snd_soc_codec_driver *driver;
 
-       struct mutex mutex;
        struct list_head list;
        struct list_head card_list;
 
index fd43827..7dfbc99 100644 (file)
@@ -126,13 +126,13 @@ struct ab8500_codec_drvdata_dbg {
 /* Private data for AB8500 device-driver */
 struct ab8500_codec_drvdata {
        struct regmap *regmap;
+       struct mutex ctrl_lock;
 
        /* Sidetone */
        long *sid_fir_values;
        enum sid_state sid_status;
 
        /* ANC */
-       struct mutex anc_lock;
        long *anc_fir_values;
        long *anc_iir_values;
        enum anc_state anc_status;
@@ -1129,9 +1129,9 @@ static int sid_status_control_get(struct snd_kcontrol *kcontrol,
        struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
        struct ab8500_codec_drvdata *drvdata = dev_get_drvdata(codec->dev);
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&drvdata->ctrl_lock);
        ucontrol->value.integer.value[0] = drvdata->sid_status;
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&drvdata->ctrl_lock);
 
        return 0;
 }
@@ -1154,7 +1154,7 @@ static int sid_status_control_put(struct snd_kcontrol *kcontrol,
                return -EIO;
        }
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&drvdata->ctrl_lock);
 
        sidconf = snd_soc_read(codec, AB8500_SIDFIRCONF);
        if (((sidconf & BIT(AB8500_SIDFIRCONF_FIRSIDBUSY)) != 0)) {
@@ -1185,7 +1185,7 @@ static int sid_status_control_put(struct snd_kcontrol *kcontrol,
        drvdata->sid_status = SID_FIR_CONFIGURED;
 
 out:
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&drvdata->ctrl_lock);
 
        dev_dbg(codec->dev, "%s: Exit\n", __func__);
 
@@ -1198,9 +1198,9 @@ static int anc_status_control_get(struct snd_kcontrol *kcontrol,
        struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
        struct ab8500_codec_drvdata *drvdata = dev_get_drvdata(codec->dev);
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&drvdata->ctrl_lock);
        ucontrol->value.integer.value[0] = drvdata->anc_status;
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&drvdata->ctrl_lock);
 
        return 0;
 }
@@ -1217,7 +1217,7 @@ static int anc_status_control_put(struct snd_kcontrol *kcontrol,
 
        dev_dbg(dev, "%s: Enter.\n", __func__);
 
-       mutex_lock(&drvdata->anc_lock);
+       mutex_lock(&drvdata->ctrl_lock);
 
        req = ucontrol->value.integer.value[0];
        if (req >= ARRAY_SIZE(enum_anc_state)) {
@@ -1244,9 +1244,7 @@ static int anc_status_control_put(struct snd_kcontrol *kcontrol,
        }
        snd_soc_dapm_sync(&codec->dapm);
 
-       mutex_lock(&codec->mutex);
        anc_configure(codec, apply_fir, apply_iir);
-       mutex_unlock(&codec->mutex);
 
        if (apply_fir) {
                if (drvdata->anc_status == ANC_IIR_CONFIGURED)
@@ -1265,7 +1263,7 @@ static int anc_status_control_put(struct snd_kcontrol *kcontrol,
        snd_soc_dapm_sync(&codec->dapm);
 
 cleanup:
-       mutex_unlock(&drvdata->anc_lock);
+       mutex_unlock(&drvdata->ctrl_lock);
 
        if (status < 0)
                dev_err(dev, "%s: Unable to configure ANC! (status = %d)\n",
@@ -1294,14 +1292,15 @@ static int filter_control_get(struct snd_kcontrol *kcontrol,
                        struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
+       struct ab8500_codec_drvdata *drvdata = snd_soc_codec_get_drvdata(codec);
        struct filter_control *fc =
                        (struct filter_control *)kcontrol->private_value;
        unsigned int i;
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&drvdata->ctrl_lock);
        for (i = 0; i < fc->count; i++)
                ucontrol->value.integer.value[i] = fc->value[i];
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&drvdata->ctrl_lock);
 
        return 0;
 }
@@ -1310,14 +1309,15 @@ static int filter_control_put(struct snd_kcontrol *kcontrol,
                struct snd_ctl_elem_value *ucontrol)
 {
        struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
+       struct ab8500_codec_drvdata *drvdata = snd_soc_codec_get_drvdata(codec);
        struct filter_control *fc =
                        (struct filter_control *)kcontrol->private_value;
        unsigned int i;
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&drvdata->ctrl_lock);
        for (i = 0; i < fc->count; i++)
                fc->value[i] = ucontrol->value.integer.value[i];
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&drvdata->ctrl_lock);
 
        return 0;
 }
@@ -2545,7 +2545,7 @@ static int ab8500_codec_probe(struct snd_soc_codec *codec)
 
        (void)snd_soc_dapm_disable_pin(&codec->dapm, "ANC Configure Input");
 
-       mutex_init(&drvdata->anc_lock);
+       mutex_init(&drvdata->ctrl_lock);
 
        return status;
 }
index 19887bf..9550d74 100644 (file)
@@ -1185,13 +1185,13 @@ static void arizona_wm5102_set_dac_comp(struct snd_soc_codec *codec,
                { 0x80, 0x0 },
        };
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&arizona->dac_comp_lock);
 
        dac_comp[1].def = arizona->dac_comp_coeff;
        if (rate >= 176400)
                dac_comp[2].def = arizona->dac_comp_enabled;
 
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&arizona->dac_comp_lock);
 
        regmap_multi_reg_write(arizona->regmap,
                               dac_comp,
index 537327c..8d638e8 100644 (file)
@@ -62,14 +62,10 @@ static int cq93vc_mute(struct snd_soc_dai *dai, int mute)
 static int cq93vc_set_dai_sysclk(struct snd_soc_dai *codec_dai,
                                 int clk_id, unsigned int freq, int dir)
 {
-       struct snd_soc_codec *codec = codec_dai->codec;
-       struct davinci_vc *davinci_vc = codec->dev->platform_data;
-
        switch (freq) {
        case 22579200:
        case 27000000:
        case 33868800:
-               davinci_vc->cq93vc.sysclk = freq;
                return 0;
        }
 
@@ -126,32 +122,6 @@ static struct snd_soc_dai_driver cq93vc_dai = {
        .ops = &cq93vc_dai_ops,
 };
 
-static int cq93vc_resume(struct snd_soc_codec *codec)
-{
-       cq93vc_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
-       return 0;
-}
-
-static int cq93vc_probe(struct snd_soc_codec *codec)
-{
-       struct davinci_vc *davinci_vc = codec->dev->platform_data;
-
-       davinci_vc->cq93vc.codec = codec;
-
-       /* Off, with power on */
-       cq93vc_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
-       return 0;
-}
-
-static int cq93vc_remove(struct snd_soc_codec *codec)
-{
-       cq93vc_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-       return 0;
-}
-
 static struct regmap *cq93vc_get_regmap(struct device *dev)
 {
        struct davinci_vc *davinci_vc = dev->platform_data;
@@ -161,9 +131,6 @@ static struct regmap *cq93vc_get_regmap(struct device *dev)
 
 static struct snd_soc_codec_driver soc_codec_dev_cq93vc = {
        .set_bias_level = cq93vc_set_bias_level,
-       .probe = cq93vc_probe,
-       .remove = cq93vc_remove,
-       .resume = cq93vc_resume,
        .get_regmap = cq93vc_get_regmap,
        .controls = cq93vc_snd_controls,
        .num_controls = ARRAY_SIZE(cq93vc_snd_controls),
index 0ee6797..01f3cc9 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/pm.h>
 #include <linux/i2c.h>
 #include <linux/clk.h>
+#include <linux/mutex.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/pcm_params.h>
@@ -57,6 +58,7 @@ struct max98095_priv {
        unsigned int mic2pre;
        struct snd_soc_jack *headphone_jack;
        struct snd_soc_jack *mic_jack;
+       struct mutex lock;
 };
 
 static const struct reg_default max98095_reg_def[] = {
@@ -1803,7 +1805,7 @@ static int max98095_put_eq_enum(struct snd_kcontrol *kcontrol,
        regsave = snd_soc_read(codec, M98095_088_CFG_LEVEL);
        snd_soc_update_bits(codec, M98095_088_CFG_LEVEL, regmask, 0);
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&max98095->lock);
        snd_soc_update_bits(codec, M98095_00F_HOST_CFG, M98095_SEG, M98095_SEG);
        m98095_eq_band(codec, channel, 0, coef_set->band1);
        m98095_eq_band(codec, channel, 1, coef_set->band2);
@@ -1811,7 +1813,7 @@ static int max98095_put_eq_enum(struct snd_kcontrol *kcontrol,
        m98095_eq_band(codec, channel, 3, coef_set->band4);
        m98095_eq_band(codec, channel, 4, coef_set->band5);
        snd_soc_update_bits(codec, M98095_00F_HOST_CFG, M98095_SEG, 0);
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&max98095->lock);
 
        /* Restore the original on/off state */
        snd_soc_update_bits(codec, M98095_088_CFG_LEVEL, regmask, regsave);
@@ -1957,12 +1959,12 @@ static int max98095_put_bq_enum(struct snd_kcontrol *kcontrol,
        regsave = snd_soc_read(codec, M98095_088_CFG_LEVEL);
        snd_soc_update_bits(codec, M98095_088_CFG_LEVEL, regmask, 0);
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&max98095->lock);
        snd_soc_update_bits(codec, M98095_00F_HOST_CFG, M98095_SEG, M98095_SEG);
        m98095_biquad_band(codec, channel, 0, coef_set->band1);
        m98095_biquad_band(codec, channel, 1, coef_set->band2);
        snd_soc_update_bits(codec, M98095_00F_HOST_CFG, M98095_SEG, 0);
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&max98095->lock);
 
        /* Restore the original on/off state */
        snd_soc_update_bits(codec, M98095_088_CFG_LEVEL, regmask, regsave);
@@ -2395,6 +2397,8 @@ static int max98095_i2c_probe(struct i2c_client *i2c,
        if (max98095 == NULL)
                return -ENOMEM;
 
+       mutex_init(&max98095->lock);
+
        max98095->regmap = devm_regmap_init_i2c(i2c, &max98095_regmap);
        if (IS_ERR(max98095->regmap)) {
                ret = PTR_ERR(max98095->regmap);
index f602349..d78fb8d 100644 (file)
@@ -619,10 +619,10 @@ static int wm5102_out_comp_coeff_get(struct snd_kcontrol *kcontrol,
        struct arizona *arizona = dev_get_drvdata(codec->dev->parent);
        uint16_t data;
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&arizona->dac_comp_lock);
        data = cpu_to_be16(arizona->dac_comp_coeff);
        memcpy(ucontrol->value.bytes.data, &data, sizeof(data));
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&arizona->dac_comp_lock);
 
        return 0;
 }
@@ -633,11 +633,11 @@ static int wm5102_out_comp_coeff_put(struct snd_kcontrol *kcontrol,
        struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
        struct arizona *arizona = dev_get_drvdata(codec->dev->parent);
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&arizona->dac_comp_lock);
        memcpy(&arizona->dac_comp_coeff, ucontrol->value.bytes.data,
               sizeof(arizona->dac_comp_coeff));
        arizona->dac_comp_coeff = be16_to_cpu(arizona->dac_comp_coeff);
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&arizona->dac_comp_lock);
 
        return 0;
 }
@@ -648,9 +648,9 @@ static int wm5102_out_comp_switch_get(struct snd_kcontrol *kcontrol,
        struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
        struct arizona *arizona = dev_get_drvdata(codec->dev->parent);
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&arizona->dac_comp_lock);
        ucontrol->value.integer.value[0] = arizona->dac_comp_enabled;
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&arizona->dac_comp_lock);
 
        return 0;
 }
@@ -661,9 +661,9 @@ static int wm5102_out_comp_switch_put(struct snd_kcontrol *kcontrol,
        struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
        struct arizona *arizona = dev_get_drvdata(codec->dev->parent);
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&arizona->dac_comp_lock);
        arizona->dac_comp_enabled = ucontrol->value.integer.value[0];
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&arizona->dac_comp_lock);
 
        return 0;
 }
@@ -1900,6 +1900,8 @@ static int wm5102_probe(struct platform_device *pdev)
                return -ENOMEM;
        platform_set_drvdata(pdev, wm5102);
 
+       mutex_init(&arizona->dac_comp_lock);
+
        wm5102->core.arizona = arizona;
        wm5102->core.num_inputs = 6;
 
index eebb328..5dae9a6 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/regulator/consumer.h>
 #include <linux/spi/spi.h>
 #include <linux/of_device.h>
+#include <linux/mutex.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/pcm_params.h>
@@ -50,6 +51,8 @@ struct wm8731_priv {
        int sysclk_type;
        int playback_fs;
        bool deemph;
+
+       struct mutex lock;
 };
 
 
@@ -138,7 +141,7 @@ static int wm8731_put_deemph(struct snd_kcontrol *kcontrol,
        if (deemph > 1)
                return -EINVAL;
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&wm8731->lock);
        if (wm8731->deemph != deemph) {
                wm8731->deemph = deemph;
 
@@ -146,7 +149,7 @@ static int wm8731_put_deemph(struct snd_kcontrol *kcontrol,
 
                ret = 1;
        }
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&wm8731->lock);
 
        return ret;
 }
@@ -685,6 +688,8 @@ static int wm8731_spi_probe(struct spi_device *spi)
        if (wm8731 == NULL)
                return -ENOMEM;
 
+       mutex_init(&wm8731->lock);
+
        wm8731->regmap = devm_regmap_init_spi(spi, &wm8731_regmap);
        if (IS_ERR(wm8731->regmap)) {
                ret = PTR_ERR(wm8731->regmap);
index c038b3e..ffbe6df 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/regmap.h>
 #include <linux/slab.h>
 #include <linux/irq.h>
+#include <linux/mutex.h>
 #include <sound/core.h>
 #include <sound/jack.h>
 #include <sound/pcm.h>
@@ -123,6 +124,7 @@ struct wm8903_priv {
        int sysclk;
        int irq;
 
+       struct mutex lock;
        int fs;
        int deemph;
 
@@ -457,7 +459,7 @@ static int wm8903_put_deemph(struct snd_kcontrol *kcontrol,
        if (deemph > 1)
                return -EINVAL;
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&wm8903->lock);
        if (wm8903->deemph != deemph) {
                wm8903->deemph = deemph;
 
@@ -465,7 +467,7 @@ static int wm8903_put_deemph(struct snd_kcontrol *kcontrol,
 
                ret = 1;
        }
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&wm8903->lock);
 
        return ret;
 }
@@ -2023,6 +2025,8 @@ static int wm8903_i2c_probe(struct i2c_client *i2c,
                              GFP_KERNEL);
        if (wm8903 == NULL)
                return -ENOMEM;
+
+       mutex_init(&wm8903->lock);
        wm8903->dev = &i2c->dev;
 
        wm8903->regmap = devm_regmap_init_i2c(i2c, &wm8903_regmap);
index 0dada7f..3cbc82b 100644 (file)
@@ -867,9 +867,9 @@ static void wm8958_enh_eq_loaded(const struct firmware *fw, void *context)
        struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
 
        if (fw && (wm8958_dsp2_fw(codec, "ENH_EQ", fw, true) == 0)) {
-               mutex_lock(&codec->mutex);
+               mutex_lock(&wm8994->fw_lock);
                wm8994->enh_eq = fw;
-               mutex_unlock(&codec->mutex);
+               mutex_unlock(&wm8994->fw_lock);
        }
 }
 
@@ -879,9 +879,9 @@ static void wm8958_mbc_vss_loaded(const struct firmware *fw, void *context)
        struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
 
        if (fw && (wm8958_dsp2_fw(codec, "MBC+VSS", fw, true) == 0)) {
-               mutex_lock(&codec->mutex);
+               mutex_lock(&wm8994->fw_lock);
                wm8994->mbc_vss = fw;
-               mutex_unlock(&codec->mutex);
+               mutex_unlock(&wm8994->fw_lock);
        }
 }
 
@@ -891,9 +891,9 @@ static void wm8958_mbc_loaded(const struct firmware *fw, void *context)
        struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
 
        if (fw && (wm8958_dsp2_fw(codec, "MBC", fw, true) == 0)) {
-               mutex_lock(&codec->mutex);
+               mutex_lock(&wm8994->fw_lock);
                wm8994->mbc = fw;
-               mutex_unlock(&codec->mutex);
+               mutex_unlock(&wm8994->fw_lock);
        }
 }
 
index 9077411..61ca4a7 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/regulator/consumer.h>
 #include <linux/slab.h>
 #include <linux/workqueue.h>
+#include <linux/mutex.h>
 #include <sound/core.h>
 #include <sound/jack.h>
 #include <sound/pcm.h>
@@ -67,6 +68,7 @@ struct wm8962_priv {
        int fll_fref;
        int fll_fout;
 
+       struct mutex dsp2_ena_lock;
        u16 dsp2_ena;
 
        struct delayed_work mic_work;
@@ -1570,7 +1572,7 @@ static int wm8962_dsp2_ena_put(struct snd_kcontrol *kcontrol,
        int dsp2_running = snd_soc_read(codec, WM8962_DSP2_POWER_MANAGEMENT) &
                WM8962_DSP2_ENA;
 
-       mutex_lock(&codec->mutex);
+       mutex_lock(&wm8962->dsp2_ena_lock);
 
        if (ucontrol->value.integer.value[0])
                wm8962->dsp2_ena |= 1 << shift;
@@ -1590,7 +1592,7 @@ static int wm8962_dsp2_ena_put(struct snd_kcontrol *kcontrol,
        }
 
 out:
-       mutex_unlock(&codec->mutex);
+       mutex_unlock(&wm8962->dsp2_ena_lock);
 
        return ret;
 }
@@ -3557,6 +3559,8 @@ static int wm8962_i2c_probe(struct i2c_client *i2c,
        if (wm8962 == NULL)
                return -ENOMEM;
 
+       mutex_init(&wm8962->dsp2_ena_lock);
+
        i2c_set_clientdata(i2c, wm8962);
 
        INIT_DELAYED_WORK(&wm8962->mic_work, wm8962_mic_work);
index 1fcb9f3..dbca6e0 100644 (file)
@@ -4457,6 +4457,8 @@ static int wm8994_probe(struct platform_device *pdev)
                return -ENOMEM;
        platform_set_drvdata(pdev, wm8994);
 
+       mutex_init(&wm8994->fw_lock);
+
        wm8994->wm8994 = dev_get_drvdata(pdev->dev.parent);
 
        pm_runtime_enable(&pdev->dev);
index 6536f8d..dd73387 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/firmware.h>
 #include <linux/completion.h>
 #include <linux/workqueue.h>
+#include <linux/mutex.h>
 
 #include "wm_hubs.h"
 
@@ -156,6 +157,7 @@ struct wm8994_priv {
        unsigned int aif1clk_disable:1;
        unsigned int aif2clk_disable:1;
 
+       struct mutex fw_lock;
        int dsp_active;
        const struct firmware *cur_fw;
        const struct firmware *mbc;
index cecfab3..590a82f 100644 (file)
@@ -258,10 +258,7 @@ static int soc_compr_free_fe(struct snd_compr_stream *cstream)
        list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be)
                dpcm->state = SND_SOC_DPCM_LINK_STATE_FREE;
 
-       if (stream == SNDRV_PCM_STREAM_PLAYBACK)
-               dpcm_dapm_stream_event(fe, stream, SND_SOC_DAPM_STREAM_STOP);
-       else
-               dpcm_dapm_stream_event(fe, stream, SND_SOC_DAPM_STREAM_STOP);
+       dpcm_dapm_stream_event(fe, stream, SND_SOC_DAPM_STREAM_STOP);
 
        fe->dpcm[stream].state = SND_SOC_DPCM_STATE_CLOSE;
        fe->dpcm[stream].runtime_update = SND_SOC_DPCM_UPDATE_NO;
@@ -456,11 +453,7 @@ static int soc_compr_set_params_fe(struct snd_compr_stream *cstream,
        if (ret < 0)
                goto out;
 
-       if (stream == SNDRV_PCM_STREAM_PLAYBACK)
-               dpcm_dapm_stream_event(fe, stream, SND_SOC_DAPM_STREAM_START);
-       else
-               dpcm_dapm_stream_event(fe, stream, SND_SOC_DAPM_STREAM_START);
-
+       dpcm_dapm_stream_event(fe, stream, SND_SOC_DAPM_STREAM_START);
        fe->dpcm[stream].state = SND_SOC_DPCM_STATE_PREPARE;
 
 out:
index e0d3b6f..11d01e5 100644 (file)
@@ -3009,7 +3009,6 @@ int snd_soc_register_codec(struct device *dev,
        codec->dev = dev;
        codec->driver = codec_drv;
        codec->component.val_bytes = codec_drv->reg_word_size;
-       mutex_init(&codec->mutex);
 
 #ifdef CONFIG_DEBUG_FS
        codec->component.init_debugfs = soc_init_codec_debugfs;