diff options
| author | David Henningsson <david.henningsson@canonical.com> | 2012-07-20 04:37:25 -0400 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2012-07-20 04:45:07 -0400 |
| commit | 108cc108a3bb42fe4705df1317ff98e1e29428a6 (patch) | |
| tree | 78c4cb761d85350512a1d521fcc73f381552a8f6 | |
| parent | 9e76e6d031482194a5b24d8e9ab88063fbd6b4b5 (diff) | |
ALSA: hda - add dock support for Thinkpad X230 Tablet
Also add a model/fixup string "lenovo-dock", so that other Thinkpad
users will be able to test this fixup easily, to see if it enables
dock I/O for them as well.
Cc: stable@kernel.org
BugLink: https://bugs.launchpad.net/bugs/1026953
Tested-by: John McCarron <john.mccarron@canonical.com>
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
| -rw-r--r-- | Documentation/sound/alsa/HD-Audio-Models.txt | 3 | ||||
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 27 |
2 files changed, 29 insertions, 1 deletions
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt index 2ea8cf2819cf..7456360e161c 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
| @@ -21,13 +21,14 @@ ALC267/268 | |||
| 21 | ========== | 21 | ========== |
| 22 | inv-dmic Inverted internal mic workaround | 22 | inv-dmic Inverted internal mic workaround |
| 23 | 23 | ||
| 24 | ALC269 | 24 | ALC269/270/275/276/280/282 |
| 25 | ====== | 25 | ====== |
| 26 | laptop-amic Laptops with analog-mic input | 26 | laptop-amic Laptops with analog-mic input |
| 27 | laptop-dmic Laptops with digital-mic input | 27 | laptop-dmic Laptops with digital-mic input |
| 28 | alc269-dmic Enable ALC269(VA) digital mic workaround | 28 | alc269-dmic Enable ALC269(VA) digital mic workaround |
| 29 | alc271-dmic Enable ALC271X digital mic workaround | 29 | alc271-dmic Enable ALC271X digital mic workaround |
| 30 | inv-dmic Inverted internal mic workaround | 30 | inv-dmic Inverted internal mic workaround |
| 31 | lenovo-dock Enables docking station I/O for some Lenovos | ||
| 31 | 32 | ||
| 32 | ALC662/663/272 | 33 | ALC662/663/272 |
| 33 | ============== | 34 | ============== |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 537c365716a6..f141395dfee6 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
| @@ -5881,6 +5881,15 @@ static int alc269_resume(struct hda_codec *codec) | |||
| 5881 | } | 5881 | } |
| 5882 | #endif /* CONFIG_PM */ | 5882 | #endif /* CONFIG_PM */ |
| 5883 | 5883 | ||
| 5884 | static void alc269_fixup_pincfg_no_hp_to_lineout(struct hda_codec *codec, | ||
| 5885 | const struct alc_fixup *fix, int action) | ||
| 5886 | { | ||
| 5887 | struct alc_spec *spec = codec->spec; | ||
| 5888 | |||
| 5889 | if (action == ALC_FIXUP_ACT_PRE_PROBE) | ||
| 5890 | spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP; | ||
| 5891 | } | ||
| 5892 | |||
| 5884 | static void alc269_fixup_hweq(struct hda_codec *codec, | 5893 | static void alc269_fixup_hweq(struct hda_codec *codec, |
| 5885 | const struct alc_fixup *fix, int action) | 5894 | const struct alc_fixup *fix, int action) |
| 5886 | { | 5895 | { |
| @@ -6007,6 +6016,8 @@ enum { | |||
| 6007 | ALC269VB_FIXUP_DMIC, | 6016 | ALC269VB_FIXUP_DMIC, |
| 6008 | ALC269_FIXUP_MIC2_MUTE_LED, | 6017 | ALC269_FIXUP_MIC2_MUTE_LED, |
| 6009 | ALC269_FIXUP_INV_DMIC, | 6018 | ALC269_FIXUP_INV_DMIC, |
| 6019 | ALC269_FIXUP_LENOVO_DOCK, | ||
| 6020 | ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT, | ||
| 6010 | }; | 6021 | }; |
| 6011 | 6022 | ||
| 6012 | static const struct alc_fixup alc269_fixups[] = { | 6023 | static const struct alc_fixup alc269_fixups[] = { |
| @@ -6135,6 +6146,20 @@ static const struct alc_fixup alc269_fixups[] = { | |||
| 6135 | .type = ALC_FIXUP_FUNC, | 6146 | .type = ALC_FIXUP_FUNC, |
| 6136 | .v.func = alc_fixup_inv_dmic_0x12, | 6147 | .v.func = alc_fixup_inv_dmic_0x12, |
| 6137 | }, | 6148 | }, |
| 6149 | [ALC269_FIXUP_LENOVO_DOCK] = { | ||
| 6150 | .type = ALC_FIXUP_PINS, | ||
| 6151 | .v.pins = (const struct alc_pincfg[]) { | ||
| 6152 | { 0x19, 0x23a11040 }, /* dock mic */ | ||
| 6153 | { 0x1b, 0x2121103f }, /* dock headphone */ | ||
| 6154 | { } | ||
| 6155 | }, | ||
| 6156 | .chained = true, | ||
| 6157 | .chain_id = ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT | ||
| 6158 | }, | ||
| 6159 | [ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT] = { | ||
| 6160 | .type = ALC_FIXUP_FUNC, | ||
| 6161 | .v.func = alc269_fixup_pincfg_no_hp_to_lineout, | ||
| 6162 | }, | ||
| 6138 | }; | 6163 | }; |
| 6139 | 6164 | ||
| 6140 | static const struct snd_pci_quirk alc269_fixup_tbl[] = { | 6165 | static const struct snd_pci_quirk alc269_fixup_tbl[] = { |
| @@ -6161,6 +6186,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { | |||
| 6161 | SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE), | 6186 | SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE), |
| 6162 | SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE), | 6187 | SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE), |
| 6163 | SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE), | 6188 | SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE), |
| 6189 | SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK), | ||
| 6164 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_QUANTA_MUTE), | 6190 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_QUANTA_MUTE), |
| 6165 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Lenovo Ideapd", ALC269_FIXUP_PCM_44K), | 6191 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Lenovo Ideapd", ALC269_FIXUP_PCM_44K), |
| 6166 | SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), | 6192 | SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), |
| @@ -6222,6 +6248,7 @@ static const struct alc_model_fixup alc269_fixup_models[] = { | |||
| 6222 | {.id = ALC269_FIXUP_STEREO_DMIC, .name = "alc269-dmic"}, | 6248 | {.id = ALC269_FIXUP_STEREO_DMIC, .name = "alc269-dmic"}, |
| 6223 | {.id = ALC271_FIXUP_DMIC, .name = "alc271-dmic"}, | 6249 | {.id = ALC271_FIXUP_DMIC, .name = "alc271-dmic"}, |
| 6224 | {.id = ALC269_FIXUP_INV_DMIC, .name = "inv-dmic"}, | 6250 | {.id = ALC269_FIXUP_INV_DMIC, .name = "inv-dmic"}, |
| 6251 | {.id = ALC269_FIXUP_LENOVO_DOCK, .name = "lenovo-dock"}, | ||
| 6225 | {} | 6252 | {} |
| 6226 | }; | 6253 | }; |
| 6227 | 6254 | ||
