Merge branch 'asoc-4.17' into asoc-4.18 for compress dependencies
authorMark Brown <broonie@kernel.org>
Thu, 26 Apr 2018 11:24:28 +0000 (12:24 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 26 Apr 2018 11:24:28 +0000 (12:24 +0100)
.mailmap
MAINTAINERS
sound/soc/codecs/msm8916-wcd-analog.c
sound/soc/codecs/rt5514.c
sound/soc/soc-compress.c
sound/soc/soc-topology.c

index 7fa9d41fbdaf945c807700300c1b3eb4289eb218..29ddeb1bf015c46f6316b6d4a436c94bdb9b3ae9 100644 (file)
--- a/.mailmap
+++ b/.mailmap
@@ -186,6 +186,9 @@ Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
 Uwe Kleine-König <ukl@pengutronix.de>
 Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
 Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
+Vinod Koul <vkoul@kernel.org> <vinod.koul@intel.com>
+Vinod Koul <vkoul@kernel.org> <vinod.koul@linux.intel.com>
+Vinod Koul <vkoul@kernel.org> <vkoul@infradead.org>
 Viresh Kumar <vireshk@kernel.org> <viresh.kumar@st.com>
 Viresh Kumar <vireshk@kernel.org> <viresh.linux@gmail.com>
 Viresh Kumar <vireshk@kernel.org> <viresh.kumar2@arm.com>
index 0a1410d5a621835ded529ac2d6ade31c306e086f..eaee45919cb9bdb93d4f29dca70f7909cae54dc7 100644 (file)
@@ -13095,7 +13095,7 @@ F:      include/uapi/sound/
 F:     sound/
 
 SOUND - COMPRESSED AUDIO
-M:     Vinod Koul <vinod.koul@intel.com>
+M:     Vinod Koul <vkoul@kernel.org>
 L:     alsa-devel@alsa-project.org (moderated for non-subscribers)
 T:     git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
 S:     Supported
index 12ee83d52405d06a72c8cd5a67485c69bf2ddeb1..b7cf7cce95fecd526bd4d8699e6dee9f4119d4db 100644 (file)
@@ -1187,7 +1187,8 @@ static int pm8916_wcd_analog_spmi_probe(struct platform_device *pdev)
                return irq;
        }
 
-       ret = devm_request_irq(dev, irq, pm8916_mbhc_switch_irq_handler,
+       ret = devm_request_threaded_irq(dev, irq, NULL,
+                              pm8916_mbhc_switch_irq_handler,
                               IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING |
                               IRQF_ONESHOT,
                               "mbhc switch irq", priv);
@@ -1201,7 +1202,8 @@ static int pm8916_wcd_analog_spmi_probe(struct platform_device *pdev)
                        return irq;
                }
 
-               ret = devm_request_irq(dev, irq, mbhc_btn_press_irq_handler,
+               ret = devm_request_threaded_irq(dev, irq, NULL,
+                                      mbhc_btn_press_irq_handler,
                                       IRQF_TRIGGER_RISING |
                                       IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
                                       "mbhc btn press irq", priv);
@@ -1214,7 +1216,8 @@ static int pm8916_wcd_analog_spmi_probe(struct platform_device *pdev)
                        return irq;
                }
 
