Re: [PATCH v2] ASoC: tlv320aic3x: Add support for tlv320aic3104

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 02/04/2015 12:25 AM, Benoît Thébaudeau wrote:
> Dear Jyri Sarha,
> 
> Sorry to come late.
> 
> On Mon, Feb 2, 2015 at 3:48 PM, Jyri Sarha <jsarha@xxxxxx> wrote:
> [...]
>> diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
>> index b7ebce0..cb92cdb 100644
>> --- a/sound/soc/codecs/tlv320aic3x.c
>> +++ b/sound/soc/codecs/tlv320aic3x.c
> [...]
>> @@ -550,6 +575,22 @@ static const struct snd_kcontrol_new aic3x_right_pga_mixer_controls[] = {
>>         SOC_DAPM_SINGLE_AIC3X("Mic3R Switch", MIC3LR_2_RADC_CTRL, 0, 1, 1),
>>  };
>>
>> +/* Left PGA Mixer for tlv320aic3104 */
>> +static const struct snd_kcontrol_new aic3104_left_pga_mixer_controls[] = {
>> +       SOC_DAPM_SINGLE_AIC3X("Line1L Switch", LINE1L_2_LADC_CTRL, 3, 1, 1),
>> +       SOC_DAPM_SINGLE_AIC3X("Line1R Switch", LINE1R_2_LADC_CTRL, 3, 1, 1),
>> +       SOC_DAPM_SINGLE_AIC3X("Mic2L Switch", MIC3LR_2_LADC_CTRL, 4, 1, 1),
>> +       SOC_DAPM_SINGLE_AIC3X("Mic2R Switch", MIC3LR_2_LADC_CTRL, 0, 1, 1),
>> +};
>> +
>> +/* Right PGA Mixer for tlv320aic3104 */
>> +static const struct snd_kcontrol_new aic3104_right_pga_mixer_controls[] = {
>> +       SOC_DAPM_SINGLE_AIC3X("Line1R Switch", LINE1R_2_RADC_CTRL, 3, 1, 1),
>> +       SOC_DAPM_SINGLE_AIC3X("Line1L Switch", LINE1L_2_RADC_CTRL, 3, 1, 1),
>> +       SOC_DAPM_SINGLE_AIC3X("Mic2L Switch", MIC3LR_2_RADC_CTRL, 4, 1, 1),
>> +       SOC_DAPM_SINGLE_AIC3X("Mic2R Switch", MIC3LR_2_RADC_CTRL, 0, 1, 1),
>> +};
>> +
> 
> This part is wrong. All these controls should be turned into TLVs.
> Otherwise, because of the reset values of these registers, the
> reserved value 0b1110 is used for the corresponding bit-fields if
> their lsb is cleared using the controls above.

These mixers are using  custom put callbacks via SOC_DAPM_SINGLE_AIC3X():
snd_soc_dapm_put_volsw_aic3x, this will make sure that the input level control
bits are handled right.
The driver does not have means to handle the gain on these registers, it is
either 0db (connected) or not connected.

> Generally speaking, you have tracked reserved registers, but you
> should also track reserved values.
> 
>>  /* Left Line1 Mux */
>>  static const struct snd_kcontrol_new aic3x_left_line1l_mux_controls =
>>  SOC_DAPM_ENUM("Route", aic3x_line1l_2_l_enum);
> [...]
>> @@ -839,6 +890,72 @@ static const struct snd_soc_dapm_route intercon[] = {
> [...]
>> +/* For other than tlv320aic3104 */
> 
> Typo above: not "other than" here.
> 
>> +static const struct snd_soc_dapm_route intercon_extra_3104[] = {
>> +       /* Left Input */
>> +       {"Left PGA Mixer", "Mic2L Switch", "MIC2L"},
>> +       {"Left PGA Mixer", "Mic2R Switch", "MIC2R"},
>> +
>> +       /* Right Input */
>> +       {"Right PGA Mixer", "Mic2L Switch", "MIC2L"},
>> +       {"Right PGA Mixer", "Mic2R Switch", "MIC2R"},
>> +};
>> +
>>  static const struct snd_soc_dapm_route intercon_mono[] = {
>>         /* Mono Output */
>>         {"Mono Mixer", "Line2L Bypass Switch", "Left Line2L Mux"},
> [...]
> 
> The rest is good.
> 
> Best regards,
> Benoît
> 


-- 
Péter
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux