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

TOMOYO Linux Cross Reference
Linux/include/uapi/sound/asoc.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ 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.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/uapi/sound/asoc.h (Version linux-6.12-rc7) and /include/uapi/sound/asoc.h (Version linux-6.1.114)


** Warning: Cannot open xref database.

  1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux      1 
  2 /*                                                
  3  * uapi/sound/asoc.h -- ALSA SoC Firmware Cont    
  4  *                                                
  5  * Copyright (C) 2012 Texas Instruments Inc.      
  6  * Copyright (C) 2015 Intel Corporation.          
  7  *                                                
  8  * Simple file API to load FW that includes mi    
  9  * algorithms, equalisers, DAIs, widgets etc.     
 10 */                                                
 11                                                   
 12 #ifndef __LINUX_UAPI_SND_ASOC_H                   
 13 #define __LINUX_UAPI_SND_ASOC_H                   
 14                                                   
 15 #include <linux/types.h>                          
 16 #include <sound/asound.h>                         
 17                                                   
 18 /*                                                
 19  * Maximum number of channels topology kcontro    
 20  */                                               
 21 #define SND_SOC_TPLG_MAX_CHAN           8         
 22                                                   
 23 /*                                                
 24  * Maximum number of PCM formats capability       
 25  */                                               
 26 #define SND_SOC_TPLG_MAX_FORMATS        16        
 27                                                   
 28 /*                                                
 29  * Maximum number of PCM stream configs           
 30  */                                               
 31 #define SND_SOC_TPLG_STREAM_CONFIG_MAX  8         
 32                                                   
 33 /*                                                
 34  * Maximum number of physical link's hardware     
 35  */                                               
 36 #define SND_SOC_TPLG_HW_CONFIG_MAX      8         
 37                                                   
 38 /* individual kcontrol info types - can be mix    
 39 #define SND_SOC_TPLG_CTL_VOLSW          1         
 40 #define SND_SOC_TPLG_CTL_VOLSW_SX       2         
 41 #define SND_SOC_TPLG_CTL_VOLSW_XR_SX    3         
 42 #define SND_SOC_TPLG_CTL_ENUM           4         
 43 #define SND_SOC_TPLG_CTL_BYTES          5         
 44 #define SND_SOC_TPLG_CTL_ENUM_VALUE     6         
 45 #define SND_SOC_TPLG_CTL_RANGE          7         
 46 #define SND_SOC_TPLG_CTL_STROBE         8         
 47                                                   
 48                                                   
 49 /* individual widget kcontrol info types - can    
 50 #define SND_SOC_TPLG_DAPM_CTL_VOLSW               
 51 #define SND_SOC_TPLG_DAPM_CTL_ENUM_DOUBLE         
 52 #define SND_SOC_TPLG_DAPM_CTL_ENUM_VIRT           
 53 #define SND_SOC_TPLG_DAPM_CTL_ENUM_VALUE          
 54 #define SND_SOC_TPLG_DAPM_CTL_PIN                 
 55                                                   
 56 /* DAPM widget types - add new items to the en    
 57 #define SND_SOC_TPLG_DAPM_INPUT         0         
 58 #define SND_SOC_TPLG_DAPM_OUTPUT        1         
 59 #define SND_SOC_TPLG_DAPM_MUX           2         
 60 #define SND_SOC_TPLG_DAPM_MIXER         3         
 61 #define SND_SOC_TPLG_DAPM_PGA           4         
 62 #define SND_SOC_TPLG_DAPM_OUT_DRV       5         
 63 #define SND_SOC_TPLG_DAPM_ADC           6         
 64 #define SND_SOC_TPLG_DAPM_DAC           7         
 65 #define SND_SOC_TPLG_DAPM_SWITCH        8         
 66 #define SND_SOC_TPLG_DAPM_PRE           9         
 67 #define SND_SOC_TPLG_DAPM_POST          10        
 68 #define SND_SOC_TPLG_DAPM_AIF_IN        11        
 69 #define SND_SOC_TPLG_DAPM_AIF_OUT       12        
 70 #define SND_SOC_TPLG_DAPM_DAI_IN        13        
 71 #define SND_SOC_TPLG_DAPM_DAI_OUT       14        
 72 #define SND_SOC_TPLG_DAPM_DAI_LINK      15        
 73 #define SND_SOC_TPLG_DAPM_BUFFER        16        
 74 #define SND_SOC_TPLG_DAPM_SCHEDULER     17        
 75 #define SND_SOC_TPLG_DAPM_EFFECT        18        
 76 #define SND_SOC_TPLG_DAPM_SIGGEN        19        
 77 #define SND_SOC_TPLG_DAPM_SRC           20        
 78 #define SND_SOC_TPLG_DAPM_ASRC          21        
 79 #define SND_SOC_TPLG_DAPM_ENCODER       22        
 80 #define SND_SOC_TPLG_DAPM_DECODER       23        
 81 #define SND_SOC_TPLG_DAPM_LAST          SND_SO    
 82                                                   
 83 /* Header magic number and string sizes */        
 84 #define SND_SOC_TPLG_MAGIC              0x4153    
 85                                                   
 86 /* string sizes */                                
 87 #define SND_SOC_TPLG_NUM_TEXTS          16        
 88                                                   
 89 /* ABI version */                                 
 90 #define SND_SOC_TPLG_ABI_VERSION        0x5       
 91 #define SND_SOC_TPLG_ABI_VERSION_MIN    0x5       
 92                                                   
 93 /* Max size of TLV data */                        
 94 #define SND_SOC_TPLG_TLV_SIZE           32        
 95                                                   
 96 /*                                                
 97  * File and Block header data types.              
 98  * Add new generic and vendor types to end of     
 99  * Generic types are handled by the core whils    
100  * to the component drivers for handling.         
101  */                                               
102 #define SND_SOC_TPLG_TYPE_MIXER         1         
103 #define SND_SOC_TPLG_TYPE_BYTES         2         
104 #define SND_SOC_TPLG_TYPE_ENUM          3         
105 #define SND_SOC_TPLG_TYPE_DAPM_GRAPH    4         
106 #define SND_SOC_TPLG_TYPE_DAPM_WIDGET   5         
107 #define SND_SOC_TPLG_TYPE_DAI_LINK      6         
108 #define SND_SOC_TPLG_TYPE_PCM           7         
109 #define SND_SOC_TPLG_TYPE_MANIFEST      8         
110 #define SND_SOC_TPLG_TYPE_CODEC_LINK    9         
111 #define SND_SOC_TPLG_TYPE_BACKEND_LINK  10        
112 #define SND_SOC_TPLG_TYPE_PDATA         11        
113 #define SND_SOC_TPLG_TYPE_DAI           12        
114 #define SND_SOC_TPLG_TYPE_MAX           SND_SO    
115                                                   
116 /* vendor block IDs - please add new vendor ty    
117 #define SND_SOC_TPLG_TYPE_VENDOR_FW     1000      
118 #define SND_SOC_TPLG_TYPE_VENDOR_CONFIG 1001      
119 #define SND_SOC_TPLG_TYPE_VENDOR_COEFF  1002      
120 #define SND_SOC_TPLG_TYPEVENDOR_CODEC   1003      
121                                                   
122 #define SND_SOC_TPLG_STREAM_PLAYBACK    0         
123 #define SND_SOC_TPLG_STREAM_CAPTURE     1         
124                                                   
125 /* vendor tuple types */                          
126 #define SND_SOC_TPLG_TUPLE_TYPE_UUID    0         
127 #define SND_SOC_TPLG_TUPLE_TYPE_STRING  1         
128 #define SND_SOC_TPLG_TUPLE_TYPE_BOOL    2         
129 #define SND_SOC_TPLG_TUPLE_TYPE_BYTE    3         
130 #define SND_SOC_TPLG_TUPLE_TYPE_WORD    4         
131 #define SND_SOC_TPLG_TUPLE_TYPE_SHORT   5         
132                                                   
133 /* DAI flags */                                   
134 #define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_RATE    
135 #define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHAN    
136 #define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMP    
137                                                   
138 /* DAI clock gating */                            
139 #define SND_SOC_TPLG_DAI_CLK_GATE_UNDEFINED       
140 #define SND_SOC_TPLG_DAI_CLK_GATE_GATED 1         
141 #define SND_SOC_TPLG_DAI_CLK_GATE_CONT            
142                                                   
143 /* DAI mclk_direction */                          
144 #define SND_SOC_TPLG_MCLK_CO            0 /* f    
145 #define SND_SOC_TPLG_MCLK_CI            1 /* f    
146                                                   
147 /* DAI physical PCM data formats.                 
148  * Add new formats to the end of the list.        
149  */                                               
150 #define SND_SOC_DAI_FORMAT_I2S          1 /* I    
151 #define SND_SOC_DAI_FORMAT_RIGHT_J      2 /* R    
152 #define SND_SOC_DAI_FORMAT_LEFT_J       3 /* L    
153 #define SND_SOC_DAI_FORMAT_DSP_A        4 /* L    
154 #define SND_SOC_DAI_FORMAT_DSP_B        5 /* L    
155 #define SND_SOC_DAI_FORMAT_AC97         6 /* A    
156 #define SND_SOC_DAI_FORMAT_PDM          7 /* P    
157                                                   
158 /* left and right justified also known as MSB     
159 #define SND_SOC_DAI_FORMAT_MSB          SND_SO    
160 #define SND_SOC_DAI_FORMAT_LSB          SND_SO    
161                                                   
162 /* DAI link flags */                              
163 #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_RATE    
164 #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_CHAN    
165 #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_SAMP    
166 #define SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP      
167                                                   
168 /* DAI topology BCLK parameter                    
169  * For the backwards capability, by default co    
170  */                                               
171 #define SND_SOC_TPLG_BCLK_CP         0 /* code    
172 #define SND_SOC_TPLG_BCLK_CC         1 /* code    
173 /* keep previous definitions for compatibility    
174 #define SND_SOC_TPLG_BCLK_CM         SND_SOC_T    
175 #define SND_SOC_TPLG_BCLK_CS         SND_SOC_T    
176                                                   
177 /* DAI topology FSYNC parameter                   
178  * For the backwards capability, by default co    
179  */                                               
180 #define SND_SOC_TPLG_FSYNC_CP         0 /* cod    
181 #define SND_SOC_TPLG_FSYNC_CC         1 /* cod    
182 /* keep previous definitions for compatibility    
183 #define SND_SOC_TPLG_FSYNC_CM         SND_SOC_    
184 #define SND_SOC_TPLG_FSYNC_CS         SND_SOC_    
185                                                   
186 /*                                                
187  * Block Header.                                  
188  * This header precedes all object and object     
189  */                                               
190 struct snd_soc_tplg_hdr {                         
191         __le32 magic;           /* magic numbe    
192         __le32 abi;             /* ABI version    
193         __le32 version;         /* optional ve    
194         __le32 type;            /* SND_SOC_TPL    
195         __le32 size;            /* size of thi    
196         __le32 vendor_type;     /* optional ve    
197         __le32 payload_size;    /* data bytes,    
198         __le32 index;           /* identifier     
199         __le32 count;           /* number of e    
200 } __attribute__((packed));                        
201                                                   
202 /* vendor tuple for uuid */                       
203 struct snd_soc_tplg_vendor_uuid_elem {            
204         __le32 token;                             
205         char uuid[16];                            
206 } __attribute__((packed));                        
207                                                   
208 /* vendor tuple for a bool/byte/short/word val    
209 struct snd_soc_tplg_vendor_value_elem {           
210         __le32 token;                             
211         __le32 value;                             
212 } __attribute__((packed));                        
213                                                   
214 /* vendor tuple for string */                     
215 struct snd_soc_tplg_vendor_string_elem {          
216         __le32 token;                             
217         char string[SNDRV_CTL_ELEM_ID_NAME_MAX    
218 } __attribute__((packed));                        
219                                                   
220 struct snd_soc_tplg_vendor_array {                
221         __le32 size;    /* size in bytes of th    
222         __le32 type;    /* SND_SOC_TPLG_TUPLE_    
223         __le32 num_elems;       /* number of e    
224         union {                                   
225                 __DECLARE_FLEX_ARRAY(struct sn    
226                 __DECLARE_FLEX_ARRAY(struct sn    
227                 __DECLARE_FLEX_ARRAY(struct sn    
228         };                                        
229 } __attribute__((packed));                        
230                                                   
231 /*                                                
232  * Private data.                                  
233  * All topology objects may have private data     
234  * firmware. Core will ignore this data.          
235  */                                               
236 struct snd_soc_tplg_private {                     
237         __le32 size;    /* in bytes of private    
238         union {                                   
239                 __DECLARE_FLEX_ARRAY(char, dat    
240                 __DECLARE_FLEX_ARRAY(struct sn    
241         };                                        
242 } __attribute__((packed));                        
243                                                   
244 /*                                                
245  * Kcontrol TLV data.                             
246  */                                               
247 struct snd_soc_tplg_tlv_dbscale {                 
248         __le32 min;                               
249         __le32 step;                              
250         __le32 mute;                              
251 } __attribute__((packed));                        
252                                                   
253 struct snd_soc_tplg_ctl_tlv {                     
254         __le32 size;    /* in bytes of this st    
255         __le32 type;    /* SNDRV_CTL_TLVT_*, t    
256         union {                                   
257                 __le32 data[SND_SOC_TPLG_TLV_S    
258                 struct snd_soc_tplg_tlv_dbscal    
259         };                                        
260 } __attribute__((packed));                        
261                                                   
262 /*                                                
263  * Kcontrol channel data                          
264  */                                               
265 struct snd_soc_tplg_channel {                     
266         __le32 size;    /* in bytes of this st    
267         __le32 reg;                               
268         __le32 shift;                             
269         __le32 id;      /* ID maps to Left, Ri    
270 } __attribute__((packed));                        
271                                                   
272 /*                                                
273  * Genericl Operations IDs, for binding Kcontr    
274  * Kcontrol ops need get/put/info.                
275  * Bytes ext ops need get/put.                    
276  */                                               
277 struct snd_soc_tplg_io_ops {                      
278         __le32 get;                               
279         __le32 put;                               
280         __le32 info;                              
281 } __attribute__((packed));                        
282                                                   
283 /*                                                
284  * kcontrol header                                
285  */                                               
286 struct snd_soc_tplg_ctl_hdr {                     
287         __le32 size;    /* in bytes of this st    
288         __le32 type;                              
289         char name[SNDRV_CTL_ELEM_ID_NAME_MAXLE    
290         __le32 access;                            
291         struct snd_soc_tplg_io_ops ops;           
292         struct snd_soc_tplg_ctl_tlv tlv;          
293 } __attribute__((packed));                        
294                                                   
295 /*                                                
296  * Stream Capabilities                            
297  */                                               
298 struct snd_soc_tplg_stream_caps {                 
299         __le32 size;            /* in bytes of    
300         char name[SNDRV_CTL_ELEM_ID_NAME_MAXLE    
301         __le64 formats; /* supported formats S    
302         __le32 rates;           /* supported r    
303         __le32 rate_min;        /* min rate */    
304         __le32 rate_max;        /* max rate */    
305         __le32 channels_min;    /* min channel    
306         __le32 channels_max;    /* max channel    
307         __le32 periods_min;     /* min number     
308         __le32 periods_max;     /* max number     
309         __le32 period_size_min; /* min period     
310         __le32 period_size_max; /* max period     
311         __le32 buffer_size_min; /* min buffer     
312         __le32 buffer_size_max; /* max buffer     
313         __le32 sig_bits;        /* number of b    
314 } __attribute__((packed));                        
315                                                   
316 /*                                                
317  * FE or BE Stream configuration supported by     
318  */                                               
319 struct snd_soc_tplg_stream {                      
320         __le32 size;            /* in bytes of    
321         char name[SNDRV_CTL_ELEM_ID_NAME_MAXLE    
322         __le64 format;          /* SNDRV_PCM_F    
323         __le32 rate;            /* SNDRV_PCM_R    
324         __le32 period_bytes;    /* size of per    
325         __le32 buffer_bytes;    /* size of buf    
326         __le32 channels;        /* channels */    
327 } __attribute__((packed));                        
328                                                   
329                                                   
330 /*                                                
331  * Describes a physical link's runtime support    
332  * i.e. hardware audio formats.                   
333  */                                               
334 struct snd_soc_tplg_hw_config {                   
335         __le32 size;            /* in bytes of    
336         __le32 id;              /* unique ID -    
337         __le32 fmt;             /* SND_SOC_DAI    
338         __u8 clock_gated;       /* SND_SOC_TPL    
339         __u8 invert_bclk;       /* 1 for inver    
340         __u8 invert_fsync;      /* 1 for inver    
341         __u8 bclk_provider;     /* SND_SOC_TPL    
342         __u8 fsync_provider;    /* SND_SOC_TPL    
343         __u8 mclk_direction;    /* SND_SOC_TPL    
344         __le16 reserved;        /* for 32bit a    
345         __le32 mclk_rate;       /* MCLK or SYS    
346         __le32 bclk_rate;       /* BCLK freqen    
347         __le32 fsync_rate;      /* frame clock    
348         __le32 tdm_slots;       /* number of T    
349         __le32 tdm_slot_width;  /* width in bi    
350         __le32 tx_slots;        /* bit mask fo    
351         __le32 rx_slots;        /* bit mask fo    
352         __le32 tx_channels;     /* number of T    
353         __le32 tx_chanmap[SND_SOC_TPLG_MAX_CHA    
354         __le32 rx_channels;     /* number of R    
355         __le32 rx_chanmap[SND_SOC_TPLG_MAX_CHA    
356 } __attribute__((packed));                        
357                                                   
358 /*                                                
359  * Manifest. List totals for each payload type    
360  * be passed to the component driver before an    
361  * global component resource allocations.         
362  *                                                
363  * File block representation for manifest :-      
364  * +-----------------------------------+----+     
365  * | struct snd_soc_tplg_hdr           |  1 |     
366  * +-----------------------------------+----+     
367  * | struct snd_soc_tplg_manifest      |  1 |     
368  * +-----------------------------------+----+     
369  */                                               
370 struct snd_soc_tplg_manifest {                    
371         __le32 size;            /* in bytes of    
372         __le32 control_elems;   /* number of c    
373         __le32 widget_elems;    /* number of w    
374         __le32 graph_elems;     /* number of g    
375         __le32 pcm_elems;       /* number of P    
376         __le32 dai_link_elems;  /* number of D    
377         __le32 dai_elems;       /* number of p    
378         __le32 reserved[20];    /* reserved fo    
379         struct snd_soc_tplg_private priv;         
380 } __attribute__((packed));                        
381                                                   
382 /*                                                
383  * Mixer kcontrol.                                
384  *                                                
385  * File block representation for mixer kcontro    
386  * +-----------------------------------+----+     
387  * | struct snd_soc_tplg_hdr           |  1 |     
388  * +-----------------------------------+----+     
389  * | struct snd_soc_tplg_mixer_control |  N |     
390  * +-----------------------------------+----+     
391  */                                               
392 struct snd_soc_tplg_mixer_control {               
393         struct snd_soc_tplg_ctl_hdr hdr;          
394         __le32 size;    /* in bytes of this st    
395         __le32 min;                               
396         __le32 max;                               
397         __le32 platform_max;                      
398         __le32 invert;                            
399         __le32 num_channels;                      
400         struct snd_soc_tplg_channel channel[SN    
401         struct snd_soc_tplg_private priv;         
402 } __attribute__((packed));                        
403                                                   
404 /*                                                
405  * Enumerated kcontrol                            
406  *                                                
407  * File block representation for enum kcontrol    
408  * +-----------------------------------+----+     
409  * | struct snd_soc_tplg_hdr           |  1 |     
410  * +-----------------------------------+----+     
411  * | struct snd_soc_tplg_enum_control  |  N |     
412  * +-----------------------------------+----+     
413  */                                               
414 struct snd_soc_tplg_enum_control {                
415         struct snd_soc_tplg_ctl_hdr hdr;          
416         __le32 size;    /* in bytes of this st    
417         __le32 num_channels;                      
418         struct snd_soc_tplg_channel channel[SN    
419         __le32 items;                             
420         __le32 mask;                              
421         __le32 count;                             
422         char texts[SND_SOC_TPLG_NUM_TEXTS][SND    
423         __le32 values[SND_SOC_TPLG_NUM_TEXTS *    
424         struct snd_soc_tplg_private priv;         
425 } __attribute__((packed));                        
426                                                   
427 /*                                                
428  * Bytes kcontrol                                 
429  *                                                
430  * File block representation for bytes kcontro    
431  * +-----------------------------------+----+     
432  * | struct snd_soc_tplg_hdr           |  1 |     
433  * +-----------------------------------+----+     
434  * | struct snd_soc_tplg_bytes_control |  N |     
435  * +-----------------------------------+----+     
436  */                                               
437 struct snd_soc_tplg_bytes_control {               
438         struct snd_soc_tplg_ctl_hdr hdr;          
439         __le32 size;    /* in bytes of this st    
440         __le32 max;                               
441         __le32 mask;                              
442         __le32 base;                              
443         __le32 num_regs;                          
444         struct snd_soc_tplg_io_ops ext_ops;       
445         struct snd_soc_tplg_private priv;         
446 } __attribute__((packed));                        
447                                                   
448 /*                                                
449  * DAPM Graph Element                             
450  *                                                
451  * File block representation for DAPM graph el    
452  * +-------------------------------------+----    
453  * | struct snd_soc_tplg_hdr             |  1     
454  * +-------------------------------------+----    
455  * | struct snd_soc_tplg_dapm_graph_elem |  N     
456  * +-------------------------------------+----    
457  */                                               
458 struct snd_soc_tplg_dapm_graph_elem {             
459         char sink[SNDRV_CTL_ELEM_ID_NAME_MAXLE    
460         char control[SNDRV_CTL_ELEM_ID_NAME_MA    
461         char source[SNDRV_CTL_ELEM_ID_NAME_MAX    
462 } __attribute__((packed));                        
463                                                   
464 /*                                                
465  * DAPM Widget.                                   
466  *                                                
467  * File block representation for DAPM widget :    
468  * +-------------------------------------+----    
469  * | struct snd_soc_tplg_hdr             |  1     
470  * +-------------------------------------+----    
471  * | struct snd_soc_tplg_dapm_widget     |  N     
472  * +-------------------------------------+----    
473  * |   struct snd_soc_tplg_enum_control  | 0|1    
474  * |   struct snd_soc_tplg_mixer_control | 0|N    
475  * +-------------------------------------+----    
476  *                                                
477  * Optional enum or mixer control can be appen    
478  * in the block.                                  
479  */                                               
480 struct snd_soc_tplg_dapm_widget {                 
481         __le32 size;            /* in bytes of    
482         __le32 id;              /* SND_SOC_DAP    
483         char name[SNDRV_CTL_ELEM_ID_NAME_MAXLE    
484         char sname[SNDRV_CTL_ELEM_ID_NAME_MAXL    
485                                                   
486         __le32 reg;             /* negative re    
487         __le32 shift;           /* bits to shi    
488         __le32 mask;            /* non-shifted    
489         __le32 subseq;          /* sort within    
490         __le32 invert;          /* invert the     
491         __le32 ignore_suspend;  /* kept enable    
492         __le16 event_flags;                       
493         __le16 event_type;                        
494         __le32 num_kcontrols;                     
495         struct snd_soc_tplg_private priv;         
496         /*                                        
497          * kcontrols that relate to this widge    
498          * follow here after widget private da    
499          */                                       
500 } __attribute__((packed));                        
501                                                   
502                                                   
503 /*                                                
504  * Describes SW/FW specific features of PCM (F    
505  *                                                
506  * File block representation for PCM :-           
507  * +-----------------------------------+-----+    
508  * | struct snd_soc_tplg_hdr           |  1  |    
509  * +-----------------------------------+-----+    
510  * | struct snd_soc_tplg_pcm           |  N  |    
511  * +-----------------------------------+-----+    
512  */                                               
513 struct snd_soc_tplg_pcm {                         
514         __le32 size;            /* in bytes of    
515         char pcm_name[SNDRV_CTL_ELEM_ID_NAME_M    
516         char dai_name[SNDRV_CTL_ELEM_ID_NAME_M    
517         __le32 pcm_id;          /* unique ID -    
518         __le32 dai_id;          /* unique ID -    
519         __le32 playback;        /* supports pl    
520         __le32 capture;         /* supports ca    
521         __le32 compress;        /* 1 = compres    
522         struct snd_soc_tplg_stream stream[SND_    
523         __le32 num_streams;     /* number of s    
524         struct snd_soc_tplg_stream_caps caps[2    
525         __le32 flag_mask;       /* bitmask of     
526         __le32 flags;           /* SND_SOC_TPL    
527         struct snd_soc_tplg_private priv;         
528 } __attribute__((packed));                        
529                                                   
530                                                   
531 /*                                                
532  * Describes the physical link runtime support    
533  *                                                
534  * File block representation for physical link    
535  * +-----------------------------------+-----+    
536  * | struct snd_soc_tplg_hdr           |  1  |    
537  * +-----------------------------------+-----+    
538  * | struct snd_soc_tplg_link_config   |  N  |    
539  * +-----------------------------------+-----+    
540  */                                               
541 struct snd_soc_tplg_link_config {                 
542         __le32 size;            /* in bytes of    
543         __le32 id;              /* unique ID -    
544         char name[SNDRV_CTL_ELEM_ID_NAME_MAXLE    
545         char stream_name[SNDRV_CTL_ELEM_ID_NAM    
546         struct snd_soc_tplg_stream stream[SND_    
547         __le32 num_streams;     /* number of s    
548         struct snd_soc_tplg_hw_config hw_confi    
549         __le32 num_hw_configs;         /* numb    
550         __le32 default_hw_config_id;   /* defa    
551         __le32 flag_mask;       /* bitmask of     
552         __le32 flags;           /* SND_SOC_TPL    
553         struct snd_soc_tplg_private priv;         
554 } __attribute__((packed));                        
555                                                   
556 /*                                                
557  * Describes SW/FW specific features of physic    
558  * It can be used to configure backend DAIs fo    
559  *                                                
560  * File block representation for physical DAI     
561  * +-----------------------------------+-----+    
562  * | struct snd_soc_tplg_hdr           |  1  |    
563  * +-----------------------------------+-----+    
564  * | struct snd_soc_tplg_dai           |  N  |    
565  * +-----------------------------------+-----+    
566  */                                               
567 struct snd_soc_tplg_dai {                         
568         __le32 size;            /* in bytes of    
569         char dai_name[SNDRV_CTL_ELEM_ID_NAME_M    
570         __le32 dai_id;          /* unique ID -    
571         __le32 playback;        /* supports pl    
572         __le32 capture;         /* supports ca    
573         struct snd_soc_tplg_stream_caps caps[2    
574         __le32 flag_mask;       /* bitmask of     
575         __le32 flags;           /* SND_SOC_TPL    
576         struct snd_soc_tplg_private priv;         
577 } __attribute__((packed));                        
578                                                   
579 #endif                                            
580                                                   

~ [ 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