Re: [PATCH] make alsa use corect patch for Realtek ALC889A

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Kasper Sandberg <lkml@...>
Cc: LKML Mailinglist <linux-kernel@...>
Date: Wednesday, April 16, 2008 - 10:31 am

At Wed, 16 Apr 2008 13:01:44 +0200,
I wrote:

On the second thought, replacing to patch_alc883 may break many
devices with preset models because patch_alc882() and patch_alc883()
have different model tables.  So, I applied the patch below in
addition.

BTW, could you show your codec#* files?  This will be really helpful
to identify problems.

Also, I'm still a bit suspicious whether ALC889A has really that
vendor id.  Do you have a chance to check the chip on your board?


thanks,

Takashi

---
diff -r e2c5d8b125b7 -r e42f262f5117 sound/pci/hda/patch_realtek.c
--- a/sound/pci/hda/patch_realtek.c	Wed Apr 16 13:13:29 2008 +0200
+++ b/sound/pci/hda/patch_realtek.c	Wed Apr 16 16:29:09 2008 +0200
@@ -2579,6 +2579,7 @@ static void alc_free(struct hda_codec *c
 		kfree(spec->kctl_alloc);
 	}
 	kfree(spec);
+	codec->spec = NULL; /* to be sure */
 }
 
 /*
@@ -6336,6 +6337,8 @@ static void alc882_auto_init(struct hda_
 		alc_sku_automute(codec);
 }
 
+static int patch_alc883(struct hda_codec *codec); /* called in patch_alc882() */
+
 static int patch_alc882(struct hda_codec *codec)
 {
 	struct alc_spec *spec;
@@ -6365,6 +6368,11 @@ static int patch_alc882(struct hda_codec
 			board_config = ALC885_MBP3;
 			break;
 		default:
+			/* ALC889A is handled better as ALC888-compatible */
+			if (codec->revision_id == 0x100103) {
+				alc_free(codec);
+				return patch_alc883(codec);
+			}
 			printk(KERN_INFO "hda_codec: Unknown model for ALC882, "
 		       			 "trying auto-probe from BIOS...\n");
 			board_config = ALC882_AUTO;
@@ -14043,7 +14051,7 @@ struct hda_codec_preset snd_hda_preset_r
 	{ .id = 0x10ec0882, .name = "ALC882", .patch = patch_alc882 },
 	{ .id = 0x10ec0883, .name = "ALC883", .patch = patch_alc883 },
 	{ .id = 0x10ec0885, .rev = 0x100103, .name = "ALC889A",
-	  .patch = patch_alc883 },
+	  .patch = patch_alc882 }, /* should be patch_alc883() in future */
 	{ .id = 0x10ec0885, .name = "ALC885", .patch = patch_alc882 },
 	{ .id = 0x10ec0888, .name = "ALC888", .patch = patch_alc883 },
 	{ .id = 0x10ec0889, .name = "ALC889", .patch = patch_alc883 },
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] make alsa use corect patch for Realtek ALC889A, Kasper Sandberg, (Sat Apr 12, 12:17 pm)
Re: [PATCH] make alsa use corect patch for Realtek ALC889A, Takashi Iwai, (Wed Apr 16, 10:31 am)
Re: [PATCH] make alsa use corect patch for Realtek ALC889A, Kasper Sandberg, (Thu Apr 17, 9:52 pm)
Re: [PATCH] make alsa use corect patch for Realtek ALC889A, Kasper Sandberg, (Tue Apr 22, 4:53 pm)
Re: [PATCH] make alsa use corect patch for Realtek ALC889A, Kasper Sandberg, (Wed Apr 23, 5:35 pm)
Re: [PATCH] make alsa use corect patch for Realtek ALC889A, Kasper Sandberg, (Fri Apr 25, 9:11 pm)