[alsa-devel] [PATCH v2 1/4] ASoC: tlv320aic31xx: Add basic codec driver implementation

Jyri Sarha jsarha at ti.com
Fri Mar 7 13:53:15 CET 2014

On 03/05/2014 03:55 AM, Mark Brown wrote:
> On Tue, Mar 04, 2014 at 03:54:49PM +0200, Jyri Sarha wrote:
>> +- ai31xx-micbias-vg - MicBias Voltage required.
>> +        MICBIAS_OFF - MICBIAS output it not powered
> Same comment as last time - why is this something which can be selected
> in the binding?


>> +        MICBIAS_2_0V - MICBIAS output is powered to 2.0V
>> +        MICBIAS_2_5V - MICBIAS output is powered to 2.5V
>> +        MICBIAS_AVDD - MICBIAS output is connected to AVDD
> The numbers still need to be defined in the binding, the point with the
> defines is to make both code and DTs more readable but we need to know
> what is actually going to go into the binary.

Numbers added.

>> +	/* Mic Bias */
>> +	SND_SOC_DAPM_SUPPLY("Mic Bias", SND_SOC_NOPM, 0, 0, mic_bias_event,
> The idiomatic thing would be to use the pin name.

In this case the mic bias comes out of the chip trough a separate pin 
and it is up to board designer to connect it with any (or all) of the 
three mic pins.

>> +	/* Make ADC turn on when recording even if not mixed from any inputs */
>> +	{"ADC", NULL, "Internal ADC Source"},
> Don't do this (or the equivalent from the DACs) - we don't do this for
> any other drivers, we shouldn't do it for this one.  If we're going to
> do something like this it should be generic not per driver hacks.

Similar approach is used at least in wm8400.c, wm8990.c, wm8991.c, and 
in ab8500-codec.c. But I see your point. I'll roll back that change. I 
moved the clock enable/disable code to set_bias_level() to avoid 
unwanted behavior (codec clocks not turning on at playback/capture start 
if damp switches are not set correctly).

>> +		if (codec->dapm.bias_level == SND_SOC_BIAS_OFF)
>> +			aic31xx_set_power(codec, 1);
>> +		break;
>> +	case SND_SOC_BIAS_OFF:
>> +		aic31xx_set_power(codec, 0);
>> +		break;
> Just inline the set power function, or at the very least split it into
> separate on and off functions - there is zero shared code between the
> power on and off paths.

After adding the clock enable/disable code to set_bias_level, it started 
to look hairy when everything was inlined. I split the set_power 
function to *_on and *_off functions.

In addition to these, after rebasing on top of linux-next branch, I 
started to use use the new SOC_DOUBLE_R_S_TLV macro for the signed 
integer mixers.

Best regards,

More information about the Alsa-devel mailing list