[alsa-devel] [PATCH] hda: STAC92xx Line In/Mic as output check

Takashi Iwai tiwai at suse.de
Fri Jan 25 15:25:22 CET 2008


At Fri, 25 Jan 2008 08:43:55 -0500,
Matthew Ranostay wrote:
> 
> This patch checks to see the Line In/Mic port have the ability to do output before creating the the control switches.
> The 92hd71bxx series of codecs has this issue with the port 0xe, which only allows input.
> 
> Signed-off-by: Matthew Ranostay <mranostay at embededalley.com>

Looks good (but it has a garbage (`) in the patch)

Anyway, applied to HG tree now.  Thanks.


Takashi


> ---
> diff -r 303f894ac2a8 pci/hda/patch_sigmatel.c
> --- a/pci/hda/patch_sigmatel.c	Thu Jan 24 18:46:42 2008 +0100
> +++ b/pci/hda/patch_sigmatel.c	Thu Jan 24 22:41:27 2008 -0500
> @@ -2226,7 +2226,7 @@ static int stac92xx_auto_create_multi_ou
>  	int i, err;
>  
>  	struct sigmatel_spec *spec = codec->spec;
> -	unsigned int wid_caps;
> +	unsigned int wid_caps, pincap;
>  
>  
>  	for (i = 0; i < cfg->line_outs; i++) {
> @@ -2262,13 +2262,31 @@ static int stac92xx_auto_create_multi_ou
>  		}
>  	}
>  
> -	if (spec->line_switch)
> -		if ((err = stac92xx_add_control(spec, STAC_CTL_WIDGET_IO_SWITCH, "Line In as Output Switch", cfg->input_pins[AUTO_PIN_LINE] << 8)) < 0)
> -			return err;
> -
> -	if (spec->mic_switch)
> -		if ((err = stac92xx_add_control(spec, STAC_CTL_WIDGET_IO_SWITCH, "Mic as Output Switch", (cfg->input_pins[AUTO_PIN_MIC] << 8) | 1)) < 0)
> -			return err;
> +	if (spec->line_switch) {
> +		nid = cfg->input_pins[AUTO_PIN_LINE];
> +		pincap = snd_hda_param_read(codec, nid,
> +						AC_PAR_PIN_CAP);
> +		if (pincap & AC_PINCAP_OUT) {
> +			err = stac92xx_add_control(spec,
> +				STAC_CTL_WIDGET_IO_SWITCH,
> +				"Line In as Output Switch", nid << 8);
> +			if (err < 0)
> +				return err;
> +		}
> +	}
> +
> +	if (spec->mic_switch) {
> +		nid = cfg->input_pins[AUTO_PIN_MIC];
> +		pincap = snd_hda_param_read(codec, nid,
> +						AC_PAR_PIN_CAP);
> +		if (pincap & AC_PINCAP_OUT) {
> +		`	err = stac92xx_add_control(spec,
> +				STAC_CTL_WIDGET_IO_SWITCH,
> +				"Mic as Output Switch", (nid << 8) | 1);
> +			if (err < 0)
> +				return err;
> +		}
> +	}
>  
>  	return 0;
>  }
> 


More information about the Alsa-devel mailing list