Merge branch 'asoc-4.17' into asoc-4.18 for compress dependencies
This commit is contained in:
Коммит
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 <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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
if (ret < 0)
|
||||
component->name, ret);
|
||||
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;
|
||||
}
|
||||
}
|
||||
if (ret < 0)
|
||||
component->name, ret);
|
||||
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)
|
||||
|
|
|
@ -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) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче