| From 237ffc8311d6d1022961c882324e737571d08798 Mon Sep 17 00:00:00 2001 |
| From: Vince Weaver <vweaver1@eecs.utk.edu> |
| Date: Wed, 22 Sep 2010 17:31:37 -0400 |
| Subject: [PATCH] ALSA: hda - MacBookPro 5,3 line-in support |
| |
| commit 4e7d7c6018567fa03f387d06602d4145c75ebbe0 upstream. |
| |
| I've found the following patch is necessary to enable line-in on |
| my MacBookPro 5,3 machine. With the patch applied I've successfully |
| recorded audio from the line-in jack. This is based on the existing |
| 5,5 support. |
| |
| Signed-off-by: Vince Weaver <vweaver1@eecs.utk.edu> |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/sound/pci/hda/patch_cirrus.c b/sound/pci/hda/patch_cirrus.c |
| index 350ee8a..1c6d1c3 100644 |
| --- a/sound/pci/hda/patch_cirrus.c |
| +++ b/sound/pci/hda/patch_cirrus.c |
| @@ -65,6 +65,7 @@ struct cs_spec { |
| |
| /* available models */ |
| enum { |
| + CS420X_MBP53, |
| CS420X_MBP55, |
| CS420X_IMAC27, |
| CS420X_AUTO, |
| @@ -838,7 +839,8 @@ static void cs_automute(struct hda_codec *codec) |
| AC_VERB_SET_PIN_WIDGET_CONTROL, |
| hp_present ? 0 : PIN_OUT); |
| } |
| - if (spec->board_config == CS420X_MBP55 || |
| + if (spec->board_config == CS420X_MBP53 || |
| + spec->board_config == CS420X_MBP55 || |
| spec->board_config == CS420X_IMAC27) { |
| unsigned int gpio = hp_present ? 0x02 : 0x08; |
| snd_hda_codec_write(codec, 0x01, 0, |
| @@ -1080,6 +1082,7 @@ static int cs_parse_auto_config(struct hda_codec *codec) |
| } |
| |
| static const char *cs420x_models[CS420X_MODELS] = { |
| + [CS420X_MBP53] = "mbp53", |
| [CS420X_MBP55] = "mbp55", |
| [CS420X_IMAC27] = "imac27", |
| [CS420X_AUTO] = "auto", |
| @@ -1087,6 +1090,7 @@ static const char *cs420x_models[CS420X_MODELS] = { |
| |
| |
| static struct snd_pci_quirk cs420x_cfg_tbl[] = { |
| + SND_PCI_QUIRK(0x10de, 0x0ac0, "MacBookPro 5,3", CS420X_MBP53), |
| SND_PCI_QUIRK(0x10de, 0xcb79, "MacBookPro 5,5", CS420X_MBP55), |
| SND_PCI_QUIRK(0x8086, 0x7270, "IMac 27 Inch", CS420X_IMAC27), |
| {} /* terminator */ |
| @@ -1097,6 +1101,20 @@ struct cs_pincfg { |
| u32 val; |
| }; |
| |
| +static struct cs_pincfg mbp53_pincfgs[] = { |
| + { 0x09, 0x012b4050 }, |
| + { 0x0a, 0x90100141 }, |
| + { 0x0b, 0x90100140 }, |
| + { 0x0c, 0x018b3020 }, |
| + { 0x0d, 0x90a00110 }, |
| + { 0x0e, 0x400000f0 }, |
| + { 0x0f, 0x01cbe030 }, |
| + { 0x10, 0x014be060 }, |
| + { 0x12, 0x400000f0 }, |
| + { 0x15, 0x400000f0 }, |
| + {} /* terminator */ |
| +}; |
| + |
| static struct cs_pincfg mbp55_pincfgs[] = { |
| { 0x09, 0x012b4030 }, |
| { 0x0a, 0x90100121 }, |
| @@ -1126,6 +1144,7 @@ static struct cs_pincfg imac27_pincfgs[] = { |
| }; |
| |
| static struct cs_pincfg *cs_pincfgs[CS420X_MODELS] = { |
| + [CS420X_MBP53] = mbp53_pincfgs, |
| [CS420X_MBP55] = mbp55_pincfgs, |
| [CS420X_IMAC27] = imac27_pincfgs, |
| }; |
| @@ -1158,6 +1177,7 @@ static int patch_cs420x(struct hda_codec *codec) |
| |
| switch (spec->board_config) { |
| case CS420X_IMAC27: |
| + case CS420X_MBP53: |
| case CS420X_MBP55: |
| /* GPIO1 = headphones */ |
| /* GPIO3 = speakers */ |
| -- |
| 1.7.7 |
| |