aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-11-23 02:34:13 -0500
committerTakashi Iwai <tiwai@suse.de>2012-11-23 02:37:32 -0500
commitffe4d12b151018e831f0ca2e05fe78a55238c517 (patch)
treed85f1ce9cc36755511d1821b616ee4b01c551355 /sound/pci
parent98415eacb35df0ebce6b9b2d52af1af66ee0b72f (diff)
ALSA: hda - Add a fixup for internal mic on MacBook Pro 8,1
The internal mic on MBP81 gives only the right channel, and the left channel is static. Add a verb to fix the ADC2 channel mode to expand mono right to stereo. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=50781 Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r--sound/pci/hda/patch_cirrus.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_cirrus.c b/sound/pci/hda/patch_cirrus.c
index 6e1e711585f..a2537b2f872 100644
--- a/sound/pci/hda/patch_cirrus.c
+++ b/sound/pci/hda/patch_cirrus.c
@@ -85,6 +85,7 @@ enum {
85 CS420X_GPIO_13, 85 CS420X_GPIO_13,
86 CS420X_GPIO_23, 86 CS420X_GPIO_23,
87 CS420X_MBP101, 87 CS420X_MBP101,
88 CS420X_MBP81,
88 CS420X_AUTO, 89 CS420X_AUTO,
89 /* aliases */ 90 /* aliases */
90 CS420X_IMAC27_122 = CS420X_GPIO_23, 91 CS420X_IMAC27_122 = CS420X_GPIO_23,
@@ -1294,6 +1295,7 @@ static const struct hda_model_fixup cs420x_models[] = {
1294 { .id = CS420X_IMAC27_122, .name = "imac27_122" }, 1295 { .id = CS420X_IMAC27_122, .name = "imac27_122" },
1295 { .id = CS420X_APPLE, .name = "apple" }, 1296 { .id = CS420X_APPLE, .name = "apple" },
1296 { .id = CS420X_MBP101, .name = "mbp101" }, 1297 { .id = CS420X_MBP101, .name = "mbp101" },
1298 { .id = CS420X_MBP81, .name = "mbp81" },
1297 {} 1299 {}
1298}; 1300};
1299 1301
@@ -1306,6 +1308,7 @@ static const struct snd_pci_quirk cs420x_fixup_tbl[] = {
1306 /*SND_PCI_QUIRK(0x8086, 0x7270, "IMac 27 Inch", CS420X_IMAC27),*/ 1308 /*SND_PCI_QUIRK(0x8086, 0x7270, "IMac 27 Inch", CS420X_IMAC27),*/
1307 1309
1308 /* codec SSID */ 1310 /* codec SSID */
1311 SND_PCI_QUIRK(0x106b, 0x1c00, "MacBookPro 8,1", CS420X_MBP81),
1309 SND_PCI_QUIRK(0x106b, 0x2000, "iMac 12,2", CS420X_IMAC27_122), 1312 SND_PCI_QUIRK(0x106b, 0x2000, "iMac 12,2", CS420X_IMAC27_122),
1310 SND_PCI_QUIRK(0x106b, 0x2800, "MacBookPro 10,1", CS420X_MBP101), 1313 SND_PCI_QUIRK(0x106b, 0x2800, "MacBookPro 10,1", CS420X_MBP101),
1311 SND_PCI_QUIRK_VENDOR(0x106b, "Apple", CS420X_APPLE), 1314 SND_PCI_QUIRK_VENDOR(0x106b, "Apple", CS420X_APPLE),
@@ -1418,6 +1421,17 @@ static const struct hda_fixup cs420x_fixups[] = {
1418 .chained = true, 1421 .chained = true,
1419 .chain_id = CS420X_GPIO_13, 1422 .chain_id = CS420X_GPIO_13,
1420 }, 1423 },
1424 [CS420X_MBP81] = {
1425 .type = HDA_FIXUP_VERBS,
1426 .v.verbs = (const struct hda_verb[]) {
1427 /* internal mic ADC2: right only, single ended */
1428 {0x11, AC_VERB_SET_COEF_INDEX, IDX_ADC_CFG},
1429 {0x11, AC_VERB_SET_PROC_COEF, 0x102a},
1430 {}
1431 },
1432 .chained = true,
1433 .chain_id = CS420X_GPIO_13,
1434 },
1421}; 1435};
1422 1436
1423static int patch_cs420x(struct hda_codec *codec) 1437static int patch_cs420x(struct hda_codec *codec)