[alsa-devel] hda Regression: jack doesn't mute speaker

Ortwin Glück odi at odi.ch
Fri Apr 17 19:28:23 CEST 2009



Takashi Iwai wrote:
> The problem is likely because hp_detect field isn't set on your
> machine because the headphone shares the same audio-out widget with
> the speaker out.
> 
> Could you try the patch below?

Yes, this patch does the trick. The HP jack correctly mutes the speakers now.
Thanks a lot. I guess this will make it into mainline with the next rc?

Cheers,

Ortwin

> 
> thanks,
> 
> Takashi
> 
> ---
> diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
> index ce30b45..917bc5d 100644
> --- a/sound/pci/hda/patch_sigmatel.c
> +++ b/sound/pci/hda/patch_sigmatel.c
> @@ -3076,6 +3076,11 @@ static int create_multi_out_ctls(struct hda_codec *codec, int num_outs,
>  	unsigned int wid_caps;
>  
>  	for (i = 0; i < num_outs && i < ARRAY_SIZE(chname); i++) {
> +		if (type == AUTO_PIN_HP_OUT && !spec->hp_detect) {
> +			wid_caps = get_wcaps(codec, pins[i]);
> +			if (wid_caps & AC_WCAP_UNSOL_CAP)
> +				spec->hp_detect = 1;
> +		}
>  		nid = dac_nids[i];
>  		if (!nid)
>  			continue;
> @@ -3119,11 +3124,6 @@ static int create_multi_out_ctls(struct hda_codec *codec, int num_outs,
>  			err = create_controls_idx(codec, name, idx, nid, 3);
>  			if (err < 0)
>  				return err;
> -			if (type == AUTO_PIN_HP_OUT && !spec->hp_detect) {
> -				wid_caps = get_wcaps(codec, pins[i]);
> -				if (wid_caps & AC_WCAP_UNSOL_CAP)
> -					spec->hp_detect = 1;
> -			}
>  		}
>  	}
>  	return 0;


More information about the Alsa-devel mailing list