[alsa-devel] ASoC: TLV320AIC3x: Adding additional functionality for 3106 with [Patch] for discuss

Timur Karaldin karaldin at mcsplus.ru
Tue Mar 15 13:12:44 CET 2016


Hi Peter!

14.03.2016 17:47, Peter Ujfalusi пишет:
> So the issue is that we have the DAPM switches controlling exactly the 
> same registers. I believe if you would set the gain in a way that bit0 
> is 1, then DAPM will think that the path is disconnected. Also if you 
> would set the gain and then mute and unmute the path you would have 
> lost the gain you wanted to have.. The only way I can think of 
> implementing these mixers is to have two sets of custom callbacks. one 
> set is to set/get the gain and the other is to set/get the 
> mute/disconnect on these. When the path is disconnected you should not 
> write the gain change to the chip, but cache it and if the path is 
> unmuted, you write the cached gain. When you mute the path you should 
> take the set gain first, cache it, then disconnect the path. For these 
> gains you should have DECLARE_TLV_DB_SCALE() and use SOC_SINGLE_TLV(). 
> Make sure that the control name matches with the corresponding DAPM 
> widget's name so ALSA can match them correctly. 
That's not clear for me. As I understand, I need to create 
SOC_SINGLE_TLV() for each gain I would like to change, with the same 
name as SOC_DAPM_SINGLE_AIC3x (for example "Line1L Switch" for Line1) 
and make callbacks with cached gain values. Am I right?
May be the better sollution is to change SOC_DAPM_SINGLE_AIC3x on/off 
switch to other type with switch and gain control together? So it could 
have some connected states with different gains and disconnected state 
(Something like volume/mute control).

Cheers, Tim


More information about the Alsa-devel mailing list