Merge branch 'asoc-4.17' into asoc-4.18 for compress dependencies
This commit is contained in:
commit
c0c0be9d12
3
.mailmap
3
.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 <ukl@pengutronix.de>
|
||||||
Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
|
Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
|
||||||
Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
|
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.kumar@st.com>
|
||||||
Viresh Kumar <vireshk@kernel.org> <viresh.linux@gmail.com>
|
Viresh Kumar <vireshk@kernel.org> <viresh.linux@gmail.com>
|
||||||
Viresh Kumar <vireshk@kernel.org> <viresh.kumar2@arm.com>
|
Viresh Kumar <vireshk@kernel.org> <viresh.kumar2@arm.com>
|
||||||
|
|
|
@ -13095,7 +13095,7 @@ F: include/uapi/sound/
|
||||||
F: sound/
|
F: sound/
|
||||||
|
|
||||||
SOUND - COMPRESSED AUDIO
|
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)
|
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
|
@ -1187,7 +1187,8 @@ static int pm8916_wcd_analog_spmi_probe(struct platform_device *pdev)
|
||||||
return irq;
|
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_TRIGGER_RISING | IRQF_TRIGGER_FALLING |
|
||||||
IRQF_ONESHOT,
|
IRQF_ONESHOT,
|
||||||
"mbhc switch irq", priv);
|
"mbhc switch irq", priv);
|
||||||
|
@ -1201,7 +1202,8 @@ static int pm8916_wcd_analog_spmi_probe(struct platform_device *pdev)
|
||||||
return irq;
|
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_RISING |
|
||||||
IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
|
IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
|
||||||
"mbhc btn press irq", priv);
|
"mbhc btn press irq", priv);
|
||||||
|
@ -1214,7 +1216,8 @@ static int pm8916_wcd_analog_spmi_probe(struct platform_device *pdev)
|
||||||
return irq;
|
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_RISING |
|
||||||
IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
|
IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
|
||||||
"mbhc btn release irq", priv);
|
"mbhc btn release irq", priv);
|
||||||
|
|
|
@ -89,6 +89,7 @@ static const struct reg_default rt5514_reg[] = {
|
||||||
{RT5514_PLL3_CALIB_CTRL5, 0x40220012},
|
{RT5514_PLL3_CALIB_CTRL5, 0x40220012},
|
||||||
{RT5514_DELAY_BUF_CTRL1, 0x7fff006a},
|
{RT5514_DELAY_BUF_CTRL1, 0x7fff006a},
|
||||||
{RT5514_DELAY_BUF_CTRL3, 0x00000000},
|
{RT5514_DELAY_BUF_CTRL3, 0x00000000},
|
||||||
|
{RT5514_ASRC_IN_CTRL1, 0x00000003},
|
||||||
{RT5514_DOWNFILTER0_CTRL1, 0x00020c2f},
|
{RT5514_DOWNFILTER0_CTRL1, 0x00020c2f},
|
||||||
{RT5514_DOWNFILTER0_CTRL2, 0x00020c2f},
|
{RT5514_DOWNFILTER0_CTRL2, 0x00020c2f},
|
||||||
{RT5514_DOWNFILTER0_CTRL3, 0x10000362},
|
{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_PLL3_CALIB_CTRL5:
|
||||||
case RT5514_DELAY_BUF_CTRL1:
|
case RT5514_DELAY_BUF_CTRL1:
|
||||||
case RT5514_DELAY_BUF_CTRL3:
|
case RT5514_DELAY_BUF_CTRL3:
|
||||||
|
case RT5514_ASRC_IN_CTRL1:
|
||||||
case RT5514_DOWNFILTER0_CTRL1:
|
case RT5514_DOWNFILTER0_CTRL1:
|
||||||
case RT5514_DOWNFILTER0_CTRL2:
|
case RT5514_DOWNFILTER0_CTRL2:
|
||||||
case RT5514_DOWNFILTER0_CTRL3:
|
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_PLL3_CALIB_CTRL5:
|
||||||
case RT5514_DSP_MAPPING | RT5514_DELAY_BUF_CTRL1:
|
case RT5514_DSP_MAPPING | RT5514_DELAY_BUF_CTRL1:
|
||||||
case RT5514_DSP_MAPPING | RT5514_DELAY_BUF_CTRL3:
|
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_CTRL1:
|
||||||
case RT5514_DSP_MAPPING | RT5514_DOWNFILTER0_CTRL2:
|
case RT5514_DSP_MAPPING | RT5514_DOWNFILTER0_CTRL2:
|
||||||
case RT5514_DSP_MAPPING | RT5514_DOWNFILTER0_CTRL3:
|
case RT5514_DSP_MAPPING | RT5514_DOWNFILTER0_CTRL3:
|
||||||
|
|
|
@ -33,7 +33,7 @@ static int soc_compr_open(struct snd_compr_stream *cstream)
|
||||||
struct snd_soc_component *component;
|
struct snd_soc_component *component;
|
||||||
struct snd_soc_rtdcom_list *rtdcom;
|
struct snd_soc_rtdcom_list *rtdcom;
|
||||||
struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
|
struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
|
||||||
int ret = 0, __ret;
|
int ret;
|
||||||
|
|
||||||
mutex_lock_nested(&rtd->pcm_mutex, rtd->pcm_subclass);
|
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)
|
!component->driver->compr_ops->open)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
__ret = component->driver->compr_ops->open(cstream);
|
ret = component->driver->compr_ops->open(cstream);
|
||||||
if (__ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(component->dev,
|
dev_err(component->dev,
|
||||||
"Compress ASoC: can't open platform %s: %d\n",
|
"Compress ASoC: can't open platform %s: %d\n",
|
||||||
component->name, __ret);
|
component->name, ret);
|
||||||
ret = __ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (ret < 0)
|
|
||||||
goto machine_err;
|
goto machine_err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
component = NULL;
|
||||||
|
|
||||||
if (rtd->dai_link->compr_ops && rtd->dai_link->compr_ops->startup) {
|
if (rtd->dai_link->compr_ops && rtd->dai_link->compr_ops->startup) {
|
||||||
ret = rtd->dai_link->compr_ops->startup(cstream);
|
ret = rtd->dai_link->compr_ops->startup(cstream);
|
||||||
|
@ -97,17 +96,20 @@ static int soc_compr_open(struct snd_compr_stream *cstream)
|
||||||
|
|
||||||
machine_err:
|
machine_err:
|
||||||
for_each_rtdcom(rtd, rtdcom) {
|
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 */
|
/* ignore duplication for now */
|
||||||
if (platform && (component == &platform->component))
|
if (platform && (err_comp == &platform->component))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!component->driver->compr_ops ||
|
if (!err_comp->driver->compr_ops ||
|
||||||
!component->driver->compr_ops->free)
|
!err_comp->driver->compr_ops->free)
|
||||||
continue;
|
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)
|
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_dpcm *dpcm;
|
||||||
struct snd_soc_dapm_widget_list *list;
|
struct snd_soc_dapm_widget_list *list;
|
||||||
int stream;
|
int stream;
|
||||||
int ret = 0, __ret;
|
int ret;
|
||||||
|
|
||||||
if (cstream->direction == SND_COMPRESS_PLAYBACK)
|
if (cstream->direction == SND_COMPRESS_PLAYBACK)
|
||||||
stream = SNDRV_PCM_STREAM_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)
|
!component->driver->compr_ops->open)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
__ret = component->driver->compr_ops->open(cstream);
|
ret = component->driver->compr_ops->open(cstream);
|
||||||
if (__ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(component->dev,
|
dev_err(component->dev,
|
||||||
"Compress ASoC: can't open platform %s: %d\n",
|
"Compress ASoC: can't open platform %s: %d\n",
|
||||||
component->name, __ret);
|
component->name, ret);
|
||||||
ret = __ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (ret < 0)
|
|
||||||
goto machine_err;
|
goto machine_err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
component = NULL;
|
||||||
|
|
||||||
if (fe->dai_link->compr_ops && fe->dai_link->compr_ops->startup) {
|
if (fe->dai_link->compr_ops && fe->dai_link->compr_ops->startup) {
|
||||||
ret = fe->dai_link->compr_ops->startup(cstream);
|
ret = fe->dai_link->compr_ops->startup(cstream);
|
||||||
|
@ -236,17 +237,20 @@ fe_err:
|
||||||
fe->dai_link->compr_ops->shutdown(cstream);
|
fe->dai_link->compr_ops->shutdown(cstream);
|
||||||
machine_err:
|
machine_err:
|
||||||
for_each_rtdcom(fe, rtdcom) {
|
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 */
|
/* ignore duplication for now */
|
||||||
if (platform && (component == &platform->component))
|
if (platform && (err_comp == &platform->component))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!component->driver->compr_ops ||
|
if (!err_comp->driver->compr_ops ||
|
||||||
!component->driver->compr_ops->free)
|
!err_comp->driver->compr_ops->free)
|
||||||
continue;
|
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)
|
if (platform && platform->driver->compr_ops && platform->driver->compr_ops->free)
|
||||||
|
|
|
@ -513,7 +513,7 @@ static void remove_widget(struct snd_soc_component *comp,
|
||||||
*/
|
*/
|
||||||
if (dobj->widget.kcontrol_type == SND_SOC_TPLG_TYPE_ENUM) {
|
if (dobj->widget.kcontrol_type == SND_SOC_TPLG_TYPE_ENUM) {
|
||||||
/* enumerated widget mixer */
|
/* 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 snd_kcontrol *kcontrol = w->kcontrols[i];
|
||||||
struct soc_enum *se =
|
struct soc_enum *se =
|
||||||
(struct soc_enum *)kcontrol->private_value;
|
(struct soc_enum *)kcontrol->private_value;
|
||||||
|
@ -530,7 +530,7 @@ static void remove_widget(struct snd_soc_component *comp,
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* volume mixer or bytes controls */
|
/* 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];
|
struct snd_kcontrol *kcontrol = w->kcontrols[i];
|
||||||
|
|
||||||
if (dobj->widget.kcontrol_type
|
if (dobj->widget.kcontrol_type
|
||||||
|
@ -2600,7 +2600,7 @@ int snd_soc_tplg_component_remove(struct snd_soc_component *comp, u32 index)
|
||||||
|
|
||||||
/* match index */
|
/* match index */
|
||||||
if (dobj->index != index &&
|
if (dobj->index != index &&
|
||||||
dobj->index != SND_SOC_TPLG_INDEX_ALL)
|
index != SND_SOC_TPLG_INDEX_ALL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
switch (dobj->type) {
|
switch (dobj->type) {
|
||||||
|
|
Loading…
Reference in New Issue