aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/pci/hda/patch_realtek.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 415a6db4c909..a1b6c9661d45 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3271,11 +3271,20 @@ static struct snd_kcontrol_new alc260_fujitsu_mixer[] = {
3271 * and the output jack. If this turns out to be the case for all such 3271 * and the output jack. If this turns out to be the case for all such
3272 * models the "Line Jack Mode" mode could be changed from ALC_PIN_DIR_INOUT 3272 * models the "Line Jack Mode" mode could be changed from ALC_PIN_DIR_INOUT
3273 * to ALC_PIN_DIR_INOUT_NOMICBIAS. 3273 * to ALC_PIN_DIR_INOUT_NOMICBIAS.
3274 *
3275 * The C20x Tablet series have a mono internal speaker which is controlled
3276 * via the chip's Mono sum widget and pin complex, so include the necessary
3277 * controls for such models. On models without a "mono speaker" the control
3278 * won't do anything.
3274 */ 3279 */
3275static struct snd_kcontrol_new alc260_acer_mixer[] = { 3280static struct snd_kcontrol_new alc260_acer_mixer[] = {
3276 HDA_CODEC_VOLUME("Master Playback Volume", 0x08, 0x0, HDA_OUTPUT), 3281 HDA_CODEC_VOLUME("Master Playback Volume", 0x08, 0x0, HDA_OUTPUT),
3277 HDA_BIND_MUTE("Master Playback Switch", 0x08, 2, HDA_INPUT), 3282 HDA_BIND_MUTE("Master Playback Switch", 0x08, 2, HDA_INPUT),
3278 ALC_PIN_MODE("Headphone Jack Mode", 0x0f, ALC_PIN_DIR_INOUT), 3283 ALC_PIN_MODE("Headphone Jack Mode", 0x0f, ALC_PIN_DIR_INOUT),
3284 HDA_CODEC_VOLUME_MONO("Mono Speaker Playback Volume", 0x0a, 1, 0x0,
3285 HDA_OUTPUT),
3286 HDA_BIND_MUTE_MONO("Mono Speaker Playback Switch", 0x0a, 1, 2,
3287 HDA_INPUT),
3279 HDA_CODEC_VOLUME("CD Playback Volume", 0x07, 0x04, HDA_INPUT), 3288 HDA_CODEC_VOLUME("CD Playback Volume", 0x07, 0x04, HDA_INPUT),
3280 HDA_CODEC_MUTE("CD Playback Switch", 0x07, 0x04, HDA_INPUT), 3289 HDA_CODEC_MUTE("CD Playback Switch", 0x07, 0x04, HDA_INPUT),
3281 HDA_CODEC_VOLUME("Mic Playback Volume", 0x07, 0x0, HDA_INPUT), 3290 HDA_CODEC_VOLUME("Mic Playback Volume", 0x07, 0x0, HDA_INPUT),
@@ -3590,11 +3599,11 @@ static struct hda_verb alc260_acer_init_verbs[] = {
3590 {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF50}, 3599 {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF50},
3591 /* Line In jack is connected to Line1 pin */ 3600 /* Line In jack is connected to Line1 pin */
3592 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, 3601 {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN},
3602 /* Some Acers (eg: C20x Tablets) use Mono pin for internal speaker */
3603 {0x11, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
3593 /* Ensure all other unused pins are disabled and muted. */ 3604 /* Ensure all other unused pins are disabled and muted. */
3594 {0x10, AC_VERB_SET_PIN_WIDGET_CONTROL, 0}, 3605 {0x10, AC_VERB_SET_PIN_WIDGET_CONTROL, 0},
3595 {0x10, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, 3606 {0x10, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
3596 {0x11, AC_VERB_SET_PIN_WIDGET_CONTROL, 0},
3597 {0x11, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
3598 {0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, 0}, 3607 {0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, 0},
3599 {0x13, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, 3608 {0x13, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
3600 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, 0}, 3609 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, 0},
@@ -3622,6 +3631,8 @@ static struct hda_verb alc260_acer_init_verbs[] = {
3622 3631
3623 /* Unmute Line-out pin widget amp left and right (no equiv mixer ctrl) */ 3632 /* Unmute Line-out pin widget amp left and right (no equiv mixer ctrl) */
3624 {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, 3633 {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
3634 /* Unmute mono pin widget amp output (no equiv mixer ctrl) */
3635 {0x11, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
3625 /* Unmute Mic1 and Line1 pin widget input buffers since they start as 3636 /* Unmute Mic1 and Line1 pin widget input buffers since they start as
3626 * inputs. If the pin mode is changed by the user the pin mode control 3637 * inputs. If the pin mode is changed by the user the pin mode control
3627 * will take care of enabling the pin's input/output buffers as needed. 3638 * will take care of enabling the pin's input/output buffers as needed.
@@ -4122,6 +4133,7 @@ static const char *alc260_models[ALC260_MODEL_LAST] = {
4122}; 4133};
4123 4134
4124static struct snd_pci_quirk alc260_cfg_tbl[] = { 4135static struct snd_pci_quirk alc260_cfg_tbl[] = {
4136 SND_PCI_QUIRK(0x1025, 0x007b, "Acer C20x", ALC260_ACER),
4125 SND_PCI_QUIRK(0x1025, 0x008f, "Acer", ALC260_ACER), 4137 SND_PCI_QUIRK(0x1025, 0x008f, "Acer", ALC260_ACER),
4126 SND_PCI_QUIRK(0x103c, 0x3010, "HP", ALC260_HP_3013), 4138 SND_PCI_QUIRK(0x103c, 0x3010, "HP", ALC260_HP_3013),
4127 SND_PCI_QUIRK(0x103c, 0x3011, "HP", ALC260_HP), 4139 SND_PCI_QUIRK(0x103c, 0x3011, "HP", ALC260_HP),