The length of long control name doesn't include the length of widget name at present when widget->id is snd_soc_dapm_switch, so the long control name of dapm_switch is shortened. To avoid this problem, the long control name only for dapm_mixer_named_ctl must have simply the kcontrol name. Signed-off-by: Joonyoung Shim <jy0922.shim@xxxxxxxxxxx> --- sound/soc/soc-dapm.c | 21 +++++++++------------ 1 files changed, 9 insertions(+), 12 deletions(-) diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index 4b8dbbf..7a1fed1 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -331,26 +331,23 @@ static int dapm_new_mixer(struct snd_soc_codec *codec, * for dapm_mixer_named_ctl this is simply the * kcontrol name. */ - name_len = strlen(w->kcontrols[i].name) + 1; - if (w->id == snd_soc_dapm_mixer) - name_len += 1 + strlen(w->name); + if (w->id == snd_soc_dapm_mixer_named_ctl) + name_len = strlen(w->kcontrols[i].name) + 1; + else + name_len = 2 + strlen(w->name) + + strlen(w->kcontrols[i].name); path->long_name = kmalloc(name_len, GFP_KERNEL); if (path->long_name == NULL) return -ENOMEM; - switch (w->id) { - case snd_soc_dapm_mixer: - default: - snprintf(path->long_name, name_len, "%s %s", - w->name, w->kcontrols[i].name); - break; - case snd_soc_dapm_mixer_named_ctl: + if (w->id == snd_soc_dapm_mixer_named_ctl) snprintf(path->long_name, name_len, "%s", w->kcontrols[i].name); - break; - } + else + snprintf(path->long_name, name_len, "%s %s", + w->name, w->kcontrols[i].name); path->long_name[name_len - 1] = '\0'; -- 1.5.6.3 -- - Joonyoung Shim _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel