alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ALSA: HDA: Realtek: Take vmaster dac from multiout dac list
@ 2011-12-12  5:37 David Henningsson
  2011-12-12  9:48 ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: David Henningsson @ 2011-12-12  5:37 UTC (permalink / raw)
  To: tiwai, alsa-devel; +Cc: David Henningsson

With the auto-parser we can choose the dac nid for vmaster from
the DACs we already know, instead of hard-coding it. This is more
future-proof and was actually wrong on one machine.

Reported-by: David Chen <david.chen@canonical.com>
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
---
 sound/pci/hda/patch_realtek.c |   32 ++++++++++----------------------
 1 files changed, 10 insertions(+), 22 deletions(-)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 8a74c1e..31dd675 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3153,6 +3153,7 @@ static int alc_auto_fill_dac_nids(struct hda_codec *codec)
 		}
 	}
 
+	spec->vmaster_nid = spec->multiout.dac_nids[0];
 	return 0;
 }
 
@@ -4175,8 +4176,10 @@ static int patch_alc880(struct hda_codec *codec)
 #endif
 	}
 
-	if (board_config != ALC_MODEL_AUTO)
+	if (board_config != ALC_MODEL_AUTO) {
+		spec->vmaster_nid = 0x0c;
 		setup_preset(codec, &alc880_presets[board_config]);
+	}
 
 	if (!spec->no_analog && !spec->adc_nids) {
 		alc_auto_fill_adc_caps(codec);
@@ -4196,8 +4199,6 @@ static int patch_alc880(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x0c;
-
 	codec->patch_ops = alc_patch_ops;
 	if (board_config == ALC_MODEL_AUTO)
 		spec->init_hook = alc_auto_init_std;
@@ -4304,8 +4305,10 @@ static int patch_alc260(struct hda_codec *codec)
 #endif
 	}
 
-	if (board_config != ALC_MODEL_AUTO)
+	if (board_config != ALC_MODEL_AUTO) {
 		setup_preset(codec, &alc260_presets[board_config]);
+		spec->vmaster_nid = 0x08;
+	}
 
 	if (!spec->no_analog && !spec->adc_nids) {
 		alc_auto_fill_adc_caps(codec);
@@ -4325,8 +4328,6 @@ static int patch_alc260(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x08;
-
 	codec->patch_ops = alc_patch_ops;
 	if (board_config == ALC_MODEL_AUTO)
 		spec->init_hook = alc_auto_init_std;
@@ -4698,8 +4699,10 @@ static int patch_alc882(struct hda_codec *codec)
 			goto error;
 	}
 
-	if (board_config != ALC_MODEL_AUTO)
+	if (board_config != ALC_MODEL_AUTO) {
 		setup_preset(codec, &alc882_presets[board_config]);
+		spec->vmaster_nid = 0x0c;
+	}
 
 	if (!spec->no_analog && !spec->adc_nids) {
 		alc_auto_fill_adc_caps(codec);
@@ -4719,8 +4722,6 @@ static int patch_alc882(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x0c;
-
 	codec->patch_ops = alc_patch_ops;
 	if (board_config == ALC_MODEL_AUTO)
 		spec->init_hook = alc_auto_init_std;
@@ -4899,8 +4900,6 @@ static int patch_alc262(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x0c;
-
 	codec->patch_ops = alc_patch_ops;
 	spec->init_hook = alc_auto_init_std;
 	spec->shutup = alc_eapd_shutup;
@@ -5012,8 +5011,6 @@ static int patch_alc268(struct hda_codec *codec)
 	if (!spec->no_analog && !spec->cap_mixer)
 		set_capture_mixer(codec);
 
-	spec->vmaster_nid = 0x02;
-
 	codec->patch_ops = alc_patch_ops;
 	spec->init_hook = alc_auto_init_std;
 	spec->shutup = alc_eapd_shutup;
@@ -5568,8 +5565,6 @@ static int patch_alc269(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x02;
-
 	codec->patch_ops = alc_patch_ops;
 #ifdef CONFIG_PM
 	codec->patch_ops.resume = alc269_resume;
@@ -5674,8 +5669,6 @@ static int patch_alc861(struct hda_codec *codec)
 		set_beep_amp(spec, 0x23, 0, HDA_OUTPUT);
 	}
 
-	spec->vmaster_nid = 0x03;
-
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
 	codec->patch_ops = alc_patch_ops;
@@ -5800,8 +5793,6 @@ static int patch_alc861vd(struct hda_codec *codec)
 		set_beep_amp(spec, 0x0b, 0x05, HDA_INPUT);
 	}
 
-	spec->vmaster_nid = 0x02;
-
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
 	codec->patch_ops = alc_patch_ops;
@@ -6184,7 +6175,6 @@ static int patch_alc662(struct hda_codec *codec)
 			break;
 		}
 	}
-	spec->vmaster_nid = 0x02;
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
@@ -6240,8 +6230,6 @@ static int patch_alc680(struct hda_codec *codec)
 	if (!spec->no_analog && !spec->cap_mixer)
 		set_capture_mixer(codec);
 
-	spec->vmaster_nid = 0x02;
-
 	codec->patch_ops = alc_patch_ops;
 	spec->init_hook = alc_auto_init_std;
 
-- 
1.7.5.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] ALSA: HDA: Realtek: Take vmaster dac from multiout dac list
  2011-12-12  5:37 [PATCH] ALSA: HDA: Realtek: Take vmaster dac from multiout dac list David Henningsson
@ 2011-12-12  9:48 ` Takashi Iwai
  2011-12-12 10:13   ` David Henningsson
  0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2011-12-12  9:48 UTC (permalink / raw)
  To: David Henningsson; +Cc: alsa-devel

At Mon, 12 Dec 2011 13:37:41 +0800,
David Henningsson wrote:
> 
> With the auto-parser we can choose the dac nid for vmaster from
> the DACs we already know, instead of hard-coding it. This is more
> future-proof and was actually wrong on one machine.
> 
> Reported-by: David Chen <david.chen@canonical.com>
> Signed-off-by: David Henningsson <david.henningsson@canonical.com>

Unfortunately this doesn't work correctly for some codecs.
Codecs like ALC262 have no volume in DAC (e.g. 0x02) but only in mixer
(e.g. 0x0c).

In future, we should build up the I/O paths like in patch_via.c,
so that such info can be checked more easily.


thanks,

Takashi

> ---
>  sound/pci/hda/patch_realtek.c |   32 ++++++++++----------------------
>  1 files changed, 10 insertions(+), 22 deletions(-)
> 
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index 8a74c1e..31dd675 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -3153,6 +3153,7 @@ static int alc_auto_fill_dac_nids(struct hda_codec *codec)
>  		}
>  	}
>  
> +	spec->vmaster_nid = spec->multiout.dac_nids[0];
>  	return 0;
>  }
>  
> @@ -4175,8 +4176,10 @@ static int patch_alc880(struct hda_codec *codec)
>  #endif
>  	}
>  
> -	if (board_config != ALC_MODEL_AUTO)
> +	if (board_config != ALC_MODEL_AUTO) {
> +		spec->vmaster_nid = 0x0c;
>  		setup_preset(codec, &alc880_presets[board_config]);
> +	}
>  
>  	if (!spec->no_analog && !spec->adc_nids) {
>  		alc_auto_fill_adc_caps(codec);
> @@ -4196,8 +4199,6 @@ static int patch_alc880(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x0c;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	if (board_config == ALC_MODEL_AUTO)
>  		spec->init_hook = alc_auto_init_std;
> @@ -4304,8 +4305,10 @@ static int patch_alc260(struct hda_codec *codec)
>  #endif
>  	}
>  
> -	if (board_config != ALC_MODEL_AUTO)
> +	if (board_config != ALC_MODEL_AUTO) {
>  		setup_preset(codec, &alc260_presets[board_config]);
> +		spec->vmaster_nid = 0x08;
> +	}
>  
>  	if (!spec->no_analog && !spec->adc_nids) {
>  		alc_auto_fill_adc_caps(codec);
> @@ -4325,8 +4328,6 @@ static int patch_alc260(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x08;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	if (board_config == ALC_MODEL_AUTO)
>  		spec->init_hook = alc_auto_init_std;
> @@ -4698,8 +4699,10 @@ static int patch_alc882(struct hda_codec *codec)
>  			goto error;
>  	}
>  
> -	if (board_config != ALC_MODEL_AUTO)
> +	if (board_config != ALC_MODEL_AUTO) {
>  		setup_preset(codec, &alc882_presets[board_config]);
> +		spec->vmaster_nid = 0x0c;
> +	}
>  
>  	if (!spec->no_analog && !spec->adc_nids) {
>  		alc_auto_fill_adc_caps(codec);
> @@ -4719,8 +4722,6 @@ static int patch_alc882(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x0c;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	if (board_config == ALC_MODEL_AUTO)
>  		spec->init_hook = alc_auto_init_std;
> @@ -4899,8 +4900,6 @@ static int patch_alc262(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x0c;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	spec->init_hook = alc_auto_init_std;
>  	spec->shutup = alc_eapd_shutup;
> @@ -5012,8 +5011,6 @@ static int patch_alc268(struct hda_codec *codec)
>  	if (!spec->no_analog && !spec->cap_mixer)
>  		set_capture_mixer(codec);
>  
> -	spec->vmaster_nid = 0x02;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	spec->init_hook = alc_auto_init_std;
>  	spec->shutup = alc_eapd_shutup;
> @@ -5568,8 +5565,6 @@ static int patch_alc269(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x02;
> -
>  	codec->patch_ops = alc_patch_ops;
>  #ifdef CONFIG_PM
>  	codec->patch_ops.resume = alc269_resume;
> @@ -5674,8 +5669,6 @@ static int patch_alc861(struct hda_codec *codec)
>  		set_beep_amp(spec, 0x23, 0, HDA_OUTPUT);
>  	}
>  
> -	spec->vmaster_nid = 0x03;
> -
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
>  	codec->patch_ops = alc_patch_ops;
> @@ -5800,8 +5793,6 @@ static int patch_alc861vd(struct hda_codec *codec)
>  		set_beep_amp(spec, 0x0b, 0x05, HDA_INPUT);
>  	}
>  
> -	spec->vmaster_nid = 0x02;
> -
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
>  	codec->patch_ops = alc_patch_ops;
> @@ -6184,7 +6175,6 @@ static int patch_alc662(struct hda_codec *codec)
>  			break;
>  		}
>  	}
> -	spec->vmaster_nid = 0x02;
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> @@ -6240,8 +6230,6 @@ static int patch_alc680(struct hda_codec *codec)
>  	if (!spec->no_analog && !spec->cap_mixer)
>  		set_capture_mixer(codec);
>  
> -	spec->vmaster_nid = 0x02;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	spec->init_hook = alc_auto_init_std;
>  
> -- 
> 1.7.5.4
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] ALSA: HDA: Realtek: Take vmaster dac from multiout dac list
  2011-12-12  9:48 ` Takashi Iwai
@ 2011-12-12 10:13   ` David Henningsson
  2011-12-12 10:19     ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: David Henningsson @ 2011-12-12 10:13 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, david.chen

[-- Attachment #1: Type: text/plain, Size: 817 bytes --]

2011-12-12 17:48, Takashi Iwai skrev:
> At Mon, 12 Dec 2011 13:37:41 +0800,
> David Henningsson wrote:
>> With the auto-parser we can choose the dac nid for vmaster from
>> the DACs we already know, instead of hard-coding it. This is more
>> future-proof and was actually wrong on one machine.
>>
>> Reported-by: David Chen<david.chen@canonical.com>
>> Signed-off-by: David Henningsson<david.henningsson@canonical.com>
> Unfortunately this doesn't work correctly for some codecs.
> Codecs like ALC262 have no volume in DAC (e.g. 0x02) but only in mixer
> (e.g. 0x0c).
>
> In future, we should build up the I/O paths like in patch_via.c,
> so that such info can be checked more easily.
>
Ah, of course. Thanks for spotting. I believe the patch should look like 
the attached one instead, what do you think?

// David


[-- Attachment #2: 0001-ALSA-HDA-Realtek-Take-vmaster-dac-from-multiout-dac-.patch --]
[-- Type: text/x-patch, Size: 5065 bytes --]

>From 4bd01d3ef7c71adc7c6bb41d1f92f2b5c9b3dd47 Mon Sep 17 00:00:00 2001
From: David Henningsson <david.henningsson@canonical.com>
Date: Fri, 9 Dec 2011 18:27:42 +0800
Subject: [PATCH] ALSA: HDA: Realtek: Take vmaster dac from multiout dac list

With the auto-parser we can choose the dac nid for vmaster from
the DACs we already know, instead of hard-coding it. This is more
future-proof and was actually wrong on one machine.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
---
 sound/pci/hda/patch_realtek.c |   36 ++++++++++++++----------------------
 1 files changed, 14 insertions(+), 22 deletions(-)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 8a74c1e..f394865 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3039,6 +3039,8 @@ static int alc_auto_fill_extra_dacs(struct hda_codec *codec, int num_outs,
 
 static int alc_auto_fill_multi_ios(struct hda_codec *codec,
 				   unsigned int location, int offset);
+static hda_nid_t alc_look_for_out_vol_nid(struct hda_codec *codec,
+					  hda_nid_t pin, hda_nid_t dac);
 
 /* fill in the dac_nids table from the parsed pin configuration */
 static int alc_auto_fill_dac_nids(struct hda_codec *codec)
@@ -3153,6 +3155,9 @@ static int alc_auto_fill_dac_nids(struct hda_codec *codec)
 		}
 	}
 
+	i = cfg->line_outs ? cfg->line_out_pins[0] : 
+		(cfg->speaker_outs ? cfg->speaker_pins[0] : cfg->hp_pins[0]);
+	spec->vmaster_nid = alc_look_for_out_vol_nid(codec, spec->multiout.dac_nids[0], i);
 	return 0;
 }
 
@@ -4175,8 +4180,10 @@ static int patch_alc880(struct hda_codec *codec)
 #endif
 	}
 
