Jump to content

ALC861 on ICH7-M


mrheat
 Share

7 posts in this topic

Recommended Posts

Hi,

 

i have an Maxdata Pro 800 iw Subnotebook, and lot of problems with onboard Sound...

 

Best result ican get is VolumeControl slider but everythings stays totally silent...

 

Sound is working in latest (k)ubuntu installation with

 

options snd_hda_intel model=uniwill-m31

 

in /etc/modules.d/alsa-base ...

 

i searched about this and found a patchfile for alsa

 

diff -r 8f84cd985e0a pci/hda/patch_realtek.c
--- a/pci/hda/patch_realtek.c	Mon Jul 31 16:51:51 2006 +0200
+++ b/pci/hda/patch_realtek.c	Sat Aug  5 22:00:32 2006 +0200
@@ -90,6 +90,7 @@ enum {
	ALC660_3ST,
	ALC861_3ST_DIG,
	ALC861_6ST_DIG,
+	ALC861_UNIWILL_M31,
	ALC861_AUTO,
	ALC861_MODEL_LAST,
};
@@ -6020,6 +6021,23 @@ static struct hda_channel_mode alc861_th
	{ 2, alc861_threestack_ch2_init },
	{ 6, alc861_threestack_ch6_init },
};
+/* Set mic1 as input and unmute the mixer */
+static struct hda_verb alc861_uniwill_m31_ch2_init[] = {
+	{ 0x0d, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 },
+	{ 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7080 | (0x01 << 8)) }, /*mic*/
+	{ } /* end */
+};
+/* Set mic1 as output and mute mixer */
+static struct hda_verb alc861_uniwill_m31_ch4_init[] = {
+	{ 0x0d, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40 },
+	{ 0x15, AC_VERB_SET_AMP_GAIN_MUTE, (0x7000 | (0x01 << 8)) }, /*mic*/
+	{ } /* end */
+};
+
+static struct hda_channel_mode alc861_uniwill_m31_modes[2] = {
+	{ 2, alc861_uniwill_m31_ch2_init },
+	{ 4, alc861_uniwill_m31_ch4_init },
+};

/* patch-ALC861 */

@@ -6095,6 +6113,47 @@ static struct snd_kcontrol_new alc861_3S
		.get = alc_ch_mode_get,
		.put = alc_ch_mode_put,
			 .private_value = ARRAY_SIZE(alc861_threestack_modes),
