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@samsung.com --- 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';