diff options
author | apatard@mandriva.com <apatard@mandriva.com> | 2010-05-15 11:30:01 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-05-16 13:04:46 -0400 |
commit | b6f4bb383d69cac46f17e2305720f9a3d426c5ed (patch) | |
tree | b6ec80012be3e2cfed6bf79d32c716e02de75f32 /include/sound | |
parent | 6a2f1ee1f9bb5346644105c9355e9e06f6a847d3 (diff) |
ASoC: Add SOC_DOUBLE_R_SX_TLV control
This patch is adding a new control which has the following capabilities:
- tlv
- variable data size (for instance, 7 ou 8 bit)
- double mixer
- data range centered around 0
Signed-off-by: Arnaud Patard <apatard@mandriva.com>
Acked-by: Liam Girdwood <lrg@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'include/sound')
-rw-r--r-- | include/sound/soc.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/include/sound/soc.h b/include/sound/soc.h index 697e7ffe39d7..65e9d03ed4f5 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h | |||
@@ -170,6 +170,21 @@ | |||
170 | .get = xhandler_get, .put = xhandler_put, \ | 170 | .get = xhandler_get, .put = xhandler_put, \ |
171 | .private_value = (unsigned long)&xenum } | 171 | .private_value = (unsigned long)&xenum } |
172 | 172 | ||
173 | #define SOC_DOUBLE_R_SX_TLV(xname, xreg_left, xreg_right, xshift,\ | ||
174 | xmin, xmax, tlv_array) \ | ||
175 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \ | ||
176 | .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \ | ||
177 | SNDRV_CTL_ELEM_ACCESS_READWRITE, \ | ||
178 | .tlv.p = (tlv_array), \ | ||
179 | .info = snd_soc_info_volsw_2r_sx, \ | ||
180 | .get = snd_soc_get_volsw_2r_sx, \ | ||
181 | .put = snd_soc_put_volsw_2r_sx, \ | ||
182 | .private_value = (unsigned long)&(struct soc_mixer_control) \ | ||
183 | {.reg = xreg_left, \ | ||
184 | .rreg = xreg_right, .shift = xshift, \ | ||
185 | .min = xmin, .max = xmax} } | ||
186 | |||
187 | |||
173 | /* | 188 | /* |
174 | * Simplified versions of above macros, declaring a struct and calculating | 189 | * Simplified versions of above macros, declaring a struct and calculating |
175 | * ARRAY_SIZE internally | 190 | * ARRAY_SIZE internally |
@@ -329,6 +344,12 @@ int snd_soc_put_volsw_s8(struct snd_kcontrol *kcontrol, | |||
329 | struct snd_ctl_elem_value *ucontrol); | 344 | struct snd_ctl_elem_value *ucontrol); |
330 | int snd_soc_limit_volume(struct snd_soc_codec *codec, | 345 | int snd_soc_limit_volume(struct snd_soc_codec *codec, |
331 | const char *name, int max); | 346 | const char *name, int max); |
347 | int snd_soc_info_volsw_2r_sx(struct snd_kcontrol *kcontrol, | ||
348 | struct snd_ctl_elem_info *uinfo); | ||
349 | int snd_soc_get_volsw_2r_sx(struct snd_kcontrol *kcontrol, | ||
350 | struct snd_ctl_elem_value *ucontrol); | ||
351 | int snd_soc_put_volsw_2r_sx(struct snd_kcontrol *kcontrol, | ||
352 | struct snd_ctl_elem_value *ucontrol); | ||
332 | 353 | ||
333 | /** | 354 | /** |
334 | * struct snd_soc_jack_pin - Describes a pin to update based on jack detection | 355 | * struct snd_soc_jack_pin - Describes a pin to update based on jack detection |