+	},
+	{ } /* end */
+};			
+static struct snd_kcontrol_new alc861_uniwill_m31_mixer[] = {
+		/* output mixer control */
+	HDA_CODEC_MUTE("Front Playback Switch", 0x03, 0x0, HDA_OUTPUT),
+	HDA_CODEC_MUTE("Surround Playback Switch", 0x06, 0x0, HDA_OUTPUT),
+	HDA_CODEC_MUTE_MONO("Center Playback Switch", 0x05, 1, 0x0, HDA_OUTPUT),
+	HDA_CODEC_MUTE_MONO("LFE Playback Switch", 0x05, 2, 0x0, HDA_OUTPUT),
+	/*HDA_CODEC_MUTE("Side Playback Switch", 0x04, 0x0, HDA_OUTPUT), */
+
+	/* Input mixer control */
+	/* HDA_CODEC_VOLUME("Input Playback Volume", 0x15, 0x0, HDA_OUTPUT),
+	   HDA_CODEC_MUTE("Input Playback Switch", 0x15, 0x0, HDA_OUTPUT), */
+	HDA_CODEC_VOLUME("CD Playback Volume", 0x15, 0x0, HDA_INPUT),
+	HDA_CODEC_MUTE("CD Playback Switch", 0x15, 0x0, HDA_INPUT),
+	HDA_CODEC_VOLUME("Line Playback Volume", 0x15, 0x02, HDA_INPUT),
+	HDA_CODEC_MUTE("Line Playback Switch", 0x15, 0x02, HDA_INPUT),
+	HDA_CODEC_VOLUME("Mic Playback Volume", 0x15, 0x01, HDA_INPUT),
+	HDA_CODEC_MUTE("Mic Playback Switch", 0x15, 0x01, HDA_INPUT),
+	HDA_CODEC_MUTE("Front Mic Playback Switch", 0x10, 0x01, HDA_OUTPUT),
+	HDA_CODEC_MUTE("Headphone Playback Switch", 0x1a, 0x03, HDA_INPUT),
+ 
+	/* Capture mixer control */
+	HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT),
+	HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT),
+	{
+		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+		.name = "Capture Source",
+		.count = 1,
+		.info = alc_mux_enum_info,
+		.get = alc_mux_enum_get,
+		.put = alc_mux_enum_put,
+	},
+	{
+		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+		.name = "Channel Mode",
+		.info = alc_ch_mode_info,
+		.get = alc_ch_mode_get,
+		.put = alc_ch_mode_put,
+				.private_value = ARRAY_SIZE(alc861_uniwill_m31_modes),
	},
	{ } /* end */
};			
@@ -6226,6 +6285,67 @@ static struct hda_verb alc861_threestack
	 {0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)},
	{ }
};
+
+static struct hda_verb alc861_uniwill_m31_init_verbs[] = {
+	/*
+	 * Unmute ADC0 and set the default input to mic-in
+	 */
+	/* port-A for surround (rear panel) */
+	{ 0x0e, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x00 },
+	/* port-B for mic-in (rear panel) with vref */
+	{ 0x0d, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 },
+	/* port-C for line-in (rear panel) */
+	{ 0x0c, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 },
+	/* port-D for Front */
+	{ 0x0b, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x40 },
+	{ 0x0b, AC_VERB_SET_CONNECT_SEL, 0x00 },
+	/* port-E for HP out (front panel) */
+	{ 0x0f, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 }, // this has to be set to VREF80
+	/* route front PCM to HP */
+	{ 0x0f, AC_VERB_SET_CONNECT_SEL, 0x01 },
+	/* port-F for mic-in (front panel) with vref */
+	{ 0x10, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x24 },
+	/* port-G for CLFE (rear panel) */
+	{ 0x1f, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x00 },
+	/* port-H for side (rear panel) */
+	{ 0x20, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x00 },
+	/* CD-in */
+	{ 0x11, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x20 },
+	/* route front mic to ADC1*/
+	{0x08, AC_VERB_SET_CONNECT_SEL, 0x00},
+	{0x08, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
+	/* Unmute DAC0~3 & spdif out*/
+	{0x03, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
+	{0x04, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
+	{0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
+	{0x06, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
+	{0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE},
+	
+	/* Unmute Mixer 14 (mic) 1c (Line in)*/
+	{0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
+		{0x014, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
+	{0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
+		{0x01c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
+	
+	/* Unmute Stereo Mixer 15 */
+	{0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
+	{0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
+	{0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)},
+	{0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0xb00c		  }, //Output 0~12 step
+
+	{0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
+	{0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
+	{0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
+	{0x17, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
+	{0x18, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
+	{0x18, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
+	{0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)},
+	{0x19, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)},
+	{0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(3)}, // hp used DAC 3 (Front)
+		{0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)},
+	{ }
+};
+
/*
 * generic initialization of ADC, input mixers and output mixers
 */
@@ -6560,6 +6680,7 @@ static struct hda_board_config alc861_cf
	  .config = ALC660_3ST },
	{ .modelname = "3stack-dig", .config = ALC861_3ST_DIG },
	{ .modelname = "6stack-dig", .config = ALC861_6ST_DIG },
+	{ .modelname = "uniwill-m31", .config = ALC861_UNIWILL_M31},
	{ .modelname = "auto", .config = ALC861_AUTO },
	{}
};
@@ -6614,6 +6735,20 @@ static struct alc_config_preset alc861_p
		.adc_nids = alc861_adc_nids,
		.input_mux = &alc861_capture_source,
	},
+	[ALC861_UNIWILL_M31] = {
+		.mixers = { alc861_uniwill_m31_mixer },
+		.init_verbs = { alc861_uniwill_m31_init_verbs },
+		.num_dacs = ARRAY_SIZE(alc861_dac_nids),
+		.dac_nids = alc861_dac_nids,
+		.dig_out_nid = ALC861_DIGOUT_NID,
+		.num_channel_mode = ARRAY_SIZE(alc861_uniwill_m31_modes),
+		.channel_mode = alc861_uniwill_m31_modes,
+		.need_dac_fix = 1,
+		.num_adc_nids = ARRAY_SIZE(alc861_adc_nids),
+		.adc_nids = alc861_adc_nids,
+		.input_mux = &alc861_capture_source,
+	},
+
};

 

and heres the codec dump of the working ubuntu configuration:

 

Codec: Realtek ALC861
Address: 0
Vendor Id: 0x10ec0861
Subsystem Id: 0x15840000
Revision Id: 0x100300
Default PCM:
rates [0x140]: 48000 96000
bits [0xe]: 16 20 24
formats [0x1]: PCM
Default Amp-In caps: N/A
Default Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Node 0x03 [Audio Output] wcaps 0x405: Stereo Amp-Out
 Amp-Out caps: N/A
 Amp-Out vals:  [0x00 0x00]
 Power: 0x0
Node 0x04 [Audio Output] wcaps 0x405: Stereo Amp-Out
 Amp-Out caps: N/A
 Amp-Out vals:  [0x00 0x00]
 Power: 0x0
Node 0x05 [Audio Output] wcaps 0x405: Stereo Amp-Out
 Amp-Out caps: N/A
 Amp-Out vals:  [0x00 0x00]
 Power: 0x0
Node 0x06 [Audio Output] wcaps 0x405: Stereo Amp-Out
 Amp-Out caps: N/A
 Amp-Out vals:  [0x00 0x00]
 Power: 0x0
Node 0x07 [Audio Output] wcaps 0x605: Stereo Digital Amp-Out
 Amp-Out caps: N/A
 Amp-Out vals:  [0x00 0x00]
 Power: 0x0
Node 0x08 [Audio Input] wcaps 0x10051b: Stereo Amp-In
 Amp-In caps: ofs=0x02, nsteps=0x0d, stepsize=0x0b, mute=1
 Amp-In vals:  [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
 PCM:
rates [0x140]: 48000 96000
bits [0x2]: 16
formats [0x1]: PCM
 Power: 0x0
 Connection: 6
 0x0d* 0x0c 0x0f 0x10 0x11 0x15
Node 0x09 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x0a [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x0b [Pin Complex] wcaps 0x400581: Stereo
 Pincap 0x081f: OUT HP Detect
 Pin Default 0x01014110: [Jack] Line Out at Ext Rear
Conn = 1/8, Color = Green
 Pin-ctls: 0x40: OUT
 Power: 0x0
 Connection: 1
 0x16
Node 0x0c [Pin Complex] wcaps 0x400581: Stereo
 Pincap 0x0837: IN OUT Detect
 Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
 Pin-ctls: 0x20: IN
 Power: 0x0
 Connection: 1
 0x19
Node 0x0d [Pin Complex] wcaps 0x400581: Stereo
 Pincap 0x08337: IN OUT Detect
 Pin Default 0x01a19930: [Jack] Mic at Ext Rear
Conn = 1/8, Color = Pink
 Pin-ctls: 0x24: IN
 Power: 0x0
 Connection: 1
 0x18
Node 0x0e [Pin Complex] wcaps 0x400581: Stereo
 Pincap 0x0817: OUT Detect
 Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
 Pin-ctls: 0x00:
 Power: 0x0
 Connection: 1
 0x19
Node 0x0f [Pin Complex] wcaps 0x400581: Stereo
 Pincap 0x0833f: IN OUT HP Detect
 Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
 Pin-ctls: 0x24: IN
 Power: 0x0
 Connection: 1
 0x1a
Node 0x10 [Pin Complex] wcaps 0x400581: Stereo
 Pincap 0x0833f: IN OUT HP Detect
 Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
 Pin-ctls: 0x24: IN
 Power: 0x0
 Connection: 1
 0x1b
Node 0x11 [Pin Complex] wcaps 0x400001: Stereo
 Pincap 0x0863: IN
 Pin Default 0x9933013e: [Fixed] CD at Int ATAPI
Conn = ATAPI, Color = Unknown
 Pin-ctls: 0x00:
Node 0x12 [Pin Complex] wcaps 0x400301: Stereo Digital
 Pincap 0x0810: OUT
 Pin Default 0x01454120: [Jack] SPDIF Out at Ext Rear
Conn = Optical, Color = Green
 Pin-ctls: 0x40: OUT
 Connection: 1
 0x07
Node 0x13 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x14 [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
 Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
 Amp-In vals:  [0x00 0x00] [0x00 0x00]
 Connection: 2
 0x0d 0x10
Node 0x15 [Audio Mixer] wcaps 0x20050f: Stereo Amp-In Amp-Out
 Amp-In caps: ofs=0x0c, nsteps=0x17, stepsize=0x0b, mute=1
 Amp-In vals:  [0x13 0x13] [0x80 0x80] [0x00 0x01]
 Amp-Out caps: ofs=0x0c, nsteps=0x0c, stepsize=0x0b, mute=1
 Amp-Out vals:  [0x0c 0x0c]
 Power: 0x0
 Connection: 3
 0x11 0x14 0x1c
Node 0x16 [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
 Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
 Amp-In vals:  [0x00 0x00] [0x00 0x00]
 Connection: 2
 0x03 0x15
Node 0x17 [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
 Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
 Amp-In vals:  [0x00 0x00] [0x00 0x00]
 Connection: 2
 0x04 0x15
Node 0x18 [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
 Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
 Amp-In vals:  [0x00 0x00] [0x00 0x00]
 Connection: 2
 0x05 0x15
Node 0x19 [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
 Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
 Amp-In vals:  [0x00 0x00] [0x00 0x00]
 Connection: 2
 0x06 0x15
Node 0x1a [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
 Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
 Amp-In vals:  [0x80 0x80] [0x80 0x80] [0x00 0x00] [0x00 0x00]
 Connection: 4
 0x04 0x06 0x15 0x03
Node 0x1b [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
 Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
 Amp-In vals:  [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
 Connection: 4
 0x04 0x06 0x15 0x03
Node 0x1c [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
 Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
 Amp-In vals:  [0x00 0x00] [0x00 0x00]
 Connection: 2
 0x0c 0x0f
Node 0x1d [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x1e [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x1f [Pin Complex] wcaps 0x400581: Stereo
 Pincap 0x0817: OUT Detect
 Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
 Pin-ctls: 0x00:
 Power: 0x0
 Connection: 1
 0x18
Node 0x20 [Pin Complex] wcaps 0x400581: Stereo
 Pincap 0x0817: OUT Detect
 Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
Conn = 1/8, Color = Black
 Pin-ctls: 0x00:
 Power: 0x0
 Connection: 1
 0x17
Node 0x21 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x22 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x23 [Beep Generator Widget] wcaps 0x70000c: Mono Amp-Out
 Amp-Out caps: ofs=0x0f, nsteps=0x0f, stepsize=0x0b, mute=1
 Amp-Out vals:  [0x8f]

 

i tried all the patchers and hda versions around, either nothing recognized or

some wrong outputs / inputs which stay silent..

 

hope anyone can helpme, i heard of a few other laptops having the same problems.

codec.txt

uniwill_new.patch.txt

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...
  • 3 months later...

diablow2000:

 

is your barebone also stuck @ 1ghz ?

 

to all:

 

i know the solution is in the patchfile for alsa, as this layouts the pin misconfiguration thats happening in our x20ii. but i dont know how to apply this in applehda...

Link to comment
Share on other sites

 Share

×
×
  • Create New...