Commit 668d1e96 authored by Takashi Iwai's avatar Takashi Iwai

ALSA: hda - Refactor alc_kcontrol_new() usages

Allocate the name string and assign the structure in
alc_kcontrol_new() itself to reduce the code.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent b9030a00
......@@ -903,22 +903,25 @@ static const struct snd_kcontrol_new alc_automute_mode_enum = {
.put = alc_automute_mode_put,
};
static struct snd_kcontrol_new *alc_kcontrol_new(struct alc_spec *spec)
static struct snd_kcontrol_new *
alc_kcontrol_new(struct alc_spec *spec, const char *name,
const struct snd_kcontrol_new *temp)
{
return snd_array_new(&spec->kctls);
struct snd_kcontrol_new *knew = snd_array_new(&spec->kctls);
if (!knew)
return NULL;
*knew = *temp;
knew->name = kstrdup(name, GFP_KERNEL);
if (!knew->name)
return NULL;
return knew;
}
static int alc_add_automute_mode_enum(struct hda_codec *codec)
{
struct alc_spec *spec = codec->spec;
struct snd_kcontrol_new *knew;
knew = alc_kcontrol_new(spec);
if (!knew)
return -ENOMEM;
*knew = alc_automute_mode_enum;
knew->name = kstrdup("Auto-Mute Mode", GFP_KERNEL);
if (!knew->name)
if (!alc_kcontrol_new(spec, "Auto-Mute Mode", &alc_automute_mode_enum))
return -ENOMEM;
return 0;
}
......@@ -1756,12 +1759,9 @@ static const struct snd_kcontrol_new alc_inv_dmic_sw = {
static int alc_add_inv_dmic_mixer(struct hda_codec *codec, hda_nid_t nid)
{
struct alc_spec *spec = codec->spec;
struct snd_kcontrol_new *knew = alc_kcontrol_new(spec);
if (!knew)
return -ENOMEM;
*knew = alc_inv_dmic_sw;
knew->name = kstrdup("Inverted Internal Mic Capture Switch", GFP_KERNEL);
if (!knew->name)
if (!alc_kcontrol_new(spec, "Inverted Internal Mic Capture Switch",
&alc_inv_dmic_sw))
return -ENOMEM;
spec->inv_dmic_fixup = 1;
spec->inv_dmic_muted = 0;
......@@ -2537,13 +2537,9 @@ static int add_control(struct alc_spec *spec, int type, const char *name,
{
struct snd_kcontrol_new *knew;
knew = alc_kcontrol_new(spec);
knew = alc_kcontrol_new(spec, name, &alc_control_templates[type]);
if (!knew)
return -ENOMEM;
*knew = alc_control_templates[type];
knew->name = kstrdup(name, GFP_KERNEL);
if (!knew->name)
return -ENOMEM;
knew->index = cidx;
if (get_amp_nid_(val))
knew->subdevice = HDA_SUBDEV_AMP_FLAG;
......@@ -3986,14 +3982,8 @@ static int alc_auto_add_multi_channel_mode(struct hda_codec *codec)
struct alc_spec *spec = codec->spec;
if (spec->multi_ios > 0) {
struct snd_kcontrol_new *knew;
knew = alc_kcontrol_new(spec);
if (!knew)
return -ENOMEM;
*knew = alc_auto_channel_mode_enum;
knew->name = kstrdup("Channel Mode", GFP_KERNEL);
if (!knew->name)
if (!alc_kcontrol_new(spec, "Channel Mode",
&alc_auto_channel_mode_enum))
return -ENOMEM;
}
return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment