1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ***   To edit the content of this header, modify the corresponding
11  ***   source file (e.g. under external/kernel-headers/original/) then
12  ***   run bionic/libc/kernel/tools/update_all.py
13  ***
14  ***   Any manual change here will be lost the next time this script will
15  ***   be run. You've been warned!
16  ***
17  ****************************************************************************
18  ****************************************************************************/
19 #ifndef _MSM_AUDIO_CALIBRATION_H
20 #define _MSM_AUDIO_CALIBRATION_H
21 #include <linux/types.h>
22 #include <linux/ioctl.h>
23 #define CAL_IOCTL_MAGIC 'a'
24 #define AUDIO_ALLOCATE_CALIBRATION _IOWR(CAL_IOCTL_MAGIC, 200, void *)
25 #define AUDIO_DEALLOCATE_CALIBRATION _IOWR(CAL_IOCTL_MAGIC, 201, void *)
26 #define AUDIO_PREPARE_CALIBRATION _IOWR(CAL_IOCTL_MAGIC, 202, void *)
27 #define AUDIO_SET_CALIBRATION _IOWR(CAL_IOCTL_MAGIC, 203, void *)
28 #define AUDIO_GET_CALIBRATION _IOWR(CAL_IOCTL_MAGIC, 204, void *)
29 #define AUDIO_POST_CALIBRATION _IOWR(CAL_IOCTL_MAGIC, 205, void *)
30 #define AUDIO_GET_RTAC_ADM_INFO _IOR(CAL_IOCTL_MAGIC, 207, void *)
31 #define AUDIO_GET_RTAC_VOICE_INFO _IOR(CAL_IOCTL_MAGIC, 208, void *)
32 #define AUDIO_GET_RTAC_ADM_CAL _IOWR(CAL_IOCTL_MAGIC, 209, void *)
33 #define AUDIO_SET_RTAC_ADM_CAL _IOWR(CAL_IOCTL_MAGIC, 210, void *)
34 #define AUDIO_GET_RTAC_ASM_CAL _IOWR(CAL_IOCTL_MAGIC, 211, void *)
35 #define AUDIO_SET_RTAC_ASM_CAL _IOWR(CAL_IOCTL_MAGIC, 212, void *)
36 #define AUDIO_GET_RTAC_CVS_CAL _IOWR(CAL_IOCTL_MAGIC, 213, void *)
37 #define AUDIO_SET_RTAC_CVS_CAL _IOWR(CAL_IOCTL_MAGIC, 214, void *)
38 #define AUDIO_GET_RTAC_CVP_CAL _IOWR(CAL_IOCTL_MAGIC, 215, void *)
39 #define AUDIO_SET_RTAC_CVP_CAL _IOWR(CAL_IOCTL_MAGIC, 216, void *)
40 #define AUDIO_GET_RTAC_AFE_CAL _IOWR(CAL_IOCTL_MAGIC, 217, void *)
41 #define AUDIO_SET_RTAC_AFE_CAL _IOWR(CAL_IOCTL_MAGIC, 218, void *)
42 enum {
43   CVP_VOC_RX_TOPOLOGY_CAL_TYPE = 0,
44   CVP_VOC_TX_TOPOLOGY_CAL_TYPE,
45   CVP_VOCPROC_STATIC_CAL_TYPE,
46   CVP_VOCPROC_DYNAMIC_CAL_TYPE,
47   CVS_VOCSTRM_STATIC_CAL_TYPE,
48   CVP_VOCDEV_CFG_CAL_TYPE,
49   CVP_VOCPROC_STATIC_COL_CAL_TYPE,
50   CVP_VOCPROC_DYNAMIC_COL_CAL_TYPE,
51   CVS_VOCSTRM_STATIC_COL_CAL_TYPE,
52   ADM_TOPOLOGY_CAL_TYPE,
53   ADM_CUST_TOPOLOGY_CAL_TYPE,
54   ADM_AUDPROC_CAL_TYPE,
55   ADM_AUDVOL_CAL_TYPE,
56   ASM_TOPOLOGY_CAL_TYPE,
57   ASM_CUST_TOPOLOGY_CAL_TYPE,
58   ASM_AUDSTRM_CAL_TYPE,
59   AFE_COMMON_RX_CAL_TYPE,
60   AFE_COMMON_TX_CAL_TYPE,
61   AFE_ANC_CAL_TYPE,
62   AFE_AANC_CAL_TYPE,
63   AFE_FB_SPKR_PROT_CAL_TYPE,
64   AFE_HW_DELAY_CAL_TYPE,
65   AFE_SIDETONE_CAL_TYPE,
66   AFE_TOPOLOGY_CAL_TYPE,
67   AFE_CUST_TOPOLOGY_CAL_TYPE,
68   LSM_CUST_TOPOLOGY_CAL_TYPE,
69   LSM_TOPOLOGY_CAL_TYPE,
70   LSM_CAL_TYPE,
71   ADM_RTAC_INFO_CAL_TYPE,
72   VOICE_RTAC_INFO_CAL_TYPE,
73   ADM_RTAC_APR_CAL_TYPE,
74   ASM_RTAC_APR_CAL_TYPE,
75   VOICE_RTAC_APR_CAL_TYPE,
76   MAD_CAL_TYPE,
77   ULP_AFE_CAL_TYPE,
78   ULP_LSM_CAL_TYPE,
79   DTS_EAGLE_CAL_TYPE,
80   AUDIO_CORE_METAINFO_CAL_TYPE,
81   SRS_TRUMEDIA_CAL_TYPE,
82   CORE_CUSTOM_TOPOLOGIES_CAL_TYPE,
83   ADM_RTAC_AUDVOL_CAL_TYPE,
84   ULP_LSM_TOPOLOGY_ID_CAL_TYPE,
85   AFE_FB_SPKR_PROT_TH_VI_CAL_TYPE,
86   AFE_FB_SPKR_PROT_EX_VI_CAL_TYPE,
87   AFE_SIDETONE_IIR_CAL_TYPE,
88   AFE_LSM_TOPOLOGY_CAL_TYPE,
89   AFE_LSM_TX_CAL_TYPE,
90   ADM_LSM_TOPOLOGY_CAL_TYPE,
91   ADM_LSM_AUDPROC_CAL_TYPE,
92   MAX_CAL_TYPES,
93 };
94 #define AFE_FB_SPKR_PROT_TH_VI_CAL_TYPE AFE_FB_SPKR_PROT_TH_VI_CAL_TYPE
95 #define AFE_FB_SPKR_PROT_EX_VI_CAL_TYPE AFE_FB_SPKR_PROT_EX_VI_CAL_TYPE
96 #define AFE_SIDETONE_IIR_CAL_TYPE AFE_SIDETONE_IIR_CAL_TYPE
97 #define AFE_LSM_TOPOLOGY_CAL_TYPE AFE_LSM_TOPOLOGY_CAL_TYPE
98 #define AFE_LSM_TX_CAL_TYPE AFE_LSM_TX_CAL_TYPE
99 #define ADM_LSM_TOPOLOGY_CAL_TYPE ADM_LSM_TOPOLOGY_CAL_TYPE
100 #define ADM_LSM_AUDPROC_CAL_TYPE ADM_LSM_AUDPROC_CAL_TYPE
101 #define LSM_CAL_TYPES
102 #define TOPOLOGY_SPECIFIC_CHANNEL_INFO
103 #define MSM_SPKR_PROT_SPV3
104 enum {
105   VERSION_0_0,
106 };
107 enum {
108   PER_VOCODER_CAL_BIT_MASK = 0x10000,
109 };
110 #define MAX_IOCTL_CMD_SIZE 512
111 struct audio_cal_header {
112   int32_t data_size;
113   int32_t version;
114   int32_t cal_type;
115   int32_t cal_type_size;
116 };
117 struct audio_cal_type_header {
118   int32_t version;
119   int32_t buffer_number;
120 };
121 struct audio_cal_data {
122   int32_t cal_size;
123   int32_t mem_handle;
124 };
125 struct audio_cal_type_alloc {
126   struct audio_cal_type_header cal_hdr;
127   struct audio_cal_data cal_data;
128 };
129 struct audio_cal_alloc {
130   struct audio_cal_header hdr;
131   struct audio_cal_type_alloc cal_type;
132 };
133 struct audio_cal_type_dealloc {
134   struct audio_cal_type_header cal_hdr;
135   struct audio_cal_data cal_data;
136 };
137 struct audio_cal_dealloc {
138   struct audio_cal_header hdr;
139   struct audio_cal_type_dealloc cal_type;
140 };
141 struct audio_cal_type_prepare {
142   struct audio_cal_type_header cal_hdr;
143   struct audio_cal_data cal_data;
144 };
145 struct audio_cal_prepare {
146   struct audio_cal_header hdr;
147   struct audio_cal_type_prepare cal_type;
148 };
149 struct audio_cal_type_post {
150   struct audio_cal_type_header cal_hdr;
151   struct audio_cal_data cal_data;
152 };
153 struct audio_cal_post {
154   struct audio_cal_header hdr;
155   struct audio_cal_type_post cal_type;
156 };
157 struct audio_cal_info_metainfo {
158   uint32_t nKey;
159 };
160 enum {
161   RX_DEVICE,
162   TX_DEVICE,
163   MAX_PATH_TYPE
164 };
165 struct audio_cal_info_adm_top {
166   int32_t topology;
167   int32_t acdb_id;
168   int32_t path;
169   int32_t app_type;
170   int32_t sample_rate;
171 };
172 struct audio_cal_info_audproc {
173   int32_t acdb_id;
174   int32_t path;
175   int32_t app_type;
176   int32_t sample_rate;
177 };
178 struct audio_cal_info_audvol {
179   int32_t acdb_id;
180   int32_t path;
181   int32_t app_type;
182   int32_t vol_index;
183 };
184 struct audio_cal_info_afe {
185   int32_t acdb_id;
186   int32_t path;
187   int32_t sample_rate;
188 };
189 struct audio_cal_info_afe_top {
190   int32_t topology;
191   int32_t acdb_id;
192   int32_t path;
193   int32_t sample_rate;
194 };
195 struct audio_cal_info_asm_top {
196   int32_t topology;
197   int32_t app_type;
198 };
199 struct audio_cal_info_audstrm {
200   int32_t app_type;
201 };
202 struct audio_cal_info_aanc {
203   int32_t acdb_id;
204 };
205 #define MAX_HW_DELAY_ENTRIES 25
206 struct audio_cal_hw_delay_entry {
207   uint32_t sample_rate;
208   uint32_t delay_usec;
209 };
210 struct audio_cal_hw_delay_data {
211   uint32_t num_entries;
212   struct audio_cal_hw_delay_entry entry[MAX_HW_DELAY_ENTRIES];
213 };
214 struct audio_cal_info_hw_delay {
215   int32_t acdb_id;
216   int32_t path;
217   int32_t property_type;
218   struct audio_cal_hw_delay_data data;
219 };
220 enum msm_spkr_prot_states {
221   MSM_SPKR_PROT_CALIBRATED,
222   MSM_SPKR_PROT_CALIBRATION_IN_PROGRESS,
223   MSM_SPKR_PROT_DISABLED,
224   MSM_SPKR_PROT_NOT_CALIBRATED,
225   MSM_SPKR_PROT_PRE_CALIBRATED,
226   MSM_SPKR_PROT_IN_FTM_MODE
227 };
228 #define MSM_SPKR_PROT_IN_FTM_MODE MSM_SPKR_PROT_IN_FTM_MODE
229 enum msm_spkr_count {
230   SP_V2_SPKR_1,
231   SP_V2_SPKR_2,
232   SP_V2_NUM_MAX_SPKRS
233 };
234 struct audio_cal_info_spk_prot_cfg {
235   int32_t r0[SP_V2_NUM_MAX_SPKRS];
236   int32_t t0[SP_V2_NUM_MAX_SPKRS];
237   uint32_t quick_calib_flag;
238   uint32_t mode;
239 #ifdef MSM_SPKR_PROT_SPV3
240   uint32_t sp_version;
241   int32_t limiter_th[SP_V2_NUM_MAX_SPKRS];
242 #endif
243 };
244 struct audio_cal_info_sp_th_vi_ftm_cfg {
245   uint32_t wait_time[SP_V2_NUM_MAX_SPKRS];
246   uint32_t ftm_time[SP_V2_NUM_MAX_SPKRS];
247   uint32_t mode;
248 };
249 struct audio_cal_info_sp_ex_vi_ftm_cfg {
250   uint32_t wait_time[SP_V2_NUM_MAX_SPKRS];
251   uint32_t ftm_time[SP_V2_NUM_MAX_SPKRS];
252   uint32_t mode;
253 };
254 struct audio_cal_info_sp_ex_vi_param {
255   int32_t freq_q20[SP_V2_NUM_MAX_SPKRS];
256   int32_t resis_q24[SP_V2_NUM_MAX_SPKRS];
257   int32_t qmct_q24[SP_V2_NUM_MAX_SPKRS];
258   int32_t status[SP_V2_NUM_MAX_SPKRS];
259 };
260 struct audio_cal_info_sp_th_vi_param {
261   int32_t r_dc_q24[SP_V2_NUM_MAX_SPKRS];
262   int32_t temp_q22[SP_V2_NUM_MAX_SPKRS];
263   int32_t status[SP_V2_NUM_MAX_SPKRS];
264 };
265 struct audio_cal_info_msm_spk_prot_status {
266   int32_t r0[SP_V2_NUM_MAX_SPKRS];
267   int32_t status;
268 };
269 struct audio_cal_info_sidetone {
270   uint16_t enable;
271   uint16_t gain;
272   int32_t tx_acdb_id;
273   int32_t rx_acdb_id;
274   int32_t mid;
275   int32_t pid;
276 };
277 #define MAX_SIDETONE_IIR_DATA_SIZE 224
278 #define MAX_NO_IIR_FILTER_STAGE 10
279 struct audio_cal_info_sidetone_iir {
280   uint16_t iir_enable;
281   uint16_t num_biquad_stages;
282   uint16_t pregain;
283   int32_t tx_acdb_id;
284   int32_t rx_acdb_id;
285   int32_t mid;
286   int32_t pid;
287   uint8_t iir_config[MAX_SIDETONE_IIR_DATA_SIZE];
288 };
289 struct audio_cal_info_lsm_top {
290   int32_t topology;
291   int32_t acdb_id;
292   int32_t app_type;
293 };
294 struct audio_cal_info_lsm {
295   int32_t acdb_id;
296   int32_t path;
297   int32_t app_type;
298 };
299 #define VSS_NUM_CHANNELS_MAX 8
300 struct audio_cal_info_voc_top {
301   int32_t topology;
302   int32_t acdb_id;
303 #ifdef TOPOLOGY_SPECIFIC_CHANNEL_INFO
304   uint32_t num_channels;
305   uint8_t channel_mapping[VSS_NUM_CHANNELS_MAX];
306 #endif
307 };
308 struct audio_cal_info_vocproc {
309   int32_t tx_acdb_id;
310   int32_t rx_acdb_id;
311   int32_t tx_sample_rate;
312   int32_t rx_sample_rate;
313 };
314 enum {
315   DEFAULT_FEATURE_SET,
316   VOL_BOOST_FEATURE_SET,
317 };
318 struct audio_cal_info_vocvol {
319   int32_t tx_acdb_id;
320   int32_t rx_acdb_id;
321   int32_t feature_set;
322 };
323 struct audio_cal_info_vocdev_cfg {
324   int32_t tx_acdb_id;
325   int32_t rx_acdb_id;
326 };
327 #define MAX_VOICE_COLUMNS 20
328 union audio_cal_col_na {
329   uint8_t val8;
330   uint16_t val16;
331   uint32_t val32;
332   uint64_t val64;
333 } __attribute__((packed));
334 struct audio_cal_col {
335   uint32_t id;
336   uint32_t type;
337   union audio_cal_col_na na_value;
338 } __attribute__((packed));
339 struct audio_cal_col_data {
340   uint32_t num_columns;
341   struct audio_cal_col column[MAX_VOICE_COLUMNS];
342 } __attribute__((packed));
343 struct audio_cal_info_voc_col {
344   int32_t table_id;
345   int32_t tx_acdb_id;
346   int32_t rx_acdb_id;
347   struct audio_cal_col_data data;
348 };
349 struct audio_cal_type_basic {
350   struct audio_cal_type_header cal_hdr;
351   struct audio_cal_data cal_data;
352 };
353 struct audio_cal_basic {
354   struct audio_cal_header hdr;
355   struct audio_cal_type_basic cal_type;
356 };
357 struct audio_cal_type_adm_top {
358   struct audio_cal_type_header cal_hdr;
359   struct audio_cal_data cal_data;
360   struct audio_cal_info_adm_top cal_info;
361 };
362 struct audio_cal_adm_top {
363   struct audio_cal_header hdr;
364   struct audio_cal_type_adm_top cal_type;
365 };
366 struct audio_cal_type_metainfo {
367   struct audio_cal_type_header cal_hdr;
368   struct audio_cal_data cal_data;
369   struct audio_cal_info_metainfo cal_info;
370 };
371 struct audio_core_metainfo {
372   struct audio_cal_header hdr;
373   struct audio_cal_type_metainfo cal_type;
374 };
375 struct audio_cal_type_audproc {
376   struct audio_cal_type_header cal_hdr;
377   struct audio_cal_data cal_data;
378   struct audio_cal_info_audproc cal_info;
379 };
380 struct audio_cal_audproc {
381   struct audio_cal_header hdr;
382   struct audio_cal_type_audproc cal_type;
383 };
384 struct audio_cal_type_audvol {
385   struct audio_cal_type_header cal_hdr;
386   struct audio_cal_data cal_data;
387   struct audio_cal_info_audvol cal_info;
388 };
389 struct audio_cal_audvol {
390   struct audio_cal_header hdr;
391   struct audio_cal_type_audvol cal_type;
392 };
393 struct audio_cal_type_asm_top {
394   struct audio_cal_type_header cal_hdr;
395   struct audio_cal_data cal_data;
396   struct audio_cal_info_asm_top cal_info;
397 };
398 struct audio_cal_asm_top {
399   struct audio_cal_header hdr;
400   struct audio_cal_type_asm_top cal_type;
401 };
402 struct audio_cal_type_audstrm {
403   struct audio_cal_type_header cal_hdr;
404   struct audio_cal_data cal_data;
405   struct audio_cal_info_audstrm cal_info;
406 };
407 struct audio_cal_audstrm {
408   struct audio_cal_header hdr;
409   struct audio_cal_type_audstrm cal_type;
410 };
411 struct audio_cal_type_afe {
412   struct audio_cal_type_header cal_hdr;
413   struct audio_cal_data cal_data;
414   struct audio_cal_info_afe cal_info;
415 };
416 struct audio_cal_afe {
417   struct audio_cal_header hdr;
418   struct audio_cal_type_afe cal_type;
419 };
420 struct audio_cal_type_afe_top {
421   struct audio_cal_type_header cal_hdr;
422   struct audio_cal_data cal_data;
423   struct audio_cal_info_afe_top cal_info;
424 };
425 struct audio_cal_afe_top {
426   struct audio_cal_header hdr;
427   struct audio_cal_type_afe_top cal_type;
428 };
429 struct audio_cal_type_aanc {
430   struct audio_cal_type_header cal_hdr;
431   struct audio_cal_data cal_data;
432   struct audio_cal_info_aanc cal_info;
433 };
434 struct audio_cal_aanc {
435   struct audio_cal_header hdr;
436   struct audio_cal_type_aanc cal_type;
437 };
438 struct audio_cal_type_fb_spk_prot_cfg {
439   struct audio_cal_type_header cal_hdr;
440   struct audio_cal_data cal_data;
441   struct audio_cal_info_spk_prot_cfg cal_info;
442 };
443 struct audio_cal_fb_spk_prot_cfg {
444   struct audio_cal_header hdr;
445   struct audio_cal_type_fb_spk_prot_cfg cal_type;
446 };
447 struct audio_cal_type_sp_th_vi_ftm_cfg {
448   struct audio_cal_type_header cal_hdr;
449   struct audio_cal_data cal_data;
450   struct audio_cal_info_sp_th_vi_ftm_cfg cal_info;
451 };
452 struct audio_cal_sp_th_vi_ftm_cfg {
453   struct audio_cal_header hdr;
454   struct audio_cal_type_sp_th_vi_ftm_cfg cal_type;
455 };
456 struct audio_cal_type_sp_ex_vi_ftm_cfg {
457   struct audio_cal_type_header cal_hdr;
458   struct audio_cal_data cal_data;
459   struct audio_cal_info_sp_ex_vi_ftm_cfg cal_info;
460 };
461 struct audio_cal_sp_ex_vi_ftm_cfg {
462   struct audio_cal_header hdr;
463   struct audio_cal_type_sp_ex_vi_ftm_cfg cal_type;
464 };
465 struct audio_cal_type_hw_delay {
466   struct audio_cal_type_header cal_hdr;
467   struct audio_cal_data cal_data;
468   struct audio_cal_info_hw_delay cal_info;
469 };
470 struct audio_cal_hw_delay {
471   struct audio_cal_header hdr;
472   struct audio_cal_type_hw_delay cal_type;
473 };
474 struct audio_cal_type_sidetone {
475   struct audio_cal_type_header cal_hdr;
476   struct audio_cal_data cal_data;
477   struct audio_cal_info_sidetone cal_info;
478 };
479 struct audio_cal_sidetone {
480   struct audio_cal_header hdr;
481   struct audio_cal_type_sidetone cal_type;
482 };
483 struct audio_cal_type_sidetone_iir {
484   struct audio_cal_type_header cal_hdr;
485   struct audio_cal_data cal_data;
486   struct audio_cal_info_sidetone_iir cal_info;
487 };
488 struct audio_cal_sidetone_iir {
489   struct audio_cal_header hdr;
490   struct audio_cal_type_sidetone_iir cal_type;
491 };
492 struct audio_cal_type_lsm_top {
493   struct audio_cal_type_header cal_hdr;
494   struct audio_cal_data cal_data;
495   struct audio_cal_info_lsm_top cal_info;
496 };
497 struct audio_cal_lsm_top {
498   struct audio_cal_header hdr;
499   struct audio_cal_type_lsm_top cal_type;
500 };
501 struct audio_cal_type_lsm {
502   struct audio_cal_type_header cal_hdr;
503   struct audio_cal_data cal_data;
504   struct audio_cal_info_lsm cal_info;
505 };
506 struct audio_cal_lsm {
507   struct audio_cal_header hdr;
508   struct audio_cal_type_lsm cal_type;
509 };
510 struct audio_cal_type_voc_top {
511   struct audio_cal_type_header cal_hdr;
512   struct audio_cal_data cal_data;
513   struct audio_cal_info_voc_top cal_info;
514 };
515 struct audio_cal_voc_top {
516   struct audio_cal_header hdr;
517   struct audio_cal_type_voc_top cal_type;
518 };
519 struct audio_cal_type_vocproc {
520   struct audio_cal_type_header cal_hdr;
521   struct audio_cal_data cal_data;
522   struct audio_cal_info_vocproc cal_info;
523 };
524 struct audio_cal_vocproc {
525   struct audio_cal_header hdr;
526   struct audio_cal_type_vocproc cal_type;
527 };
528 struct audio_cal_type_vocvol {
529   struct audio_cal_type_header cal_hdr;
530   struct audio_cal_data cal_data;
531   struct audio_cal_info_vocvol cal_info;
532 };
533 struct audio_cal_vocvol {
534   struct audio_cal_header hdr;
535   struct audio_cal_type_vocvol cal_type;
536 };
537 struct audio_cal_type_vocdev_cfg {
538   struct audio_cal_type_header cal_hdr;
539   struct audio_cal_data cal_data;
540   struct audio_cal_info_vocdev_cfg cal_info;
541 };
542 struct audio_cal_vocdev_cfg {
543   struct audio_cal_header hdr;
544   struct audio_cal_type_vocdev_cfg cal_type;
545 };
546 struct audio_cal_type_voc_col {
547   struct audio_cal_type_header cal_hdr;
548   struct audio_cal_data cal_data;
549   struct audio_cal_info_voc_col cal_info;
550 };
551 struct audio_cal_voc_col {
552   struct audio_cal_header hdr;
553   struct audio_cal_type_voc_col cal_type;
554 };
555 struct audio_cal_type_fb_spk_prot_status {
556   struct audio_cal_type_header cal_hdr;
557   struct audio_cal_data cal_data;
558   struct audio_cal_info_msm_spk_prot_status cal_info;
559 };
560 struct audio_cal_fb_spk_prot_status {
561   struct audio_cal_header hdr;
562   struct audio_cal_type_fb_spk_prot_status cal_type;
563 };
564 struct audio_cal_type_sp_th_vi_param {
565   struct audio_cal_type_header cal_hdr;
566   struct audio_cal_data cal_data;
567   struct audio_cal_info_sp_th_vi_param cal_info;
568 };
569 struct audio_cal_sp_th_vi_param {
570   struct audio_cal_header hdr;
571   struct audio_cal_type_sp_th_vi_param cal_type;
572 };
573 struct audio_cal_type_sp_ex_vi_param {
574   struct audio_cal_type_header cal_hdr;
575   struct audio_cal_data cal_data;
576   struct audio_cal_info_sp_ex_vi_param cal_info;
577 };
578 struct audio_cal_sp_ex_vi_param {
579   struct audio_cal_header hdr;
580   struct audio_cal_type_sp_ex_vi_param cal_type;
581 };
582 #endif
583 
584