#ifndef __LINUX_SND_SOC_DAPM_H
#define __LINUX_SND_SOC_DAPM_H
#include <linux/types.h>
#include <sound/control.h>
#include <sound/soc-topology.h>
#include <sound/asoc.h>
struct device;
struct snd_pcm_substream;
struct snd_soc_pcm_runtime;
struct soc_enum;
#define SND_SOC_NOPM …
#define SND_SOC_DAPM_VMID(wname) …
#define SND_SOC_DAPM_SIGGEN(wname) …
#define SND_SOC_DAPM_SINK(wname) …
#define SND_SOC_DAPM_INPUT(wname) …
#define SND_SOC_DAPM_OUTPUT(wname) …
#define SND_SOC_DAPM_MIC(wname, wevent) …
#define SND_SOC_DAPM_HP(wname, wevent) …
#define SND_SOC_DAPM_SPK(wname, wevent) …
#define SND_SOC_DAPM_LINE(wname, wevent) …
#define SND_SOC_DAPM_INIT_REG_VAL(wreg, wshift, winvert) …
#define SND_SOC_DAPM_PGA(wname, wreg, wshift, winvert,\
wcontrols, wncontrols) …
#define SND_SOC_DAPM_OUT_DRV(wname, wreg, wshift, winvert,\
wcontrols, wncontrols) …
#define SND_SOC_DAPM_MIXER(wname, wreg, wshift, winvert, \
wcontrols, wncontrols) …
#define SND_SOC_DAPM_MIXER_NAMED_CTL(wname, wreg, wshift, winvert, \
wcontrols, wncontrols) …
#define SND_SOC_DAPM_MICBIAS(wname, wreg, wshift, winvert) …
#define SND_SOC_DAPM_SWITCH(wname, wreg, wshift, winvert, wcontrols) …
#define SND_SOC_DAPM_MUX(wname, wreg, wshift, winvert, wcontrols) …
#define SND_SOC_DAPM_DEMUX(wname, wreg, wshift, winvert, wcontrols) …
#define SOC_PGA_ARRAY(wname, wreg, wshift, winvert,\
wcontrols) …
#define SOC_MIXER_ARRAY(wname, wreg, wshift, winvert, \
wcontrols) …
#define SOC_MIXER_NAMED_CTL_ARRAY(wname, wreg, wshift, winvert, \
wcontrols) …
#define SND_SOC_DAPM_PGA_E(wname, wreg, wshift, winvert, wcontrols, \
wncontrols, wevent, wflags) …
#define SND_SOC_DAPM_OUT_DRV_E(wname, wreg, wshift, winvert, wcontrols, \
wncontrols, wevent, wflags) …
#define SND_SOC_DAPM_MIXER_E(wname, wreg, wshift, winvert, wcontrols, \
wncontrols, wevent, wflags) …
#define SND_SOC_DAPM_MIXER_NAMED_CTL_E(wname, wreg, wshift, winvert, \
wcontrols, wncontrols, wevent, wflags) …
#define SND_SOC_DAPM_SWITCH_E(wname, wreg, wshift, winvert, wcontrols, \
wevent, wflags) …
#define SND_SOC_DAPM_MUX_E(wname, wreg, wshift, winvert, wcontrols, \
wevent, wflags) …
#define SND_SOC_DAPM_PGA_S(wname, wsubseq, wreg, wshift, winvert, \
wevent, wflags) …
#define SND_SOC_DAPM_SUPPLY_S(wname, wsubseq, wreg, wshift, winvert, wevent, \
wflags) …
#define SOC_PGA_E_ARRAY(wname, wreg, wshift, winvert, wcontrols, \
wevent, wflags) …
#define SOC_MIXER_E_ARRAY(wname, wreg, wshift, winvert, wcontrols, \
wevent, wflags) …
#define SOC_MIXER_NAMED_CTL_E_ARRAY(wname, wreg, wshift, winvert, \
wcontrols, wevent, wflags) …
#define SND_SOC_DAPM_PRE(wname, wevent) …
#define SND_SOC_DAPM_POST(wname, wevent) …
#define SND_SOC_DAPM_AIF_IN(wname, stname, wchan, wreg, wshift, winvert) …
#define SND_SOC_DAPM_AIF_IN_E(wname, stname, wchan, wreg, wshift, winvert, \
wevent, wflags) …
#define SND_SOC_DAPM_AIF_OUT(wname, stname, wchan, wreg, wshift, winvert) …
#define SND_SOC_DAPM_AIF_OUT_E(wname, stname, wchan, wreg, wshift, winvert, \
wevent, wflags) …
#define SND_SOC_DAPM_DAC(wname, stname, wreg, wshift, winvert) …
#define SND_SOC_DAPM_DAC_E(wname, stname, wreg, wshift, winvert, \
wevent, wflags) …
#define SND_SOC_DAPM_ADC(wname, stname, wreg, wshift, winvert) …
#define SND_SOC_DAPM_ADC_E(wname, stname, wreg, wshift, winvert, \
wevent, wflags) …
#define SND_SOC_DAPM_CLOCK_SUPPLY(wname) …
#define SND_SOC_DAPM_REG(wid, wname, wreg, wshift, wmask, won_val, woff_val) …
#define SND_SOC_DAPM_SUPPLY(wname, wreg, wshift, winvert, wevent, wflags) …
#define SND_SOC_DAPM_REGULATOR_SUPPLY(wname, wdelay, wflags) …
#define SND_SOC_DAPM_PINCTRL(wname, active, sleep) …
#define SOC_DAPM_DOUBLE(xname, reg, lshift, rshift, max, invert) …
#define SOC_DAPM_DOUBLE_R(xname, lreg, rreg, shift, max, invert) …
#define SOC_DAPM_SINGLE(xname, reg, shift, max, invert) …
#define SOC_DAPM_SINGLE_AUTODISABLE(xname, reg, shift, max, invert) …
#define SOC_DAPM_SINGLE_VIRT(xname, max) …
#define SOC_DAPM_SINGLE_TLV(xname, reg, shift, max, invert, tlv_array) …
#define SOC_DAPM_SINGLE_TLV_AUTODISABLE(xname, reg, shift, max, invert, tlv_array) …
#define SOC_DAPM_SINGLE_TLV_VIRT(xname, max, tlv_array) …
#define SOC_DAPM_ENUM(xname, xenum) …
#define SOC_DAPM_ENUM_EXT(xname, xenum, xget, xput) …
#define SOC_DAPM_PIN_SWITCH(xname) …
#define SND_SOC_DAPM_STREAM_NOP …
#define SND_SOC_DAPM_STREAM_START …
#define SND_SOC_DAPM_STREAM_STOP …
#define SND_SOC_DAPM_STREAM_SUSPEND …
#define SND_SOC_DAPM_STREAM_RESUME …
#define SND_SOC_DAPM_STREAM_PAUSE_PUSH …
#define SND_SOC_DAPM_STREAM_PAUSE_RELEASE …
#define SND_SOC_DAPM_PRE_PMU …
#define SND_SOC_DAPM_POST_PMU …
#define SND_SOC_DAPM_PRE_PMD …
#define SND_SOC_DAPM_POST_PMD …
#define SND_SOC_DAPM_PRE_REG …
#define SND_SOC_DAPM_POST_REG …
#define SND_SOC_DAPM_WILL_PMU …
#define SND_SOC_DAPM_WILL_PMD …
#define SND_SOC_DAPM_PRE_POST_PMD …
#define SND_SOC_DAPM_PRE_POST_PMU …
#define SND_SOC_DAPM_EVENT_ON(e) …
#define SND_SOC_DAPM_EVENT_OFF(e) …
#define SND_SOC_DAPM_REGULATOR_BYPASS …
struct snd_soc_dapm_widget;
enum snd_soc_dapm_type;
struct snd_soc_dapm_path;
struct snd_soc_dapm_pin;
struct snd_soc_dapm_route;
struct snd_soc_dapm_context;
struct regulator;
struct snd_soc_dapm_widget_list;
struct snd_soc_dapm_update;
enum snd_soc_dapm_direction;
enum snd_soc_bias_level { … };
int dapm_regulator_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event);
int dapm_clock_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event);
int dapm_pinctrl_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event);
int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol);
int snd_soc_dapm_get_volsw(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol);
int snd_soc_dapm_get_enum_double(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol);
int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol);
int snd_soc_dapm_info_pin_switch(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo);
int snd_soc_dapm_get_pin_switch(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *uncontrol);
int snd_soc_dapm_put_pin_switch(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *uncontrol);
int snd_soc_dapm_new_controls(struct snd_soc_dapm_context *dapm,
const struct snd_soc_dapm_widget *widget, unsigned int num);
struct snd_soc_dapm_widget *snd_soc_dapm_new_control(struct snd_soc_dapm_context *dapm,
const struct snd_soc_dapm_widget *widget);
struct snd_soc_dapm_widget *snd_soc_dapm_new_control_unlocked(struct snd_soc_dapm_context *dapm,
const struct snd_soc_dapm_widget *widget);
int snd_soc_dapm_new_dai_widgets(struct snd_soc_dapm_context *dapm, struct snd_soc_dai *dai);
void snd_soc_dapm_free_widget(struct snd_soc_dapm_widget *w);
int snd_soc_dapm_link_dai_widgets(struct snd_soc_card *card);
void snd_soc_dapm_connect_dai_link_widgets(struct snd_soc_card *card);
int snd_soc_dapm_update_dai(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params, struct snd_soc_dai *dai);
int snd_soc_dapm_widget_name_cmp(struct snd_soc_dapm_widget *widget, const char *s);
int snd_soc_dapm_new_widgets(struct snd_soc_card *card);
void snd_soc_dapm_free(struct snd_soc_dapm_context *dapm);
void snd_soc_dapm_init(struct snd_soc_dapm_context *dapm,
struct snd_soc_card *card, struct snd_soc_component *component);
int snd_soc_dapm_add_routes(struct snd_soc_dapm_context *dapm,
const struct snd_soc_dapm_route *route, int num);
int snd_soc_dapm_del_routes(struct snd_soc_dapm_context *dapm,
const struct snd_soc_dapm_route *route, int num);
int snd_soc_dapm_weak_routes(struct snd_soc_dapm_context *dapm,
const struct snd_soc_dapm_route *route, int num);
void snd_soc_dapm_free_widget(struct snd_soc_dapm_widget *w);
void snd_soc_dapm_stream_event(struct snd_soc_pcm_runtime *rtd, int stream, int event);
void snd_soc_dapm_stream_stop(struct snd_soc_pcm_runtime *rtd, int stream);
void snd_soc_dapm_shutdown(struct snd_soc_card *card);
int snd_soc_dapm_mixer_update_power(struct snd_soc_dapm_context *dapm,
struct snd_kcontrol *kcontrol, int connect, struct snd_soc_dapm_update *update);
int snd_soc_dapm_mux_update_power(struct snd_soc_dapm_context *dapm,
struct snd_kcontrol *kcontrol, int mux, struct soc_enum *e,
struct snd_soc_dapm_update *update);
extern struct attribute *soc_dapm_dev_attrs[];
void snd_soc_dapm_debugfs_init(struct snd_soc_dapm_context *dapm, struct dentry *parent);
int snd_soc_dapm_enable_pin(struct snd_soc_dapm_context *dapm, const char *pin);
int snd_soc_dapm_enable_pin_unlocked(struct snd_soc_dapm_context *dapm, const char *pin);
int snd_soc_dapm_disable_pin(struct snd_soc_dapm_context *dapm, const char *pin);
int snd_soc_dapm_disable_pin_unlocked(struct snd_soc_dapm_context *dapm, const char *pin);
int snd_soc_dapm_nc_pin(struct snd_soc_dapm_context *dapm, const char *pin);
int snd_soc_dapm_nc_pin_unlocked(struct snd_soc_dapm_context *dapm, const char *pin);
int snd_soc_dapm_get_pin_status(struct snd_soc_dapm_context *dapm, const char *pin);
int snd_soc_dapm_sync(struct snd_soc_dapm_context *dapm);
int snd_soc_dapm_sync_unlocked(struct snd_soc_dapm_context *dapm);
int snd_soc_dapm_force_enable_pin(struct snd_soc_dapm_context *dapm, const char *pin);
int snd_soc_dapm_force_enable_pin_unlocked(struct snd_soc_dapm_context *dapm, const char *pin);
int snd_soc_dapm_ignore_suspend(struct snd_soc_dapm_context *dapm, const char *pin);
unsigned int dapm_kcontrol_get_value(const struct snd_kcontrol *kcontrol);
void dapm_mark_endpoints_dirty(struct snd_soc_card *card);
int snd_soc_dapm_dai_get_connected_widgets(struct snd_soc_dai *dai, int stream,
struct snd_soc_dapm_widget_list **list,
bool (*custom_stop_condition)(struct snd_soc_dapm_widget *, enum snd_soc_dapm_direction));
void snd_soc_dapm_dai_free_widgets(struct snd_soc_dapm_widget_list **list);
struct snd_soc_dapm_context *snd_soc_dapm_kcontrol_dapm(struct snd_kcontrol *kcontrol);
struct snd_soc_dapm_widget *snd_soc_dapm_kcontrol_widget(struct snd_kcontrol *kcontrol);
int snd_soc_dapm_force_bias_level(struct snd_soc_dapm_context *dapm, enum snd_soc_bias_level level);
enum snd_soc_dapm_type { … };
struct snd_soc_dapm_route { … };
struct snd_soc_dapm_path { … };
struct snd_soc_dapm_widget { … };
struct snd_soc_dapm_update { … };
struct snd_soc_dapm_context { … };
struct snd_soc_dapm_widget_list { … };
#define for_each_dapm_widgets(list, i, widget) …
struct snd_soc_dapm_stats { … };
struct snd_soc_dapm_pinctrl_priv { … };
static inline void snd_soc_dapm_init_bias_level(
struct snd_soc_dapm_context *dapm, enum snd_soc_bias_level level)
{ … }
static inline enum snd_soc_bias_level snd_soc_dapm_get_bias_level(
struct snd_soc_dapm_context *dapm)
{ … }
enum snd_soc_dapm_direction { … };
#define SND_SOC_DAPM_DIR_TO_EP(x) …
#define SND_SOC_DAPM_EP_SOURCE …
#define SND_SOC_DAPM_EP_SINK …
#define snd_soc_dapm_widget_for_each_path(w, dir, p) …
#define snd_soc_dapm_widget_for_each_path_safe(w, dir, p, next_p) …
#define snd_soc_dapm_widget_for_each_sink_path(w, p) …
#define snd_soc_dapm_widget_for_each_source_path(w, p) …
#endif