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

Matthew Ranostay mranostay at embeddedalley.com
Fri Jan 25 15:28:47 CET 2008


Takashi Iwai wrote:
> 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)
> 
You certainly have a eagle-eye there :)

> 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