-	if (board_config != ALC_MODEL_AUTO)
+	if (board_config != ALC_MODEL_AUTO) {
+		spec->vmaster_nid = 0x0c;
 		setup_preset(codec, &alc880_presets[board_config]);
+	}
 
 	if (!spec->no_analog && !spec->adc_nids) {
 		alc_auto_fill_adc_caps(codec);
@@ -4196,8 +4203,6 @@ static int patch_alc880(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x0c;
-
 	codec->patch_ops = alc_patch_ops;
 	if (board_config == ALC_MODEL_AUTO)
 		spec->init_hook = alc_auto_init_std;
@@ -4304,8 +4309,10 @@ static int patch_alc260(struct hda_codec *codec)
 #endif
 	}
 
-	if (board_config != ALC_MODEL_AUTO)
+	if (board_config != ALC_MODEL_AUTO) {
 		setup_preset(codec, &alc260_presets[board_config]);
+		spec->vmaster_nid = 0x08;
+	}
 
 	if (!spec->no_analog && !spec->adc_nids) {
 		alc_auto_fill_adc_caps(codec);
@@ -4325,8 +4332,6 @@ static int patch_alc260(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x08;
-
 	codec->patch_ops = alc_patch_ops;
 	if (board_config == ALC_MODEL_AUTO)
 		spec->init_hook = alc_auto_init_std;
@@ -4698,8 +4703,10 @@ static int patch_alc882(struct hda_codec *codec)
 			goto error;
 	}
 
-	if (board_config != ALC_MODEL_AUTO)
+	if (board_config != ALC_MODEL_AUTO) {
 		setup_preset(codec, &alc882_presets[board_config]);
+		spec->vmaster_nid = 0x0c;
+	}
 
 	if (!spec->no_analog && !spec->adc_nids) {
 		alc_auto_fill_adc_caps(codec);
@@ -4719,8 +4726,6 @@ static int patch_alc882(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x0c;
-
 	codec->patch_ops = alc_patch_ops;
 	if (board_config == ALC_MODEL_AUTO)
 		spec->init_hook = alc_auto_init_std;
@@ -4899,8 +4904,6 @@ static int patch_alc262(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x0c;
-
 	codec->patch_ops = alc_patch_ops;
 	spec->init_hook = alc_auto_init_std;
 	spec->shutup = alc_eapd_shutup;
@@ -5012,8 +5015,6 @@ static int patch_alc268(struct hda_codec *codec)
 	if (!spec->no_analog && !spec->cap_mixer)
 		set_capture_mixer(codec);
 
-	spec->vmaster_nid = 0x02;
-
 	codec->patch_ops = alc_patch_ops;
 	spec->init_hook = alc_auto_init_std;
 	spec->shutup = alc_eapd_shutup;
@@ -5568,8 +5569,6 @@ static int patch_alc269(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x02;
-
 	codec->patch_ops = alc_patch_ops;
 #ifdef CONFIG_PM
 	codec->patch_ops.resume = alc269_resume;
@@ -5674,8 +5673,6 @@ static int patch_alc861(struct hda_codec *codec)
 		set_beep_amp(spec, 0x23, 0, HDA_OUTPUT);
 	}
 
-	spec->vmaster_nid = 0x03;
-
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
 	codec->patch_ops = alc_patch_ops;
@@ -5800,8 +5797,6 @@ static int patch_alc861vd(struct hda_codec *codec)
 		set_beep_amp(spec, 0x0b, 0x05, HDA_INPUT);
 	}
 
-	spec->vmaster_nid = 0x02;
-
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
 	codec->patch_ops = alc_patch_ops;
@@ -6184,7 +6179,6 @@ static int patch_alc662(struct hda_codec *codec)
 			break;
 		}
 	}
-	spec->vmaster_nid = 0x02;
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
@@ -6240,8 +6234,6 @@ static int patch_alc680(struct hda_codec *codec)
 	if (!spec->no_analog && !spec->cap_mixer)
 		set_capture_mixer(codec);
 
-	spec->vmaster_nid = 0x02;
-
 	codec->patch_ops = alc_patch_ops;
 	spec->init_hook = alc_auto_init_std;
 
-- 
1.7.5.4


[-- Attachment #3: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] ALSA: HDA: Realtek: Take vmaster dac from multiout dac list
  2011-12-12 10:13   ` David Henningsson
@ 2011-12-12 10:19     ` Takashi Iwai
  2011-12-12 10:31       ` David Henningsson
  0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2011-12-12 10:19 UTC (permalink / raw)
  To: David Henningsson; +Cc: alsa-devel, david.chen

At Mon, 12 Dec 2011 18:13:44 +0800,
David Henningsson wrote:
> 
> 2011-12-12 17:48, Takashi Iwai skrev:
> > At Mon, 12 Dec 2011 13:37:41 +0800,
> > David Henningsson wrote:
> >> With the auto-parser we can choose the dac nid for vmaster from
> >> the DACs we already know, instead of hard-coding it. This is more
> >> future-proof and was actually wrong on one machine.
> >>
> >> Reported-by: David Chen<david.chen@canonical.com>
> >> Signed-off-by: David Henningsson<david.henningsson@canonical.com>
> > Unfortunately this doesn't work correctly for some codecs.
> > Codecs like ALC262 have no volume in DAC (e.g. 0x02) but only in mixer
> > (e.g. 0x0c).
> >
> > In future, we should build up the I/O paths like in patch_via.c,
> > so that such info can be checked more easily.
> >
> Ah, of course. Thanks for spotting. I believe the patch should look like 
> the attached one instead, what do you think?

The check of cfg->line_outs can be skipped.  The primary output must
be present in any case.  Or, at most, just add a non-zero check for
cfg->line_out_pins[0].  Otherwise it looks good.


Thanks!

Takashi

> 
> // David
> 
> [2 0001-ALSA-HDA-Realtek-Take-vmaster-dac-from-multiout-dac-.patch <text/x-patch (7bit)>]
> >From 4bd01d3ef7c71adc7c6bb41d1f92f2b5c9b3dd47 Mon Sep 17 00:00:00 2001
> From: David Henningsson <david.henningsson@canonical.com>
> Date: Fri, 9 Dec 2011 18:27:42 +0800
> Subject: [PATCH] ALSA: HDA: Realtek: Take vmaster dac from multiout dac list
> 
> With the auto-parser we can choose the dac nid for vmaster from
> the DACs we already know, instead of hard-coding it. This is more
> future-proof and was actually wrong on one machine.
> 
> Signed-off-by: David Henningsson <david.henningsson@canonical.com>
> ---
>  sound/pci/hda/patch_realtek.c |   36 ++++++++++++++----------------------
>  1 files changed, 14 insertions(+), 22 deletions(-)
> 
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index 8a74c1e..f394865 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -3039,6 +3039,8 @@ static int alc_auto_fill_extra_dacs(struct hda_codec *codec, int num_outs,
>  
>  static int alc_auto_fill_multi_ios(struct hda_codec *codec,
>  				   unsigned int location, int offset);
> +static hda_nid_t alc_look_for_out_vol_nid(struct hda_codec *codec,
> +					  hda_nid_t pin, hda_nid_t dac);
>  
>  /* fill in the dac_nids table from the parsed pin configuration */
>  static int alc_auto_fill_dac_nids(struct hda_codec *codec)
> @@ -3153,6 +3155,9 @@ static int alc_auto_fill_dac_nids(struct hda_codec *codec)
>  		}
>  	}
>  
> +	i = cfg->line_outs ? cfg->line_out_pins[0] : 
> +		(cfg->speaker_outs ? cfg->speaker_pins[0] : cfg->hp_pins[0]);
> +	spec->vmaster_nid = alc_look_for_out_vol_nid(codec, spec->multiout.dac_nids[0], i);
>  	return 0;
>  }
>  
> @@ -4175,8 +4180,10 @@ static int patch_alc880(struct hda_codec *codec)
>  #endif
>  	}
>  
> -	if (board_config != ALC_MODEL_AUTO)
> +	if (board_config != ALC_MODEL_AUTO) {
> +		spec->vmaster_nid = 0x0c;
>  		setup_preset(codec, &alc880_presets[board_config]);
> +	}
>  
>  	if (!spec->no_analog && !spec->adc_nids) {
>  		alc_auto_fill_adc_caps(codec);
> @@ -4196,8 +4203,6 @@ static int patch_alc880(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x0c;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	if (board_config == ALC_MODEL_AUTO)
>  		spec->init_hook = alc_auto_init_std;
> @@ -4304,8 +4309,10 @@ static int patch_alc260(struct hda_codec *codec)
>  #endif
>  	}
>  
> -	if (board_config != ALC_MODEL_AUTO)
> +	if (board_config != ALC_MODEL_AUTO) {
>  		setup_preset(codec, &alc260_presets[board_config]);
> +		spec->vmaster_nid = 0x08;
> +	}
>  
>  	if (!spec->no_analog && !spec->adc_nids) {
>  		alc_auto_fill_adc_caps(codec);
> @@ -4325,8 +4332,6 @@ static int patch_alc260(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x08;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	if (board_config == ALC_MODEL_AUTO)
>  		spec->init_hook = alc_auto_init_std;
> @@ -4698,8 +4703,10 @@ static int patch_alc882(struct hda_codec *codec)
>  			goto error;
>  	}
>  
> -	if (board_config != ALC_MODEL_AUTO)
> +	if (board_config != ALC_MODEL_AUTO) {
>  		setup_preset(codec, &alc882_presets[board_config]);
> +		spec->vmaster_nid = 0x0c;
> +	}
>  
>  	if (!spec->no_analog && !spec->adc_nids) {
>  		alc_auto_fill_adc_caps(codec);
> @@ -4719,8 +4726,6 @@ static int patch_alc882(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x0c;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	if (board_config == ALC_MODEL_AUTO)
>  		spec->init_hook = alc_auto_init_std;
> @@ -4899,8 +4904,6 @@ static int patch_alc262(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x0c;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	spec->init_hook = alc_auto_init_std;
>  	spec->shutup = alc_eapd_shutup;
> @@ -5012,8 +5015,6 @@ static int patch_alc268(struct hda_codec *codec)
>  	if (!spec->no_analog && !spec->cap_mixer)
>  		set_capture_mixer(codec);
>  
> -	spec->vmaster_nid = 0x02;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	spec->init_hook = alc_auto_init_std;
>  	spec->shutup = alc_eapd_shutup;
> @@ -5568,8 +5569,6 @@ static int patch_alc269(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x02;
> -
>  	codec->patch_ops = alc_patch_ops;
>  #ifdef CONFIG_PM
>  	codec->patch_ops.resume = alc269_resume;
> @@ -5674,8 +5673,6 @@ static int patch_alc861(struct hda_codec *codec)
>  		set_beep_amp(spec, 0x23, 0, HDA_OUTPUT);
>  	}
>  
> -	spec->vmaster_nid = 0x03;
> -
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
>  	codec->patch_ops = alc_patch_ops;
> @@ -5800,8 +5797,6 @@ static int patch_alc861vd(struct hda_codec *codec)
>  		set_beep_amp(spec, 0x0b, 0x05, HDA_INPUT);
>  	}
>  
> -	spec->vmaster_nid = 0x02;
> -
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
>  	codec->patch_ops = alc_patch_ops;
> @@ -6184,7 +6179,6 @@ static int patch_alc662(struct hda_codec *codec)
>  			break;
>  		}
>  	}
> -	spec->vmaster_nid = 0x02;
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> @@ -6240,8 +6234,6 @@ static int patch_alc680(struct hda_codec *codec)
>  	if (!spec->no_analog && !spec->cap_mixer)
>  		set_capture_mixer(codec);
>  
> -	spec->vmaster_nid = 0x02;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	spec->init_hook = alc_auto_init_std;
>  
> -- 
> 1.7.5.4
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] ALSA: HDA: Realtek: Take vmaster dac from multiout dac list
  2011-12-12 10:19     ` Takashi Iwai
@ 2011-12-12 10:31       ` David Henningsson
  2011-12-12 11:22         ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: David Henningsson @ 2011-12-12 10:31 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, david.chen

[-- Attachment #1: Type: text/plain, Size: 1384 bytes --]

2011-12-12 18:19, Takashi Iwai skrev:
> At Mon, 12 Dec 2011 18:13:44 +0800,
> David Henningsson wrote:
>> 2011-12-12 17:48, Takashi Iwai skrev:
>>> At Mon, 12 Dec 2011 13:37:41 +0800,
>>> David Henningsson wrote:
>>>> With the auto-parser we can choose the dac nid for vmaster from
>>>> the DACs we already know, instead of hard-coding it. This is more
>>>> future-proof and was actually wrong on one machine.
>>>>
>>>> Reported-by: David Chen<david.chen@canonical.com>
>>>> Signed-off-by: David Henningsson<david.henningsson@canonical.com>
>>> Unfortunately this doesn't work correctly for some codecs.
>>> Codecs like ALC262 have no volume in DAC (e.g. 0x02) but only in mixer
>>> (e.g. 0x0c).
>>>
>>> In future, we should build up the I/O paths like in patch_via.c,
>>> so that such info can be checked more easily.
>>>
>> Ah, of course. Thanks for spotting. I believe the patch should look like
>> the attached one instead, what do you think?
> The check of cfg->line_outs can be skipped.  The primary output must
> be present in any case.  Or, at most, just add a non-zero check for
> cfg->line_out_pins[0].  Otherwise it looks good.

Yeah, I was thinking that too, but then patch_alc662 had the no-hp 
fixup, and with all fixups moving here and there, I decided to better be 
safe than sorry. But I trust you to know better than me, so attaching 
modified patch. :-)

// David


[-- Attachment #2: 0001-ALSA-HDA-Realtek-Take-vmaster-dac-from-multiout-dac-.patch --]
[-- Type: text/x-patch, Size: 5015 bytes --]

>From 0b099ae3185913bdd3f17d9b77d6daa592b4d20e Mon Sep 17 00:00:00 2001
From: David Henningsson <david.henningsson@canonical.com>
Date: Fri, 9 Dec 2011 18:27:42 +0800
Subject: [PATCH] ALSA: HDA: Realtek: Take vmaster dac from multiout dac list

With the auto-parser we can choose the dac nid for vmaster from
the DACs we already know, instead of hard-coding it. This is more
future-proof and was actually wrong on one machine.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
---
 sound/pci/hda/patch_realtek.c |   36 ++++++++++++++----------------------
 1 files changed, 14 insertions(+), 22 deletions(-)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 8a74c1e..2bf08fe 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3039,6 +3039,8 @@ static int alc_auto_fill_extra_dacs(struct hda_codec *codec, int num_outs,
 
 static int alc_auto_fill_multi_ios(struct hda_codec *codec,
 				   unsigned int location, int offset);
+static hda_nid_t alc_look_for_out_vol_nid(struct hda_codec *codec,
+					  hda_nid_t pin, hda_nid_t dac);
 
 /* fill in the dac_nids table from the parsed pin configuration */
 static int alc_auto_fill_dac_nids(struct hda_codec *codec)
@@ -3153,6 +3155,9 @@ static int alc_auto_fill_dac_nids(struct hda_codec *codec)
 		}
 	}
 
+	if (cfg->line_out_pins[0])
+		spec->vmaster_nid = alc_look_for_out_vol_nid(codec, spec->multiout.dac_nids[0],
+							     cfg->line_out_pins[0]);
 	return 0;
 }
 
@@ -4175,8 +4180,10 @@ static int patch_alc880(struct hda_codec *codec)
 #endif
 	}
 
-	if (board_config != ALC_MODEL_AUTO)
+	if (board_config != ALC_MODEL_AUTO) {
+		spec->vmaster_nid = 0x0c;
 		setup_preset(codec, &alc880_presets[board_config]);
+	}
 
 	if (!spec->no_analog && !spec->adc_nids) {
 		alc_auto_fill_adc_caps(codec);
@@ -4196,8 +4203,6 @@ static int patch_alc880(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x0c;
-
 	codec->patch_ops = alc_patch_ops;
 	if (board_config == ALC_MODEL_AUTO)
 		spec->init_hook = alc_auto_init_std;
@@ -4304,8 +4309,10 @@ static int patch_alc260(struct hda_codec *codec)
 #endif
 	}
 
-	if (board_config != ALC_MODEL_AUTO)
+	if (board_config != ALC_MODEL_AUTO) {
 		setup_preset(codec, &alc260_presets[board_config]);
+		spec->vmaster_nid = 0x08;
+	}
 
 	if (!spec->no_analog && !spec->adc_nids) {
 		alc_auto_fill_adc_caps(codec);
@@ -4325,8 +4332,6 @@ static int patch_alc260(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x08;
-
 	codec->patch_ops = alc_patch_ops;
 	if (board_config == ALC_MODEL_AUTO)
 		spec->init_hook = alc_auto_init_std;
@@ -4698,8 +4703,10 @@ static int patch_alc882(struct hda_codec *codec)
 			goto error;
 	}
 
-	if (board_config != ALC_MODEL_AUTO)
+	if (board_config != ALC_MODEL_AUTO) {
 		setup_preset(codec, &alc882_presets[board_config]);
+		spec->vmaster_nid = 0x0c;
+	}
 
 	if (!spec->no_analog && !spec->adc_nids) {
 		alc_auto_fill_adc_caps(codec);
@@ -4719,8 +4726,6 @@ static int patch_alc882(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x0c;
-
 	codec->patch_ops = alc_patch_ops;
 	if (board_config == ALC_MODEL_AUTO)
 		spec->init_hook = alc_auto_init_std;
@@ -4899,8 +4904,6 @@ static int patch_alc262(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x0c;
-
 	codec->patch_ops = alc_patch_ops;
 	spec->init_hook = alc_auto_init_std;
 	spec->shutup = alc_eapd_shutup;
@@ -5012,8 +5015,6 @@ static int patch_alc268(struct hda_codec *codec)
 	if (!spec->no_analog && !spec->cap_mixer)
 		set_capture_mixer(codec);
 
-	spec->vmaster_nid = 0x02;
-
 	codec->patch_ops = alc_patch_ops;
 	spec->init_hook = alc_auto_init_std;
 	spec->shutup = alc_eapd_shutup;
@@ -5568,8 +5569,6 @@ static int patch_alc269(struct hda_codec *codec)
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
-	spec->vmaster_nid = 0x02;
-
 	codec->patch_ops = alc_patch_ops;
 #ifdef CONFIG_PM
 	codec->patch_ops.resume = alc269_resume;
@@ -5674,8 +5673,6 @@ static int patch_alc861(struct hda_codec *codec)
 		set_beep_amp(spec, 0x23, 0, HDA_OUTPUT);
 	}
 
-	spec->vmaster_nid = 0x03;
-
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
 	codec->patch_ops = alc_patch_ops;
@@ -5800,8 +5797,6 @@ static int patch_alc861vd(struct hda_codec *codec)
 		set_beep_amp(spec, 0x0b, 0x05, HDA_INPUT);
 	}
 
-	spec->vmaster_nid = 0x02;
-
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
 	codec->patch_ops = alc_patch_ops;
@@ -6184,7 +6179,6 @@ static int patch_alc662(struct hda_codec *codec)
 			break;
 		}
 	}
-	spec->vmaster_nid = 0x02;
 
 	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
 
@@ -6240,8 +6234,6 @@ static int patch_alc680(struct hda_codec *codec)
 	if (!spec->no_analog && !spec->cap_mixer)
 		set_capture_mixer(codec);
 
-	spec->vmaster_nid = 0x02;
-
 	codec->patch_ops = alc_patch_ops;
 	spec->init_hook = alc_auto_init_std;
 
-- 
1.7.5.4


[-- Attachment #3: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] ALSA: HDA: Realtek: Take vmaster dac from multiout dac list
  2011-12-12 10:31       ` David Henningsson
@ 2011-12-12 11:22         ` Takashi Iwai
  0 siblings, 0 replies; 6+ messages in thread
From: Takashi Iwai @ 2011-12-12 11:22 UTC (permalink / raw)
  To: David Henningsson; +Cc: alsa-devel, david.chen

At Mon, 12 Dec 2011 18:31:58 +0800,
David Henningsson wrote:
> 
> [1  <text/plain; ISO-8859-1 (7bit)>]
> 2011-12-12 18:19, Takashi Iwai skrev:
> > At Mon, 12 Dec 2011 18:13:44 +0800,
> > David Henningsson wrote:
> >> 2011-12-12 17:48, Takashi Iwai skrev:
> >>> At Mon, 12 Dec 2011 13:37:41 +0800,
> >>> David Henningsson wrote:
> >>>> With the auto-parser we can choose the dac nid for vmaster from
> >>>> the DACs we already know, instead of hard-coding it. This is more
> >>>> future-proof and was actually wrong on one machine.
> >>>>
> >>>> Reported-by: David Chen<david.chen@canonical.com>
> >>>> Signed-off-by: David Henningsson<david.henningsson@canonical.com>
> >>> Unfortunately this doesn't work correctly for some codecs.
> >>> Codecs like ALC262 have no volume in DAC (e.g. 0x02) but only in mixer
> >>> (e.g. 0x0c).
> >>>
> >>> In future, we should build up the I/O paths like in patch_via.c,
> >>> so that such info can be checked more easily.
> >>>
> >> Ah, of course. Thanks for spotting. I believe the patch should look like
> >> the attached one instead, what do you think?
> > The check of cfg->line_outs can be skipped.  The primary output must
> > be present in any case.  Or, at most, just add a non-zero check for
> > cfg->line_out_pins[0].  Otherwise it looks good.
> 
> Yeah, I was thinking that too, but then patch_alc662 had the no-hp 
> fixup, and with all fixups moving here and there, I decided to better be 
> safe than sorry. But I trust you to know better than me, so attaching 
> modified patch. :-)

Well, I found that the arguments for alc_look_for_out_vol_nid() are
swapped: they should be codec, pin, dac.  I fixed it manually and
committed now with a slight coding-style fix.


thanks,

Takashi

> 
> // David
> 
> [2 0001-ALSA-HDA-Realtek-Take-vmaster-dac-from-multiout-dac-.patch <text/x-patch (7bit)>]
> >From 0b099ae3185913bdd3f17d9b77d6daa592b4d20e Mon Sep 17 00:00:00 2001
> From: David Henningsson <david.henningsson@canonical.com>
> Date: Fri, 9 Dec 2011 18:27:42 +0800
> Subject: [PATCH] ALSA: HDA: Realtek: Take vmaster dac from multiout dac list
> 
> With the auto-parser we can choose the dac nid for vmaster from
> the DACs we already know, instead of hard-coding it. This is more
> future-proof and was actually wrong on one machine.
> 
> Signed-off-by: David Henningsson <david.henningsson@canonical.com>
> ---
>  sound/pci/hda/patch_realtek.c |   36 ++++++++++++++----------------------
>  1 files changed, 14 insertions(+), 22 deletions(-)
> 
> diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> index 8a74c1e..2bf08fe 100644
> --- a/sound/pci/hda/patch_realtek.c
> +++ b/sound/pci/hda/patch_realtek.c
> @@ -3039,6 +3039,8 @@ static int alc_auto_fill_extra_dacs(struct hda_codec *codec, int num_outs,
>  
>  static int alc_auto_fill_multi_ios(struct hda_codec *codec,
>  				   unsigned int location, int offset);
> +static hda_nid_t alc_look_for_out_vol_nid(struct hda_codec *codec,
> +					  hda_nid_t pin, hda_nid_t dac);
>  
>  /* fill in the dac_nids table from the parsed pin configuration */
>  static int alc_auto_fill_dac_nids(struct hda_codec *codec)
> @@ -3153,6 +3155,9 @@ static int alc_auto_fill_dac_nids(struct hda_codec *codec)
>  		}
>  	}
>  
> +	if (cfg->line_out_pins[0])
> +		spec->vmaster_nid = alc_look_for_out_vol_nid(codec, spec->multiout.dac_nids[0],
> +							     cfg->line_out_pins[0]);
>  	return 0;
>  }
>  
> @@ -4175,8 +4180,10 @@ static int patch_alc880(struct hda_codec *codec)
>  #endif
>  	}
>  
> -	if (board_config != ALC_MODEL_AUTO)
> +	if (board_config != ALC_MODEL_AUTO) {
> +		spec->vmaster_nid = 0x0c;
>  		setup_preset(codec, &alc880_presets[board_config]);
> +	}
>  
>  	if (!spec->no_analog && !spec->adc_nids) {
>  		alc_auto_fill_adc_caps(codec);
> @@ -4196,8 +4203,6 @@ static int patch_alc880(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x0c;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	if (board_config == ALC_MODEL_AUTO)
>  		spec->init_hook = alc_auto_init_std;
> @@ -4304,8 +4309,10 @@ static int patch_alc260(struct hda_codec *codec)
>  #endif
>  	}
>  
> -	if (board_config != ALC_MODEL_AUTO)
> +	if (board_config != ALC_MODEL_AUTO) {
>  		setup_preset(codec, &alc260_presets[board_config]);
> +		spec->vmaster_nid = 0x08;
> +	}
>  
>  	if (!spec->no_analog && !spec->adc_nids) {
>  		alc_auto_fill_adc_caps(codec);
> @@ -4325,8 +4332,6 @@ static int patch_alc260(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x08;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	if (board_config == ALC_MODEL_AUTO)
>  		spec->init_hook = alc_auto_init_std;
> @@ -4698,8 +4703,10 @@ static int patch_alc882(struct hda_codec *codec)
>  			goto error;
>  	}
>  
> -	if (board_config != ALC_MODEL_AUTO)
> +	if (board_config != ALC_MODEL_AUTO) {
>  		setup_preset(codec, &alc882_presets[board_config]);
> +		spec->vmaster_nid = 0x0c;
> +	}
>  
>  	if (!spec->no_analog && !spec->adc_nids) {
>  		alc_auto_fill_adc_caps(codec);
> @@ -4719,8 +4726,6 @@ static int patch_alc882(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x0c;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	if (board_config == ALC_MODEL_AUTO)
>  		spec->init_hook = alc_auto_init_std;
> @@ -4899,8 +4904,6 @@ static int patch_alc262(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x0c;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	spec->init_hook = alc_auto_init_std;
>  	spec->shutup = alc_eapd_shutup;
> @@ -5012,8 +5015,6 @@ static int patch_alc268(struct hda_codec *codec)
>  	if (!spec->no_analog && !spec->cap_mixer)
>  		set_capture_mixer(codec);
>  
> -	spec->vmaster_nid = 0x02;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	spec->init_hook = alc_auto_init_std;
>  	spec->shutup = alc_eapd_shutup;
> @@ -5568,8 +5569,6 @@ static int patch_alc269(struct hda_codec *codec)
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> -	spec->vmaster_nid = 0x02;
> -
>  	codec->patch_ops = alc_patch_ops;
>  #ifdef CONFIG_PM
>  	codec->patch_ops.resume = alc269_resume;
> @@ -5674,8 +5673,6 @@ static int patch_alc861(struct hda_codec *codec)
>  		set_beep_amp(spec, 0x23, 0, HDA_OUTPUT);
>  	}
>  
> -	spec->vmaster_nid = 0x03;
> -
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
>  	codec->patch_ops = alc_patch_ops;
> @@ -5800,8 +5797,6 @@ static int patch_alc861vd(struct hda_codec *codec)
>  		set_beep_amp(spec, 0x0b, 0x05, HDA_INPUT);
>  	}
>  
> -	spec->vmaster_nid = 0x02;
> -
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
>  	codec->patch_ops = alc_patch_ops;
> @@ -6184,7 +6179,6 @@ static int patch_alc662(struct hda_codec *codec)
>  			break;
>  		}
>  	}
> -	spec->vmaster_nid = 0x02;
>  
>  	alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE);
>  
> @@ -6240,8 +6234,6 @@ static int patch_alc680(struct hda_codec *codec)
>  	if (!spec->no_analog && !spec->cap_mixer)
>  		set_capture_mixer(codec);
>  
> -	spec->vmaster_nid = 0x02;
> -
>  	codec->patch_ops = alc_patch_ops;
>  	spec->init_hook = alc_auto_init_std;
>  
> -- 
> 1.7.5.4
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-12-12 11:22 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-12  5:37 [PATCH] ALSA: HDA: Realtek: Take vmaster dac from multiout dac list David Henningsson
2011-12-12  9:48 ` Takashi Iwai
2011-12-12 10:13   ` David Henningsson
2011-12-12 10:19     ` Takashi Iwai
2011-12-12 10:31       ` David Henningsson
2011-12-12 11:22         ` Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).