aboutsummaryrefslogtreecommitdiffstats
path: root/include/sound/soc-dapm.h
diff options
context:
space:
mode:
authorPeter Ujfalusi <peter.ujfalusi@nokia.com>2009-01-05 02:54:57 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2009-01-05 12:47:17 -0500
commit2e72f8e3716bc3bbf4c9b5b987fb5ab3223f60bf (patch)
treef568500ae1737e5c11376ad9b65d706c9da18874 /include/sound/soc-dapm.h
parent796123368871e4a838dc0dfd5dbc3cd8981ef429 (diff)
ASoC: New enum type: value_enum
This patch introduces a new enum type. In this enum type each enumerated items referred with a value. This new enum type can handle enums encoded in bitfield, or any other weird ways. twl4030 codec has several mux selection register, where the input/output mux is coded in a bitfield. With the normal enum type this type of mux can not be handled in a clean way. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'include/sound/soc-dapm.h')
-rw-r--r--include/sound/soc-dapm.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index 7ee2f70ca42e..4af1083e3287 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -85,6 +85,10 @@
85#define SND_SOC_DAPM_MUX(wname, wreg, wshift, winvert, wcontrols) \ 85#define SND_SOC_DAPM_MUX(wname, wreg, wshift, winvert, wcontrols) \
86{ .id = snd_soc_dapm_mux, .name = wname, .reg = wreg, .shift = wshift, \ 86{ .id = snd_soc_dapm_mux, .name = wname, .reg = wreg, .shift = wshift, \
87 .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1} 87 .invert = winvert, .kcontrols = wcontrols, .num_kcontrols = 1}
88#define SND_SOC_DAPM_VALUE_MUX(wname, wreg, wshift, winvert, wcontrols) \
89{ .id = snd_soc_dapm_value_mux, .name = wname, .reg = wreg, \
90 .shift = wshift, .invert = winvert, .kcontrols = wcontrols, \
91 .num_kcontrols = 1}
88 92
89/* path domain with event - event handler must return 0 for success */ 93/* path domain with event - event handler must return 0 for success */
90#define SND_SOC_DAPM_PGA_E(wname, wreg, wshift, winvert, wcontrols, \ 94#define SND_SOC_DAPM_PGA_E(wname, wreg, wshift, winvert, wcontrols, \
@@ -172,6 +176,12 @@
172 .get = snd_soc_dapm_get_enum_double, \ 176 .get = snd_soc_dapm_get_enum_double, \
173 .put = snd_soc_dapm_put_enum_double, \ 177 .put = snd_soc_dapm_put_enum_double, \
174 .private_value = (unsigned long)&xenum } 178 .private_value = (unsigned long)&xenum }
179#define SOC_DAPM_VALUE_ENUM(xname, xenum) \
180{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
181 .info = snd_soc_info_value_enum_double, \
182 .get = snd_soc_dapm_get_value_enum_double, \
183 .put = snd_soc_dapm_put_value_enum_double, \
184 .private_value = (unsigned long)&xenum }
175 185
176/* dapm stream operations */ 186/* dapm stream operations */
177#define SND_SOC_DAPM_STREAM_NOP 0x0 187#define SND_SOC_DAPM_STREAM_NOP 0x0
@@ -214,6 +224,10 @@ int snd_soc_dapm_get_enum_double(struct snd_kcontrol *kcontrol,
214 struct snd_ctl_elem_value *ucontrol); 224 struct snd_ctl_elem_value *ucontrol);
215int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol, 225int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
216 struct snd_ctl_elem_value *ucontrol); 226 struct snd_ctl_elem_value *ucontrol);
227int snd_soc_dapm_get_value_enum_double(struct snd_kcontrol *kcontrol,
228 struct snd_ctl_elem_value *ucontrol);
229int snd_soc_dapm_put_value_enum_double(struct snd_kcontrol *kcontrol,
230 struct snd_ctl_elem_value *ucontrol);
217int snd_soc_dapm_new_control(struct snd_soc_codec *codec, 231int snd_soc_dapm_new_control(struct snd_soc_codec *codec,
218 const struct snd_soc_dapm_widget *widget); 232 const struct snd_soc_dapm_widget *widget);
219int snd_soc_dapm_new_controls(struct snd_soc_codec *codec, 233int snd_soc_dapm_new_controls(struct snd_soc_codec *codec,
@@ -247,6 +261,7 @@ enum snd_soc_dapm_type {
247 snd_soc_dapm_input = 0, /* input pin */ 261 snd_soc_dapm_input = 0, /* input pin */
248 snd_soc_dapm_output, /* output pin */ 262 snd_soc_dapm_output, /* output pin */
249 snd_soc_dapm_mux, /* selects 1 analog signal from many inputs */ 263 snd_soc_dapm_mux, /* selects 1 analog signal from many inputs */
264 snd_soc_dapm_value_mux, /* selects 1 analog signal from many inputs */
250 snd_soc_dapm_mixer, /* mixes several analog signals together */ 265 snd_soc_dapm_mixer, /* mixes several analog signals together */
251 snd_soc_dapm_pga, /* programmable gain/attenuation (volume) */ 266 snd_soc_dapm_pga, /* programmable gain/attenuation (volume) */
252 snd_soc_dapm_adc, /* analog to digital converter */ 267 snd_soc_dapm_adc, /* analog to digital converter */