-               ret = devm_request_irq(dev, irq, mbhc_btn_release_irq_handler,
+               ret = devm_request_threaded_irq(dev, irq, NULL,
+                                      mbhc_btn_release_irq_handler,
                                       IRQF_TRIGGER_RISING |
                                       IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
                                       "mbhc btn release irq", priv);
index e8a66b03faabf405ec43f7170e0205fd4650eb29..1570b91bf018f9421c91a4c66631d819a800876c 100644 (file)
@@ -89,6 +89,7 @@ static const struct reg_default rt5514_reg[] = {
        {RT5514_PLL3_CALIB_CTRL5,       0x40220012},
        {RT5514_DELAY_BUF_CTRL1,        0x7fff006a},
        {RT5514_DELAY_BUF_CTRL3,        0x00000000},
+       {RT5514_ASRC_IN_CTRL1,          0x00000003},
        {RT5514_DOWNFILTER0_CTRL1,      0x00020c2f},
        {RT5514_DOWNFILTER0_CTRL2,      0x00020c2f},
        {RT5514_DOWNFILTER0_CTRL3,      0x10000362},
@@ -181,6 +182,7 @@ static bool rt5514_readable_register(struct device *dev, unsigned int reg)
        case RT5514_PLL3_CALIB_CTRL5:
        case RT5514_DELAY_BUF_CTRL1:
        case RT5514_DELAY_BUF_CTRL3:
+       case RT5514_ASRC_IN_CTRL1:
        case RT5514_DOWNFILTER0_CTRL1:
        case RT5514_DOWNFILTER0_CTRL2:
        case RT5514_DOWNFILTER0_CTRL3:
@@ -238,6 +240,7 @@ static bool rt5514_i2c_readable_register(struct device *dev,
        case RT5514_DSP_MAPPING | RT5514_PLL3_CALIB_CTRL5:
        case RT5514_DSP_MAPPING | RT5514_DELAY_BUF_CTRL1:
        case RT5514_DSP_MAPPING | RT5514_DELAY_BUF_CTRL3:
+       case RT5514_DSP_MAPPING | RT5514_ASRC_IN_CTRL1:
        case RT5514_DSP_MAPPING | RT5514_DOWNFILTER0_CTRL1:
        case RT5514_DSP_MAPPING | RT5514_DOWNFILTER0_CTRL2:
        case RT5514_DSP_MAPPING | RT5514_DOWNFILTER0_CTRL3:
index 82402688bd8ed33799a95f7ed4786cb5d840be72..948505f7422927a67ed8abc38f4438470dd34bea 100644 (file)
@@ -33,7 +33,7 @@ static int soc_compr_open(struct snd_compr_stream *cstream)
        struct snd_soc_component *component;
        struct snd_soc_rtdcom_list *rtdcom;
        struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
-       int ret = 0, __ret;
+       int ret;
 
        mutex_lock_nested(&rtd->pcm_mutex, rtd->pcm_subclass);
 
@@ -68,16 +68,15 @@ static int soc_compr_open(struct snd_compr_stream *cstream)
                    !component->driver->compr_ops->open)
                        continue;
 
-               __ret = component->driver->compr_ops->open(cstream);
-               if (__ret < 0) {
+               ret = component->driver->compr_ops->open(cstream);
+               if (ret < 0) {
                        dev_err(component->dev,
                                "Compress ASoC: can't open platform %s: %d\n",
-                               component->name, __ret);
-                       ret = __ret;
+                               component->name, ret);
+                       goto machine_err;
                }
        }
-       if (ret < 0)
-               goto machine_err;
+       component = NULL;
 
        if (rtd->dai_link->compr_ops && rtd->dai_link->compr_ops->startup) {
                ret = rtd->dai_link->compr_ops->startup(cstream);
@@ -97,17 +96,20 @@ static int soc_compr_open(struct snd_compr_stream *cstream)
 
 machine_err:
        for_each_rtdcom(rtd, rtdcom) {
-               component = rtdcom->component;
+               struct snd_soc_component *err_comp = rtdcom->component;
+
+               if (err_comp == component)
+                       break;
 
                /* ignore duplication for now */
-               if (platform && (component == &platform->component))
+               if (platform && (err_comp == &platform->component))
                        continue;
 
-               if (!component->driver->compr_ops ||
-                   !component->driver->compr_ops->free)
+               if (!err_comp->driver->compr_ops ||
+                   !err_comp->driver->compr_ops->free)
                        continue;
 
-               component->driver->compr_ops->free(cstream);
+               err_comp->driver->compr_ops->free(cstream);
        }
 
        if (platform && platform->driver->compr_ops && platform->driver->compr_ops->free)
@@ -132,7 +134,7 @@ static int soc_compr_open_fe(struct snd_compr_stream *cstream)
        struct snd_soc_dpcm *dpcm;
        struct snd_soc_dapm_widget_list *list;
        int stream;
-       int ret = 0, __ret;
+       int ret;
 
        if (cstream->direction == SND_COMPRESS_PLAYBACK)
                stream = SNDRV_PCM_STREAM_PLAYBACK;
@@ -172,16 +174,15 @@ static int soc_compr_open_fe(struct snd_compr_stream *cstream)
                    !component->driver->compr_ops->open)
                        continue;
 
-               __ret = component->driver->compr_ops->open(cstream);
-               if (__ret < 0) {
+               ret = component->driver->compr_ops->open(cstream);
+               if (ret < 0) {
                        dev_err(component->dev,
                                "Compress ASoC: can't open platform %s: %d\n",
-                               component->name, __ret);
-                       ret = __ret;
+                               component->name, ret);
+                       goto machine_err;
                }
        }
-       if (ret < 0)
-               goto machine_err;
+       component = NULL;
 
        if (fe->dai_link->compr_ops && fe->dai_link->compr_ops->startup) {
                ret = fe->dai_link->compr_ops->startup(cstream);
@@ -236,17 +237,20 @@ fe_err:
                fe->dai_link->compr_ops->shutdown(cstream);
 machine_err:
        for_each_rtdcom(fe, rtdcom) {
-               component = rtdcom->component;
+               struct snd_soc_component *err_comp = rtdcom->component;
+
+               if (err_comp == component)
+                       break;
 
                /* ignore duplication for now */
-               if (platform && (component == &platform->component))
+               if (platform && (err_comp == &platform->component))
                        continue;
 
-               if (!component->driver->compr_ops ||
-                   !component->driver->compr_ops->free)
+               if (!err_comp->driver->compr_ops ||
+                   !err_comp->driver->compr_ops->free)
                        continue;
 
-               component->driver->compr_ops->free(cstream);
+               err_comp->driver->compr_ops->free(cstream);
        }
 
        if (platform && platform->driver->compr_ops && platform->driver->compr_ops->free)
index de08693be9e13c37ac1f257e67fcbe84007de483..f25ea9aab235a8e65bfad4885940aaa6ffda37f2 100644 (file)
@@ -513,7 +513,7 @@ static void remove_widget(struct snd_soc_component *comp,
         */
        if (dobj->widget.kcontrol_type == SND_SOC_TPLG_TYPE_ENUM) {
                /* enumerated widget mixer */
-               for (i = 0; i < w->num_kcontrols; i++) {
+               for (i = 0; w->kcontrols != NULL && i < w->num_kcontrols; i++) {
                        struct snd_kcontrol *kcontrol = w->kcontrols[i];
                        struct soc_enum *se =
                                (struct soc_enum *)kcontrol->private_value;
@@ -530,7 +530,7 @@ static void remove_widget(struct snd_soc_component *comp,
                }
        } else {
                /* volume mixer or bytes controls */
-               for (i = 0; i < w->num_kcontrols; i++) {
+               for (i = 0; w->kcontrols != NULL && i < w->num_kcontrols; i++) {
                        struct snd_kcontrol *kcontrol = w->kcontrols[i];
 
                        if (dobj->widget.kcontrol_type
@@ -2600,7 +2600,7 @@ int snd_soc_tplg_component_remove(struct snd_soc_component *comp, u32 index)
 
                        /* match index */
                        if (dobj->index != index &&
-                               dobj->index != SND_SOC_TPLG_INDEX_ALL)
+                               index != SND_SOC_TPLG_INDEX_ALL)
                                continue;
 
                        switch (dobj->type) {