aboutsummaryrefslogtreecommitdiffstats
path: root/include/sound
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2012-01-21 16:14:48 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-01-26 11:07:54 -0500
commit62ea874abc11f02dbeb05314eb82f7d38e82e894 (patch)
tree6f4b8b4b4c404eac9167ffb833b5b4a244a2ab43 /include/sound
parente8f00041a65d0d67b54843b3c93f229f6ba917f6 (diff)
ASoC: Provide REGULATOR_SUPPLY widget type
Modern devices allow systems to enable and disable individual supplies on the device, allowing additional power saving by switching off regulators which power portions of the device which are not currently in use. Add a new SND_SOC_DAPM_REGULATOR_SUPPLY widget type factoring out the code for managing such widgets from individual drivers. The widget name will be used as the supply name when requesting the regulator from the regulator API. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Acked-by: Liam Girdwood <lrg@ti.com>
Diffstat (limited to 'include/sound')
-rw-r--r--include/sound/soc-dapm.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index d26a9b78477..bfa0d3cbbf2 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -243,6 +243,10 @@
243{ .id = snd_soc_dapm_supply, .name = wname, .reg = wreg, \ 243{ .id = snd_soc_dapm_supply, .name = wname, .reg = wreg, \
244 .shift = wshift, .invert = winvert, .event = wevent, \ 244 .shift = wshift, .invert = winvert, .event = wevent, \
245 .event_flags = wflags} 245 .event_flags = wflags}
246#define SND_SOC_DAPM_REGULATOR_SUPPLY(wname, wdelay) \
247{ .id = snd_soc_dapm_regulator_supply, .name = wname, \
248 .reg = SND_SOC_NOPM, .shift = wdelay, .event = dapm_regulator_event, \
249 .event_flags = SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD }
246 250
247/* dapm kcontrol types */ 251/* dapm kcontrol types */
248#define SOC_DAPM_SINGLE(xname, reg, shift, max, invert) \ 252#define SOC_DAPM_SINGLE(xname, reg, shift, max, invert) \
@@ -322,6 +326,8 @@ struct snd_soc_dapm_context;
322 326
323int dapm_reg_event(struct snd_soc_dapm_widget *w, 327int dapm_reg_event(struct snd_soc_dapm_widget *w,
324 struct snd_kcontrol *kcontrol, int event); 328 struct snd_kcontrol *kcontrol, int event);
329int dapm_regulator_event(struct snd_soc_dapm_widget *w,
330 struct snd_kcontrol *kcontrol, int event);
325 331
326/* dapm controls */ 332/* dapm controls */
327int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol, 333int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
@@ -411,6 +417,7 @@ enum snd_soc_dapm_type {
411 snd_soc_dapm_pre, /* machine specific pre widget - exec first */ 417 snd_soc_dapm_pre, /* machine specific pre widget - exec first */
412 snd_soc_dapm_post, /* machine specific post widget - exec last */ 418 snd_soc_dapm_post, /* machine specific post widget - exec last */
413 snd_soc_dapm_supply, /* power/clock supply */ 419 snd_soc_dapm_supply, /* power/clock supply */
420 snd_soc_dapm_regulator_supply, /* external regulator */
414 snd_soc_dapm_aif_in, /* audio interface input */ 421 snd_soc_dapm_aif_in, /* audio interface input */
415 snd_soc_dapm_aif_out, /* audio interface output */ 422 snd_soc_dapm_aif_out, /* audio interface output */
416 snd_soc_dapm_siggen, /* signal generator */ 423 snd_soc_dapm_siggen, /* signal generator */
@@ -465,6 +472,8 @@ struct snd_soc_dapm_widget {
465 struct list_head list; 472 struct list_head list;
466 struct snd_soc_dapm_context *dapm; 473 struct snd_soc_dapm_context *dapm;
467 474
475 void *priv; /* widget specific data */
476
468 /* dapm control */ 477 /* dapm control */
469 short reg; /* negative reg = no direct dapm */ 478 short reg; /* negative reg = no direct dapm */
470 unsigned char shift; /* bits to shift */ 479 unsigned char shift; /* bits to shift */