Commit 3fc24d85 authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela

[ALSA] hda-codec - Define pin configs for MacBooks

Define pin configs for MacBook and MacBook Pro with STAC92xx codecs.
The latter is detected automatically by checking codec SSID now.
Also, fixed the documentation regarding available modeliof sigmatel
codec chips.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent cc69d12d
...@@ -895,10 +895,16 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. ...@@ -895,10 +895,16 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
can be adjusted. Appearing only when compiled with can be adjusted. Appearing only when compiled with
$CONFIG_SND_DEBUG=y $CONFIG_SND_DEBUG=y
STAC9200/9205/9220/9221/9254 STAC9200/9205/9254
ref Reference board
STAC9220/9221
ref Reference board ref Reference board
3stack D945 3stack 3stack D945 3stack
5stack D945 5stack + SPDIF 5stack D945 5stack + SPDIF
macmini Intel Mac Mini
macbook Intel Mac Book
macbook-pro Intel Mac Book Pro
STAC9202/9250/9251 STAC9202/9250/9251
ref Reference board, base config ref Reference board, base config
......
...@@ -59,6 +59,8 @@ enum { ...@@ -59,6 +59,8 @@ enum {
STAC_D945GTP3, STAC_D945GTP3,
STAC_D945GTP5, STAC_D945GTP5,
STAC_MACMINI, STAC_MACMINI,
STAC_MACBOOK,
STAC_MACBOOK_PRO,
STAC_922X_MODELS STAC_922X_MODELS
}; };
...@@ -521,11 +523,25 @@ static unsigned int d945gtp5_pin_configs[10] = { ...@@ -521,11 +523,25 @@ static unsigned int d945gtp5_pin_configs[10] = {
0x02a19320, 0x40000100, 0x02a19320, 0x40000100,
}; };
static unsigned int macbook_pin_configs[10] = {
0x0321e230, 0x03a1e020, 0x400000fd, 0x9017e110,
0x400000fe, 0x0381e021, 0x1345e240, 0x13c5e22e,
0x400000fc, 0x400000fb,
};
static unsigned int macbook_pro_pin_configs[10] = {
0x0221401f, 0x90a70120, 0x01813024, 0x01014010,
0x400000fd, 0x01016011, 0x1345e240, 0x13c5e22e,
0x400000fc, 0x400000fb,
};
static unsigned int *stac922x_brd_tbl[STAC_922X_MODELS] = { static unsigned int *stac922x_brd_tbl[STAC_922X_MODELS] = {
[STAC_D945_REF] = ref922x_pin_configs, [STAC_D945_REF] = ref922x_pin_configs,
[STAC_D945GTP3] = d945gtp3_pin_configs, [STAC_D945GTP3] = d945gtp3_pin_configs,
[STAC_D945GTP5] = d945gtp5_pin_configs, [STAC_D945GTP5] = d945gtp5_pin_configs,
[STAC_MACMINI] = d945gtp5_pin_configs, [STAC_MACMINI] = d945gtp5_pin_configs,
[STAC_MACBOOK] = macbook_pin_configs,
[STAC_MACBOOK_PRO] = macbook_pro_pin_configs,
}; };
static const char *stac922x_models[STAC_922X_MODELS] = { static const char *stac922x_models[STAC_922X_MODELS] = {
...@@ -533,6 +549,8 @@ static const char *stac922x_models[STAC_922X_MODELS] = { ...@@ -533,6 +549,8 @@ static const char *stac922x_models[STAC_922X_MODELS] = {
[STAC_D945GTP5] = "5stack", [STAC_D945GTP5] = "5stack",
[STAC_D945GTP3] = "3stack", [STAC_D945GTP3] = "3stack",
[STAC_MACMINI] = "macmini", [STAC_MACMINI] = "macmini",
[STAC_MACBOOK] = "macbook",
[STAC_MACBOOK_PRO] = "macbook-pro",
}; };
static struct snd_pci_quirk stac922x_cfg_tbl[] = { static struct snd_pci_quirk stac922x_cfg_tbl[] = {
...@@ -1866,6 +1884,18 @@ static int patch_stac922x(struct hda_codec *codec) ...@@ -1866,6 +1884,18 @@ static int patch_stac922x(struct hda_codec *codec)
spec->board_config = snd_hda_check_board_config(codec, STAC_922X_MODELS, spec->board_config = snd_hda_check_board_config(codec, STAC_922X_MODELS,
stac922x_models, stac922x_models,
stac922x_cfg_tbl); stac922x_cfg_tbl);
if (spec->board_config == STAC_MACMINI) {
spec->gpio_mute = 1;
/* Intel Macs have all same PCI SSID, so we need to check
* codec SSID to distinguish the exact models
*/
switch (codec->subsystem_id) {
case 0x106b1e00:
spec->board_config = STAC_MACBOOK_PRO;
break;
}
}
again: again:
if (spec->board_config < 0) { if (spec->board_config < 0) {
snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC922x, " snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC922x, "
...@@ -1906,9 +1936,6 @@ static int patch_stac922x(struct hda_codec *codec) ...@@ -1906,9 +1936,6 @@ static int patch_stac922x(struct hda_codec *codec)
return err; return err;
} }
if (spec->board_config == STAC_MACMINI)
spec->gpio_mute = 1;
codec->patch_ops = stac92xx_patch_ops; codec->patch_ops = stac92xx_patch_ops;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment