~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/sound/soc/intel/avs/topology.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-only */
  2 /*
  3  * Copyright(c) 2021 Intel Corporation
  4  *
  5  * Authors: Cezary Rojewski <cezary.rojewski@intel.com>
  6  *          Amadeusz Slawinski <amadeuszx.slawinski@linux.intel.com>
  7  */
  8 
  9 #ifndef __SOUND_SOC_INTEL_AVS_TPLG_H
 10 #define __SOUND_SOC_INTEL_AVS_TPLG_H
 11 
 12 #include <linux/list.h>
 13 #include "messages.h"
 14 
 15 #define INVALID_OBJECT_ID       UINT_MAX
 16 
 17 struct snd_soc_component;
 18 
 19 struct avs_tplg {
 20         char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
 21         u32 version;
 22         struct snd_soc_component *comp;
 23 
 24         struct avs_tplg_library *libs;
 25         u32 num_libs;
 26         struct avs_audio_format *fmts;
 27         u32 num_fmts;
 28         struct avs_tplg_modcfg_base *modcfgs_base;
 29         u32 num_modcfgs_base;
 30         struct avs_tplg_modcfg_ext *modcfgs_ext;
 31         u32 num_modcfgs_ext;
 32         struct avs_tplg_pplcfg *pplcfgs;
 33         u32 num_pplcfgs;
 34         struct avs_tplg_binding *bindings;
 35         u32 num_bindings;
 36         u32 num_condpath_tmpls;
 37         struct avs_tplg_init_config *init_configs;
 38         u32 num_init_configs;
 39 
 40         struct list_head path_tmpl_list;
 41 };
 42 
 43 struct avs_tplg_library {
 44         char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
 45 };
 46 
 47 /* Matches header of struct avs_mod_cfg_base. */
 48 struct avs_tplg_modcfg_base {
 49         u32 cpc;
 50         u32 ibs;
 51         u32 obs;
 52         u32 is_pages;
 53 };
 54 
 55 struct avs_tplg_pin_format {
 56         u32 pin_index;
 57         u32 iobs;
 58         struct avs_audio_format *fmt;
 59 };
 60 
 61 struct avs_tplg_modcfg_ext {
 62         guid_t type;
 63 
 64         union {
 65                 struct {
 66                         u16 num_input_pins;
 67                         u16 num_output_pins;
 68                         struct avs_tplg_pin_format *pin_fmts;
 69                 } generic;
 70                 struct {
 71                         struct avs_audio_format *out_fmt;
 72                         struct avs_audio_format *blob_fmt; /* optional override */
 73                         u32 feature_mask;
 74                         union avs_virtual_index vindex;
 75                         u32 dma_type;
 76                         u32 dma_buffer_size;
 77                         u32 config_length;
 78                         /* config_data part of priv data */
 79                 } copier;
 80                 struct {
 81                         u32 out_channel_config;
 82                         u32 coefficients_select;
 83                         s32 coefficients[AVS_CHANNELS_MAX];
 84                         u32 channel_map;
 85                 } updown_mix;
 86                 struct {
 87                         u32 out_freq;
 88                 } src;
 89                 struct {
 90                         u32 out_freq;
 91                         u8 mode;
 92                         u8 disable_jitter_buffer;
 93                 } asrc;
 94                 struct {
 95                         u32 cpc_lp_mode;
 96                 } wov;
 97                 struct {
 98                         struct avs_audio_format *ref_fmt;
 99                         struct avs_audio_format *out_fmt;
100                         u32 cpc_lp_mode;
101                 } aec;
102                 struct {
103                         struct avs_audio_format *ref_fmt;
104                         struct avs_audio_format *out_fmt;
105                 } mux;
106                 struct {
107                         struct avs_audio_format *out_fmt;
108                 } micsel;
109         };
110 };
111 
112 /* Specifies path behaviour during PCM ->trigger(START) command. */
113 enum avs_tplg_trigger {
114         AVS_TPLG_TRIGGER_AUTO = 0,
115 };
116 
117 struct avs_tplg_pplcfg {
118         u16 req_size;
119         u8 priority;
120         bool lp;
121         u16 attributes;
122         enum avs_tplg_trigger trigger;
123 };
124 
125 struct avs_tplg_binding {
126         char target_tplg_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
127         u32 target_path_tmpl_id;
128         u32 target_ppl_id;
129         u32 target_mod_id;
130         u8 target_mod_pin;
131         u32 mod_id;
132         u8 mod_pin;
133         u8 is_sink;
134 };
135 
136 struct avs_tplg_path_template_id {
137         u32 id;
138         char tplg_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
139 };
140 
141 struct avs_tplg_path_template {
142         u32 id;
143 
144         struct snd_soc_dapm_widget *w;
145 
146         struct list_head path_list;
147 
148         struct avs_tplg *owner;
149         /* Driver path templates management. */
150         struct list_head node;
151 };
152 
153 struct avs_tplg_init_config {
154         u32 id;
155 
156         u8 param;
157         size_t length;
158         void *data;
159 };
160 
161 struct avs_tplg_path {
162         u32 id;
163 
164         /* Path format requirements. */
165         struct avs_audio_format *fe_fmt;
166         struct avs_audio_format *be_fmt;
167 
168         struct list_head ppl_list;
169 
170         struct avs_tplg_path_template *owner;
171         /* Path template path-variants management. */
172         struct list_head node;
173 };
174 
175 struct avs_tplg_pipeline {
176         u32 id;
177 
178         struct avs_tplg_pplcfg *cfg;
179         struct avs_tplg_binding **bindings;
180         u32 num_bindings;
181         struct list_head mod_list;
182 
183         struct avs_tplg_path *owner;
184         /* Path pipelines management. */
185         struct list_head node;
186 };
187 
188 struct avs_tplg_module {
189         u32 id;
190 
191         struct avs_tplg_modcfg_base *cfg_base;
192         struct avs_audio_format *in_fmt;
193         u8 core_id;
194         u8 domain;
195         struct avs_tplg_modcfg_ext *cfg_ext;
196         u32 ctl_id;
197         u32 num_config_ids;
198         u32 *config_ids;
199 
200         struct avs_tplg_pipeline *owner;
201         /* Pipeline modules management. */
202         struct list_head node;
203 };
204 
205 struct avs_tplg *avs_tplg_new(struct snd_soc_component *comp);
206 
207 int avs_load_topology(struct snd_soc_component *comp, const char *filename);
208 int avs_remove_topology(struct snd_soc_component *comp);
209 
210 #endif
211 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php