Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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
			$CONFIG_SND_DEBUG=y

	STAC9200/9205/9220/9221/9254
	STAC9200/9205/9254
	  ref		Reference board

	STAC9220/9221
	  ref		Reference board
	  3stack	D945 3stack
	  5stack	D945 5stack + SPDIF
	  macmini	Intel Mac Mini
	  macbook	Intel Mac Book
	  macbook-pro	Intel Mac Book Pro

	STAC9202/9250/9251
	  ref		Reference board, base config
+30 −3
Original line number Diff line number Diff line
@@ -59,6 +59,8 @@ enum {
	STAC_D945GTP3,
	STAC_D945GTP5,
	STAC_MACMINI,
	STAC_MACBOOK,
	STAC_MACBOOK_PRO,
	STAC_922X_MODELS
};

@@ -521,11 +523,25 @@ static unsigned int d945gtp5_pin_configs[10] = {
	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] = {
	[STAC_D945_REF] = ref922x_pin_configs,
	[STAC_D945GTP3] = d945gtp3_pin_configs,
	[STAC_D945GTP5] = 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] = {
@@ -533,6 +549,8 @@ static const char *stac922x_models[STAC_922X_MODELS] = {
	[STAC_D945GTP5]	= "5stack",
	[STAC_D945GTP3]	= "3stack",
	[STAC_MACMINI]	= "macmini",
	[STAC_MACBOOK]	= "macbook",
	[STAC_MACBOOK_PRO]	= "macbook-pro",
};

static struct snd_pci_quirk stac922x_cfg_tbl[] = {
@@ -1866,6 +1884,18 @@ static int patch_stac922x(struct hda_codec *codec)
	spec->board_config = snd_hda_check_board_config(codec, STAC_922X_MODELS,
							stac922x_models,
							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:
	if (spec->board_config < 0) {
		snd_printdd(KERN_INFO "hda_codec: Unknown model for STAC922x, "
@@ -1906,9 +1936,6 @@ static int patch_stac922x(struct hda_codec *codec)
		return err;
	}

	if (spec->board_config == STAC_MACMINI)
		spec->gpio_mute = 1;

	codec->patch_ops = stac92xx_patch_ops;

	return 0;