Re: trying to get sound working at a mac book pro (core 2 duo)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At Wed, 14 Feb 2007 17:13:20 -0800,
Tobin Davis wrote:
> 
> On Wed, 2007-02-14 at 23:27 +0100, Takashi Iwai wrote:
> 
>     The driver always takes PCI SSID as a key for table-lookup.
>     The codec has its own SSID (and often a different value from PCI SSID)
>     as proc shows, but it's not used anywhere in the driver code.
> 
> This is the second time I've run into a system that has an HD audio chip, but doesn't
> have a unique PCI SSID. The first was the Mac Pro, where there is no SSID for the HD
> audio bus (see my patch for ALC885 Mac Pro - 12/15).
> 
> Takashi, we may want to look into a function that uses the codec subsystem id as a
> fallback, with the PCI SSID taking precedence.  We already detect the HD Audio bus,
> through the PCI ID.  Let me know.

As I mentioned in another mail, so far, it'd be much easier to check
the codec SSID in each patch code rather than changing the common PCI
quirk lookup.

An experimental patch is below.  Rafael, please give it a try.


Takashi

diff -r d5fda8fa934c Documentation/ALSA-Configuration.txt
--- a/Documentation/ALSA-Configuration.txt	Wed Feb 14 15:23:57 2007 +0100
+++ b/Documentation/ALSA-Configuration.txt	Thu Feb 15 13:09:55 2007 +0100
@@ -895,10 +895,16 @@ Prior to version 0.9.0rc4 options had a 
 			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
diff -r d5fda8fa934c pci/hda/patch_sigmatel.c
--- a/pci/hda/patch_sigmatel.c	Wed Feb 14 15:23:57 2007 +0100
+++ b/pci/hda/patch_sigmatel.c	Thu Feb 15 13:05:43 2007 +0100
@@ -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
 	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_
 	[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,23 @@ static int patch_stac922x(struct hda_cod
 	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) {
+#if 0
+		case XXXX:
+			spec->board_config = STAC_MACBOOK;
+			break;
+#endif
+		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, "
@@ -1905,9 +1940,6 @@ static int patch_stac922x(struct hda_cod
 		stac92xx_free(codec);
 		return err;
 	}
-
-	if (spec->board_config == STAC_MACMINI)
-		spec->gpio_mute = 1;
 
 	codec->patch_ops = stac92xx_patch_ops;
 

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux