[alsa-devel] Question about snd_soc_add_controls

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Mon Jun 21 11:19:06 CEST 2010

Dear very kind guys

I would like to use snd_soc_add_controls for ak4642.
But I'm not good at it now,
so, for 1st step, I would like to add "Playback Volume".

Playback Volume length of ak4642 chip is -115.0 dB to +12.0 dB
step is 0.5 dB. and It can use mute.

So, I created code like this
static const DECLARE_TLV_DB_SCALE(out_tlv, -11500, 50, 1); /* 0.5 dB step */

static const struct snd_kcontrol_new ak4642_snd_controls[] = {

	SOC_DOUBLE_R_TLV("Playback Volume", L_DVC, R_DVC,
			 0, 256, 0, out_tlv),

But I wonder
#define DECLARE_TLV_DB_SCALE(name, min, step, mute)

Does this "mute" mean that it can use mute ?
But how to ?

#define SOC_DOUBLE_R_TLV(xname, reg_left, reg_right, xshift, xmax, xinvert, tlv_array)

What is this "xinvert" ?

Can you please teach me about above ?
And where is these code used ?
It seems very complex for me...

Best regards
Kuninori Morimoto

More information about the Alsa-devel mailing list