[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?
>
Fixed.
>> + 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,
>> + SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
>
> 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).
>> + case SND_SOC_BIAS_STANDBY:
>> + 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,
Jyri
More information about the Alsa-devel
mailing list