[alsa-devel] Audio codec volume control

Rajeev kumar rajeev-dlh.kumar at st.com
Thu Sep 20 12:39:53 CEST 2012


Hello Peter,

On 9/20/2012 3:49 PM, Peter Ujfalusi wrote:
> On 09/20/2012 01:08 PM, Rajeev kumar wrote:
>>> case 3:
>>> 1. Provide master volume control
>>> 2. stereo volume control for the left/right channel
>>>
>>
>> You mean to say
>> Left and Right should be a single stereo control which can be provided with
>> SOC_DOUBLE. Actually case 2 corresponds to the same setting which you are
>> suggesting.
>>
>> But why this is better option?
>
> You have less controls for the codec ->  easier for users.
> Users still can adjust the left/right differently if they want.
>
>> In case user wants a separate left/right volume control then how this setting
>> is going to help.
>
> In most cases you change both left/right channel:
> amixer sset 'PCM' 8 # left/right volume is 8
>
> but users can set different volume per channel:
> amixer sset 'PCM' 8,1 # left volume is 8, right is 1
>
> it is better than:
> amixer sset 'PCM Left' 8 # left volume is 8
> amixer sset 'PCM Right' 8 # left volume is 8
>
> or
> amixer sset 'PCM Left' 8 # left volume is 8
> amixer sset 'PCM Right' 1 # left volume is 1
>

Thanks for the info.

Please find below the controls I have provided

static const char *pwm_mode_text[] = { "Binary", "Headphone", "Ternary",
         "Phase-shift"};

static const DECLARE_TLV_DB_SCALE(out_gain_tlv, -9150, 50, 0);
static const DECLARE_TLV_DB_SCALE(master_vol_tlv, -12750, 50, 0);
static const SOC_ENUM_SINGLE_DECL(pwm_src, STA529_FFXCFG1, 4, 
pwm_mode_text);

static const struct snd_kcontrol_new sta529_snd_controls[] = {
         SOC_DOUBLE_R_TLV("Digital Playback Volume", STA529_LVOL, 
STA529_RVOL, 0,
                         127, 0, out_gain_tlv),
         SOC_SINGLE_TLV("Master Playback Volume", STA529_MVOL, 0, 127, 1,
                         master_vol_tlv),
         SOC_ENUM("PWM Select", pwm_src),
};

So in our amixer output I am not getting any separate numid for 
left/right volume, so that user can control it.

Is there something I am missing in my code.


Best Regards
Rajeev






More information about the Alsa-devel mailing list