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: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
b9030a005d
commit
668d1e9673
1 changed files with 18 additions and 28 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue