Commit 40f02cd9 authored by Liam Girdwood's avatar Liam Girdwood Committed by Mark Brown

ASoC: dapm: Export mixer|mux_update_power() to public API.

Allow for the operation of custom mixer and mux DAPM widgets that can call
snd_soc_dapm_mixer_update_power() and snd_soc_dapm_mux_update_power() directly
after updating their status. This is useful with complex DAPM Mixer operations
where we need to do additional work in addition to setting a few mixer register
bits.
Signed-off-by: default avatarLiam Girdwood <lrg@ti.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 839e5fad
...@@ -371,6 +371,12 @@ int snd_soc_dapm_stream_event(struct snd_soc_pcm_runtime *rtd, ...@@ -371,6 +371,12 @@ int snd_soc_dapm_stream_event(struct snd_soc_pcm_runtime *rtd,
const char *stream, int event); const char *stream, int event);
void snd_soc_dapm_shutdown(struct snd_soc_card *card); void snd_soc_dapm_shutdown(struct snd_soc_card *card);
/* external DAPM widget events */
int snd_soc_dapm_mixer_update_power(struct snd_soc_dapm_widget *widget,
struct snd_kcontrol *kcontrol, int connect);
int snd_soc_dapm_mux_update_power(struct snd_soc_dapm_widget *widget,
struct snd_kcontrol *kcontrol, int mux, struct soc_enum *e);
/* dapm sys fs - used by the core */ /* dapm sys fs - used by the core */
int snd_soc_dapm_sys_add(struct device *dev); int snd_soc_dapm_sys_add(struct device *dev);
void snd_soc_dapm_debugfs_init(struct snd_soc_dapm_context *dapm, void snd_soc_dapm_debugfs_init(struct snd_soc_dapm_context *dapm,
......
...@@ -1699,9 +1699,8 @@ static inline void dapm_debugfs_cleanup(struct snd_soc_dapm_context *dapm) ...@@ -1699,9 +1699,8 @@ static inline void dapm_debugfs_cleanup(struct snd_soc_dapm_context *dapm)
#endif #endif
/* test and update the power status of a mux widget */ /* test and update the power status of a mux widget */
static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget, int snd_soc_dapm_mux_update_power(struct snd_soc_dapm_widget *widget,
struct snd_kcontrol *kcontrol, int change, struct snd_kcontrol *kcontrol, int mux, struct soc_enum *e)
int mux, struct soc_enum *e)
{ {
struct snd_soc_dapm_path *path; struct snd_soc_dapm_path *path;
int found = 0; int found = 0;
...@@ -1711,9 +1710,6 @@ static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget, ...@@ -1711,9 +1710,6 @@ static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget,
widget->id != snd_soc_dapm_value_mux) widget->id != snd_soc_dapm_value_mux)
return -ENODEV; return -ENODEV;
if (!change)
return 0;
/* find dapm widget path assoc with kcontrol */ /* find dapm widget path assoc with kcontrol */
list_for_each_entry(path, &widget->dapm->card->paths, list) { list_for_each_entry(path, &widget->dapm->card->paths, list) {
if (path->kcontrol != kcontrol) if (path->kcontrol != kcontrol)
...@@ -1742,9 +1738,10 @@ static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget, ...@@ -1742,9 +1738,10 @@ static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget,
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(snd_soc_dapm_mux_update_power);
/* test and update the power status of a mixer or switch widget */ /* test and update the power status of a mixer or switch widget */
static int dapm_mixer_update_power(struct snd_soc_dapm_widget *widget, int snd_soc_dapm_mixer_update_power(struct snd_soc_dapm_widget *widget,
struct snd_kcontrol *kcontrol, int connect) struct snd_kcontrol *kcontrol, int connect)
{ {
struct snd_soc_dapm_path *path; struct snd_soc_dapm_path *path;
...@@ -1773,6 +1770,7 @@ static int dapm_mixer_update_power(struct snd_soc_dapm_widget *widget, ...@@ -1773,6 +1770,7 @@ static int dapm_mixer_update_power(struct snd_soc_dapm_widget *widget,
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(snd_soc_dapm_mixer_update_power);
/* show dapm widget status in sys fs */ /* show dapm widget status in sys fs */
static ssize_t dapm_widget_show(struct device *dev, static ssize_t dapm_widget_show(struct device *dev,
...@@ -2357,7 +2355,7 @@ int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol, ...@@ -2357,7 +2355,7 @@ int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
update.val = val; update.val = val;
widget->dapm->update = &update; widget->dapm->update = &update;
dapm_mixer_update_power(widget, kcontrol, connect); snd_soc_dapm_mixer_update_power(widget, kcontrol, connect);
widget->dapm->update = NULL; widget->dapm->update = NULL;
} }
...@@ -2448,7 +2446,7 @@ int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol, ...@@ -2448,7 +2446,7 @@ int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
update.val = val; update.val = val;
widget->dapm->update = &update; widget->dapm->update = &update;
dapm_mux_update_power(widget, kcontrol, change, mux, e); snd_soc_dapm_mux_update_power(widget, kcontrol, mux, e);
widget->dapm->update = NULL; widget->dapm->update = NULL;
} }
...@@ -2509,8 +2507,7 @@ int snd_soc_dapm_put_enum_virt(struct snd_kcontrol *kcontrol, ...@@ -2509,8 +2507,7 @@ int snd_soc_dapm_put_enum_virt(struct snd_kcontrol *kcontrol,
widget->value = ucontrol->value.enumerated.item[0]; widget->value = ucontrol->value.enumerated.item[0];
dapm_mux_update_power(widget, kcontrol, change, snd_soc_dapm_mux_update_power(widget, kcontrol, widget->value, e);
widget->value, e);
} }
} }
...@@ -2613,7 +2610,7 @@ int snd_soc_dapm_put_value_enum_double(struct snd_kcontrol *kcontrol, ...@@ -2613,7 +2610,7 @@ int snd_soc_dapm_put_value_enum_double(struct snd_kcontrol *kcontrol,
update.val = val; update.val = val;
widget->dapm->update = &update; widget->dapm->update = &update;
dapm_mux_update_power(widget, kcontrol, change, mux, e); snd_soc_dapm_mux_update_power(widget, kcontrol, mux, e);
widget->dapm->update = NULL; widget->dapm->update = NULL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment