Skip to content

Commit

Permalink
ASoC: dapm: Append "Autodisable" to autodisable widget names
Browse files Browse the repository at this point in the history
This makes it a little easier to follow what is happening in debugfs.
Additionally is also useful in facilitating work to add autodisable
muxes because the control name is already used for the mux widget and
thus shouldn't be reused for the autodisable widget.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
Tested-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Charles Keepax authored and Mark Brown committed May 6, 2015
1 parent 5967cb3 commit 773da9b
Showing 1 changed file with 20 additions and 3 deletions.
23 changes: 20 additions & 3 deletions sound/soc/soc-dapm.c
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,8 @@ static int dapm_kcontrol_data_alloc(struct snd_soc_dapm_widget *widget,
{
struct dapm_kcontrol_data *data;
struct soc_mixer_control *mc;
const char *name;
int ret;

data = kzalloc(sizeof(*data), GFP_KERNEL);
if (!data)
Expand All @@ -324,6 +326,13 @@ static int dapm_kcontrol_data_alloc(struct snd_soc_dapm_widget *widget,
if (mc->autodisable) {
struct snd_soc_dapm_widget template;

name = kasprintf(GFP_KERNEL, "%s %s", kcontrol->id.name,
"Autodisable");
if (!name) {
ret = -ENOMEM;
goto err_data;
}

memset(&template, 0, sizeof(template));
template.reg = mc->reg;
template.mask = (1 << fls(mc->max)) - 1;
Expand All @@ -334,15 +343,15 @@ static int dapm_kcontrol_data_alloc(struct snd_soc_dapm_widget *widget,
template.off_val = 0;
template.on_val = template.off_val;
template.id = snd_soc_dapm_kcontrol;
template.name = kcontrol->id.name;
template.name = name;

data->value = template.on_val;

data->widget = snd_soc_dapm_new_control(widget->dapm,
&template);
if (!data->widget) {
kfree(data);
return -ENOMEM;
ret = -ENOMEM;
goto err_name;
}
}
break;
Expand All @@ -353,11 +362,19 @@ static int dapm_kcontrol_data_alloc(struct snd_soc_dapm_widget *widget,
kcontrol->private_data = data;

return 0;

err_name:
kfree(name);
err_data:
kfree(data);
return ret;
}

static void dapm_kcontrol_free(struct snd_kcontrol *kctl)
{
struct dapm_kcontrol_data *data = snd_kcontrol_chip(kctl);
if (data->widget)
kfree(data->widget->name);
kfree(data->wlist);
kfree(data);
}
Expand Down

0 comments on commit 773da9b

Please sign in to comment.