mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-18 02:04:05 +08:00
ASoC: Add w->kcontrols, and populate it
Future changes will need reference to the kcontrol created for a given kcontrol_new. Store the created kcontrol values now. Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Liam Girdwood <lrg@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
82cfecdc03
commit
fad598887d
@ -474,6 +474,7 @@ struct snd_soc_dapm_widget {
|
||||
/* kcontrols that relate to this widget */
|
||||
int num_kcontrols;
|
||||
const struct snd_kcontrol_new *kcontrol_news;
|
||||
struct snd_kcontrol **kcontrols;
|
||||
|
||||
/* widget input and outputs */
|
||||
struct list_head sources;
|
||||
|
@ -400,6 +400,7 @@ static int dapm_new_mixer(struct snd_soc_dapm_context *dapm,
|
||||
path->long_name = NULL;
|
||||
return ret;
|
||||
}
|
||||
w->kcontrols[i] = path->kcontrol;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
@ -442,6 +443,8 @@ static int dapm_new_mux(struct snd_soc_dapm_context *dapm,
|
||||
if (ret < 0)
|
||||
goto err;
|
||||
|
||||
w->kcontrols[0] = kcontrol;
|
||||
|
||||
list_for_each_entry(path, &w->sources, list_sink)
|
||||
path->kcontrol = kcontrol;
|
||||
|
||||
@ -1480,6 +1483,7 @@ static void dapm_free_widgets(struct snd_soc_dapm_context *dapm)
|
||||
kfree(p->long_name);
|
||||
kfree(p);
|
||||
}
|
||||
kfree(w->kcontrols);
|
||||
kfree(w->name);
|
||||
kfree(w);
|
||||
}
|
||||
@ -1730,6 +1734,14 @@ int snd_soc_dapm_new_widgets(struct snd_soc_dapm_context *dapm)
|
||||
if (w->new)
|
||||
continue;
|
||||
|
||||
if (w->num_kcontrols) {
|
||||
w->kcontrols = kzalloc(w->num_kcontrols *
|
||||
sizeof(struct snd_kcontrol *),
|
||||
GFP_KERNEL);
|
||||
if (!w->kcontrols)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
switch(w->id) {
|
||||
case snd_soc_dapm_switch:
|
||||
case snd_soc_dapm_mixer:
|
||||
|
Loading…
Reference in New Issue
Block a user