#include <linux/cleanup.h>
#include <sound/soc.h>
#include <sound/soc-dapm.h>
#include <sound/pcm.h>
#include <sound/control.h>
#include <sound/asound.h>
#include <linux/firmware.h>
#include <sound/soc-topology.h>
#include <sound/soc-dpcm.h>
#include <uapi/sound/snd_ar_tokens.h>
#include <linux/kernel.h>
#include <linux/wait.h>
#include "q6apm.h"
#include "audioreach.h"
struct snd_ar_control { … };
static struct audioreach_graph_info *audioreach_tplg_alloc_graph_info(struct q6apm *apm,
uint32_t graph_id,
bool *found)
{ … }
static void audioreach_tplg_add_sub_graph(struct audioreach_sub_graph *sg,
struct audioreach_graph_info *info)
{ … }
static struct audioreach_sub_graph *audioreach_tplg_alloc_sub_graph(struct q6apm *apm,
uint32_t sub_graph_id,
bool *found)
{ … }
static struct audioreach_container *audioreach_tplg_alloc_container(struct q6apm *apm,
struct audioreach_sub_graph *sg,
uint32_t container_id,
bool *found)
{ … }
static struct audioreach_module *audioreach_tplg_alloc_module(struct q6apm *apm,
struct audioreach_container *cont,
struct snd_soc_dapm_widget *w,
uint32_t module_id, bool *found)
{ … }
static struct snd_soc_tplg_vendor_array *audioreach_get_sg_array(
struct snd_soc_tplg_private *private)
{ … }
static struct snd_soc_tplg_vendor_array *audioreach_get_cont_array(
struct snd_soc_tplg_private *private)
{ … }
static struct snd_soc_tplg_vendor_array *audioreach_get_module_array(
struct snd_soc_tplg_private *private)
{ … }
static struct audioreach_sub_graph *audioreach_parse_sg_tokens(struct q6apm *apm,
struct snd_soc_tplg_private *private)
{ … }
static struct audioreach_container *audioreach_parse_cont_tokens(struct q6apm *apm,
struct audioreach_sub_graph *sg,
struct snd_soc_tplg_private *private)
{ … }
static struct audioreach_module *audioreach_parse_common_tokens(struct q6apm *apm,
struct audioreach_container *cont,
struct snd_soc_tplg_private *private,
struct snd_soc_dapm_widget *w)
{ … }
static int audioreach_widget_load_module_common(struct snd_soc_component *component,
int index, struct snd_soc_dapm_widget *w,
struct snd_soc_tplg_dapm_widget *tplg_w)
{ … }
static int audioreach_widget_load_enc_dec_cnv(struct snd_soc_component *component,
int index, struct snd_soc_dapm_widget *w,
struct snd_soc_tplg_dapm_widget *tplg_w)
{ … }
static int audioreach_widget_log_module_load(struct audioreach_module *mod,
struct snd_soc_tplg_vendor_array *mod_array)
{ … }
static int audioreach_widget_dma_module_load(struct audioreach_module *mod,
struct snd_soc_tplg_vendor_array *mod_array)
{ … }
static int audioreach_widget_i2s_module_load(struct audioreach_module *mod,
struct snd_soc_tplg_vendor_array *mod_array)
{ … }
static int audioreach_widget_dp_module_load(struct audioreach_module *mod,
struct snd_soc_tplg_vendor_array *mod_array)
{ … }
static int audioreach_widget_load_buffer(struct snd_soc_component *component,
int index, struct snd_soc_dapm_widget *w,
struct snd_soc_tplg_dapm_widget *tplg_w)
{ … }
static int audioreach_widget_load_mixer(struct snd_soc_component *component,
int index, struct snd_soc_dapm_widget *w,
struct snd_soc_tplg_dapm_widget *tplg_w)
{ … }
static int audioreach_pga_event(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol, int event)
{ … }
static const struct snd_soc_tplg_widget_events audioreach_widget_ops[] = …;
static int audioreach_widget_load_pga(struct snd_soc_component *component,
int index, struct snd_soc_dapm_widget *w,
struct snd_soc_tplg_dapm_widget *tplg_w)
{ … }
static int audioreach_widget_ready(struct snd_soc_component *component,
int index, struct snd_soc_dapm_widget *w,
struct snd_soc_tplg_dapm_widget *tplg_w)
{ … }
static int audioreach_widget_unload(struct snd_soc_component *scomp,
struct snd_soc_dobj *dobj)
{ … }
static struct snd_ar_control *audioreach_find_widget(struct snd_soc_component *comp,
const char *name)
{ … }
static struct audioreach_module *audioreach_find_module(struct snd_soc_component *comp,
const char *name)
{ … }
static int audioreach_route_load(struct snd_soc_component *scomp, int index,
struct snd_soc_dapm_route *route)
{ … }
static int audioreach_route_unload(struct snd_soc_component *scomp,
struct snd_soc_dobj *dobj)
{ … }
static int audioreach_tplg_complete(struct snd_soc_component *component)
{ … }
static int audioreach_link_load(struct snd_soc_component *component, int index,
struct snd_soc_dai_link *link,
struct snd_soc_tplg_link_config *cfg)
{ … }
static void audioreach_connect_sub_graphs(struct q6apm *apm,
struct snd_ar_control *m1,
struct snd_ar_control *m2,
bool connect)
{ … }
static bool audioreach_is_vmixer_connected(struct q6apm *apm,
struct snd_ar_control *m1,
struct snd_ar_control *m2)
{ … }
static int audioreach_get_audio_mixer(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int audioreach_put_audio_mixer(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int audioreach_get_vol_ctrl_audio_mixer(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int audioreach_put_vol_ctrl_audio_mixer(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{ … }
static int audioreach_control_load_mix(struct snd_soc_component *scomp,
struct snd_ar_control *scontrol,
struct snd_kcontrol_new *kc,
struct snd_soc_tplg_ctl_hdr *hdr)
{ … }
static int audioreach_control_load(struct snd_soc_component *scomp, int index,
struct snd_kcontrol_new *kc,
struct snd_soc_tplg_ctl_hdr *hdr)
{ … }
static int audioreach_control_unload(struct snd_soc_component *scomp,
struct snd_soc_dobj *dobj)
{ … }
static const struct snd_soc_tplg_kcontrol_ops audioreach_io_ops[] = …;
static const struct snd_soc_tplg_ops audioreach_tplg_ops = …;
int audioreach_tplg_init(struct snd_soc_component *component)
{ … }
EXPORT_SYMBOL_GPL(…);