Skip to content

Commit

Permalink
ALSA: HDA: Refactor Realtek's automute
Browse files Browse the repository at this point in the history
Increase readability and understandability in the automute code.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
David Henningsson authored and Takashi Iwai committed Sep 20, 2011
1 parent 290b421 commit 42cf0d0
Show file tree
Hide file tree
Showing 5 changed files with 131 additions and 148 deletions.
28 changes: 9 additions & 19 deletions sound/pci/hda/alc262_quirks.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,6 @@ static const struct snd_kcontrol_new alc262_base_mixer[] = {
};

/* bind hp and internal speaker mute (with plug check) as master switch */
static void alc262_hippo_master_update(struct hda_codec *codec)
{
update_speakers(codec);
}

static int alc262_hippo_master_sw_get(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
Expand All @@ -85,7 +81,7 @@ static int alc262_hippo_master_sw_put(struct snd_kcontrol *kcontrol,
if (val == spec->master_mute)
return 0;
spec->master_mute = val;
alc262_hippo_master_update(codec);
update_outputs(codec);
return 1;
}

Expand Down Expand Up @@ -147,8 +143,7 @@ static void alc262_hippo_setup(struct hda_codec *codec)

spec->autocfg.hp_pins[0] = 0x15;
spec->autocfg.speaker_pins[0] = 0x14;
spec->automute = 1;
spec->automute_mode = ALC_AUTOMUTE_AMP;
alc_simple_setup_automute(spec, ALC_AUTOMUTE_AMP);
}

static void alc262_hippo1_setup(struct hda_codec *codec)
Expand All @@ -157,8 +152,7 @@ static void alc262_hippo1_setup(struct hda_codec *codec)

spec->autocfg.hp_pins[0] = 0x1b;
spec->autocfg.speaker_pins[0] = 0x14;
spec->automute = 1;
spec->automute_mode = ALC_AUTOMUTE_AMP;
alc_simple_setup_automute(spec, ALC_AUTOMUTE_AMP);
}


Expand Down Expand Up @@ -221,8 +215,7 @@ static void alc262_tyan_setup(struct hda_codec *codec)

spec->autocfg.hp_pins[0] = 0x1b;
spec->autocfg.speaker_pins[0] = 0x15;
spec->automute = 1;
spec->automute_mode = ALC_AUTOMUTE_AMP;
alc_simple_setup_automute(spec, ALC_AUTOMUTE_AMP);
}


Expand Down Expand Up @@ -364,8 +357,7 @@ static void alc262_toshiba_s06_setup(struct hda_codec *codec)
spec->ext_mic_pin = 0x18;
spec->int_mic_pin = 0x12;
spec->auto_mic = 1;
spec->automute = 1;
spec->automute_mode = ALC_AUTOMUTE_PIN;
alc_simple_setup_automute(spec, ALC_AUTOMUTE_PIN);
}

/*
Expand Down Expand Up @@ -446,8 +438,7 @@ static void alc262_fujitsu_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14;
spec->autocfg.hp_pins[1] = 0x1b;
spec->autocfg.speaker_pins[0] = 0x15;
spec->automute = 1;
spec->automute_mode = ALC_AUTOMUTE_AMP;
alc_simple_setup_automute(spec, ALC_AUTOMUTE_AMP);
}

/* bind volumes of both NID 0x0c and 0x0d */
Expand Down Expand Up @@ -493,8 +484,7 @@ static void alc262_lenovo_3000_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x1b;
spec->autocfg.speaker_pins[0] = 0x14;
spec->autocfg.speaker_pins[1] = 0x16;
spec->automute = 1;
spec->automute_mode = ALC_AUTOMUTE_AMP;
alc_simple_setup_automute(spec, ALC_AUTOMUTE_AMP);
}

static const struct snd_kcontrol_new alc262_lenovo_3000_mixer[] = {
Expand Down Expand Up @@ -599,8 +589,8 @@ static void alc262_ultra_automute(struct hda_codec *codec)
mute = 0;
/* auto-mute only when HP is used as HP */
if (!spec->cur_mux[0]) {
spec->jack_present = snd_hda_jack_detect(codec, 0x15);
if (spec->jack_present)
spec->hp_jack_present = snd_hda_jack_detect(codec, 0x15);
if (spec->hp_jack_present)
mute = HDA_AMP_MUTE;
}
/* mute/unmute internal speaker */
Expand Down
17 changes: 6 additions & 11 deletions sound/pci/hda/alc880_quirks.c
Original file line number Diff line number Diff line change
Expand Up @@ -749,8 +749,7 @@ static void alc880_uniwill_setup(struct hda_codec *codec)
spec->autocfg.hp_pins[0] = 0x14;
spec->autocfg.speaker_pins[0] = 0x15;
spec->autocfg.speaker_pins[0] = 0x16;
spec->automute = 1;
spec->automute_mode = ALC_AUTOMUTE_AMP;
alc_simple_setup_automute(spec, ALC_AUTOMUTE_AMP);
}

static void alc880_uniwill_init_hook(struct hda_codec *codec)
Expand Down Expand Up @@ -781,8 +780,7 @@ static void alc880_uniwill_p53_setup(struct hda_codec *codec)

spec->autocfg.hp_pins[0] = 0x14;
spec->autocfg.speaker_pins[0] = 0x15;
spec->automute = 1;
spec->automute_mode = ALC_AUTOMUTE_AMP;
alc_simple_setup_automute(spec, ALC_AUTOMUTE_AMP);
}

static void alc880_uniwill_p53_dcvol_automute(struct hda_codec *codec)
Expand Down Expand Up @@ -1051,8 +1049,7 @@ static void alc880_lg_setup(struct hda_codec *codec)

spec->autocfg.hp_pins[0] = 0x1b;
spec->autocfg.speaker_pins[0] = 0x17;
spec->automute = 1;
spec->automute_mode = ALC_AUTOMUTE_AMP;
alc_simple_setup_automute(spec, ALC_AUTOMUTE_AMP);
}

/*
Expand Down Expand Up @@ -1137,8 +1134,7 @@ static void alc880_lg_lw_setup(struct hda_codec *codec)

spec->autocfg.hp_pins[0] = 0x1b;
spec->autocfg.speaker_pins[0] = 0x14;
spec->automute = 1;
spec->automute_mode = ALC_AUTOMUTE_AMP;
alc_simple_setup_automute(spec, ALC_AUTOMUTE_AMP);
}

static const struct snd_kcontrol_new alc880_medion_rim_mixer[] = {
Expand Down Expand Up @@ -1188,7 +1184,7 @@ static void alc880_medion_rim_automute(struct hda_codec *codec)
struct alc_spec *spec = codec->spec;
alc_hp_automute(codec);
/* toggle EAPD */
if (spec->jack_present)
if (spec->hp_jack_present)
snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA, 0);
else
snd_hda_codec_write(codec, 0x01, 0, AC_VERB_SET_GPIO_DATA, 2);
Expand All @@ -1210,8 +1206,7 @@ static void alc880_medion_rim_setup(struct hda_codec *codec)

spec->autocfg.hp_pins[0] = 0x14;
spec->autocfg.speaker_pins[0] = 0x1b;
spec->automute = 1;
spec->automute_mode = ALC_AUTOMUTE_AMP;
alc_simple_setup_automute(spec, ALC_AUTOMUTE_AMP);
}

#ifdef CONFIG_SND_HDA_POWER_SAVE
Expand Down
Loading

0 comments on commit 42cf0d0

Please sign in to comment.