blob: 5a0b8603070d7546e457bd5f55db7cbb8baa584f [file] [log] [blame]
Banajit Goswami0530e2f2016-12-09 21:34:37 -08001#ifndef _UAPI_MSM_AUDIO_CALIBRATION_H
2#define _UAPI_MSM_AUDIO_CALIBRATION_H
3
4#include <linux/types.h>
5#include <linux/ioctl.h>
6
7#define CAL_IOCTL_MAGIC 'a'
8
9#define AUDIO_ALLOCATE_CALIBRATION _IOWR(CAL_IOCTL_MAGIC, \
10 200, void *)
11#define AUDIO_DEALLOCATE_CALIBRATION _IOWR(CAL_IOCTL_MAGIC, \
12 201, void *)
13#define AUDIO_PREPARE_CALIBRATION _IOWR(CAL_IOCTL_MAGIC, \
14 202, void *)
15#define AUDIO_SET_CALIBRATION _IOWR(CAL_IOCTL_MAGIC, \
16 203, void *)
17#define AUDIO_GET_CALIBRATION _IOWR(CAL_IOCTL_MAGIC, \
18 204, void *)
19#define AUDIO_POST_CALIBRATION _IOWR(CAL_IOCTL_MAGIC, \
20 205, void *)
21
22/* For Real-Time Audio Calibration */
23#define AUDIO_GET_RTAC_ADM_INFO _IOR(CAL_IOCTL_MAGIC, \
24 207, void *)
25#define AUDIO_GET_RTAC_VOICE_INFO _IOR(CAL_IOCTL_MAGIC, \
26 208, void *)
27#define AUDIO_GET_RTAC_ADM_CAL _IOWR(CAL_IOCTL_MAGIC, \
28 209, void *)
29#define AUDIO_SET_RTAC_ADM_CAL _IOWR(CAL_IOCTL_MAGIC, \
30 210, void *)
31#define AUDIO_GET_RTAC_ASM_CAL _IOWR(CAL_IOCTL_MAGIC, \
32 211, void *)
33#define AUDIO_SET_RTAC_ASM_CAL _IOWR(CAL_IOCTL_MAGIC, \
34 212, void *)
35#define AUDIO_GET_RTAC_CVS_CAL _IOWR(CAL_IOCTL_MAGIC, \
36 213, void *)
37#define AUDIO_SET_RTAC_CVS_CAL _IOWR(CAL_IOCTL_MAGIC, \
38 214, void *)
39#define AUDIO_GET_RTAC_CVP_CAL _IOWR(CAL_IOCTL_MAGIC, \
40 215, void *)
41#define AUDIO_SET_RTAC_CVP_CAL _IOWR(CAL_IOCTL_MAGIC, \
42 216, void *)
43#define AUDIO_GET_RTAC_AFE_CAL _IOWR(CAL_IOCTL_MAGIC, \
44 217, void *)
45#define AUDIO_SET_RTAC_AFE_CAL _IOWR(CAL_IOCTL_MAGIC, \
46 218, void *)
47enum {
48 CVP_VOC_RX_TOPOLOGY_CAL_TYPE = 0,
49 CVP_VOC_TX_TOPOLOGY_CAL_TYPE,
50 CVP_VOCPROC_STATIC_CAL_TYPE,
51 CVP_VOCPROC_DYNAMIC_CAL_TYPE,
52 CVS_VOCSTRM_STATIC_CAL_TYPE,
53 CVP_VOCDEV_CFG_CAL_TYPE,
54 CVP_VOCPROC_STATIC_COL_CAL_TYPE,
55 CVP_VOCPROC_DYNAMIC_COL_CAL_TYPE,
56 CVS_VOCSTRM_STATIC_COL_CAL_TYPE,
57
58 ADM_TOPOLOGY_CAL_TYPE,
59 ADM_CUST_TOPOLOGY_CAL_TYPE,
60 ADM_AUDPROC_CAL_TYPE,
61 ADM_AUDVOL_CAL_TYPE,
62
63 ASM_TOPOLOGY_CAL_TYPE,
64 ASM_CUST_TOPOLOGY_CAL_TYPE,
65 ASM_AUDSTRM_CAL_TYPE,
66
67 AFE_COMMON_RX_CAL_TYPE,
68 AFE_COMMON_TX_CAL_TYPE,
69 AFE_ANC_CAL_TYPE,
70 AFE_AANC_CAL_TYPE,
71 AFE_FB_SPKR_PROT_CAL_TYPE,
72 AFE_HW_DELAY_CAL_TYPE,
73 AFE_SIDETONE_CAL_TYPE,
74 AFE_TOPOLOGY_CAL_TYPE,
75 AFE_CUST_TOPOLOGY_CAL_TYPE,
76
77 LSM_CUST_TOPOLOGY_CAL_TYPE,
78 LSM_TOPOLOGY_CAL_TYPE,
79 LSM_CAL_TYPE,
80
81 ADM_RTAC_INFO_CAL_TYPE,
82 VOICE_RTAC_INFO_CAL_TYPE,
83 ADM_RTAC_APR_CAL_TYPE,
84 ASM_RTAC_APR_CAL_TYPE,
85 VOICE_RTAC_APR_CAL_TYPE,
86
87 MAD_CAL_TYPE,
88 ULP_AFE_CAL_TYPE,
89 ULP_LSM_CAL_TYPE,
90
91 DTS_EAGLE_CAL_TYPE,
92 AUDIO_CORE_METAINFO_CAL_TYPE,
93 SRS_TRUMEDIA_CAL_TYPE,
94
95 CORE_CUSTOM_TOPOLOGIES_CAL_TYPE,
96 ADM_RTAC_AUDVOL_CAL_TYPE,
97
98 ULP_LSM_TOPOLOGY_ID_CAL_TYPE,
99 AFE_FB_SPKR_PROT_TH_VI_CAL_TYPE,
100 AFE_FB_SPKR_PROT_EX_VI_CAL_TYPE,
Siena Richardd83d83f2016-12-15 13:49:41 -0800101 AFE_SIDETONE_IIR_CAL_TYPE,
Banajit Goswami0530e2f2016-12-09 21:34:37 -0800102 MAX_CAL_TYPES,
103};
104
105#define AFE_FB_SPKR_PROT_TH_VI_CAL_TYPE AFE_FB_SPKR_PROT_TH_VI_CAL_TYPE
106#define AFE_FB_SPKR_PROT_EX_VI_CAL_TYPE AFE_FB_SPKR_PROT_EX_VI_CAL_TYPE
107
Siena Richardd83d83f2016-12-15 13:49:41 -0800108#define AFE_SIDETONE_IIR_CAL_TYPE AFE_SIDETONE_IIR_CAL_TYPE
109
Banajit Goswami0530e2f2016-12-09 21:34:37 -0800110enum {
111 VERSION_0_0,
112};
113
114enum {
115 PER_VOCODER_CAL_BIT_MASK = 0x10000,
116};
117
118#define MAX_IOCTL_CMD_SIZE 512
119
120/* common structures */
121
122struct audio_cal_header {
123 int32_t data_size;
124 int32_t version;
125 int32_t cal_type;
126 int32_t cal_type_size;
127};
128
129struct audio_cal_type_header {
130 int32_t version;
131 int32_t buffer_number;
132};
133
134struct audio_cal_data {
135 /* Size of cal data at mem_handle allocation or at vaddr */
136 int32_t cal_size;
137 /* If mem_handle if shared memory is used*/
138 int32_t mem_handle;
139 /* size of virtual memory if shared memory not used */
140};
141
142
143/* AUDIO_ALLOCATE_CALIBRATION */
144struct audio_cal_type_alloc {
145 struct audio_cal_type_header cal_hdr;
146 struct audio_cal_data cal_data;
147};
148
149struct audio_cal_alloc {
150 struct audio_cal_header hdr;
151 struct audio_cal_type_alloc cal_type;
152};
153
154
155/* AUDIO_DEALLOCATE_CALIBRATION */
156struct audio_cal_type_dealloc {
157 struct audio_cal_type_header cal_hdr;
158 struct audio_cal_data cal_data;
159};
160
161struct audio_cal_dealloc {
162 struct audio_cal_header hdr;
163 struct audio_cal_type_dealloc cal_type;
164};
165
166
167/* AUDIO_PREPARE_CALIBRATION */
168struct audio_cal_type_prepare {
169 struct audio_cal_type_header cal_hdr;
170 struct audio_cal_data cal_data;
171};
172
173struct audio_cal_prepare {
174 struct audio_cal_header hdr;
175 struct audio_cal_type_prepare cal_type;
176};
177
178
179/* AUDIO_POST_CALIBRATION */
180struct audio_cal_type_post {
181 struct audio_cal_type_header cal_hdr;
182 struct audio_cal_data cal_data;
183};
184
185struct audio_cal_post {
186 struct audio_cal_header hdr;
187 struct audio_cal_type_post cal_type;
188};
189
190/*AUDIO_CORE_META_INFO */
191
192struct audio_cal_info_metainfo {
193 uint32_t nKey;
194};
195
196/* Cal info types */
197enum {
198 RX_DEVICE,
199 TX_DEVICE,
200 MAX_PATH_TYPE
201};
202
203struct audio_cal_info_adm_top {
204 int32_t topology;
205 int32_t acdb_id;
206 /* RX_DEVICE or TX_DEVICE */
207 int32_t path;
208 int32_t app_type;
209 int32_t sample_rate;
210};
211
212struct audio_cal_info_audproc {
213 int32_t acdb_id;
214 /* RX_DEVICE or TX_DEVICE */
215 int32_t path;
216 int32_t app_type;
217 int32_t sample_rate;
218};
219
220struct audio_cal_info_audvol {
221 int32_t acdb_id;
222 /* RX_DEVICE or TX_DEVICE */
223 int32_t path;
224 int32_t app_type;
225 int32_t vol_index;
226};
227
228struct audio_cal_info_afe {
229 int32_t acdb_id;
230 /* RX_DEVICE or TX_DEVICE */
231 int32_t path;
232 int32_t sample_rate;
233};
234
235struct audio_cal_info_afe_top {
236 int32_t topology;
237 int32_t acdb_id;
238 /* RX_DEVICE or TX_DEVICE */
239 int32_t path;
240 int32_t sample_rate;
241};
242
243struct audio_cal_info_asm_top {
244 int32_t topology;
245 int32_t app_type;
246};
247
248struct audio_cal_info_audstrm {
249 int32_t app_type;
250};
251
252struct audio_cal_info_aanc {
253 int32_t acdb_id;
254};
255
256#define MAX_HW_DELAY_ENTRIES 25
257
258struct audio_cal_hw_delay_entry {
259 uint32_t sample_rate;
260 uint32_t delay_usec;
261};
262
263struct audio_cal_hw_delay_data {
264 uint32_t num_entries;
265 struct audio_cal_hw_delay_entry entry[MAX_HW_DELAY_ENTRIES];
266};
267
268struct audio_cal_info_hw_delay {
269 int32_t acdb_id;
270 /* RX_DEVICE or TX_DEVICE */
271 int32_t path;
272 int32_t property_type;
273 struct audio_cal_hw_delay_data data;
274};
275
276enum msm_spkr_prot_states {
277 MSM_SPKR_PROT_CALIBRATED,
278 MSM_SPKR_PROT_CALIBRATION_IN_PROGRESS,
279 MSM_SPKR_PROT_DISABLED,
280 MSM_SPKR_PROT_NOT_CALIBRATED,
281 MSM_SPKR_PROT_PRE_CALIBRATED,
282 MSM_SPKR_PROT_IN_FTM_MODE
283};
284#define MSM_SPKR_PROT_IN_FTM_MODE MSM_SPKR_PROT_IN_FTM_MODE
285
286enum msm_spkr_count {
287 SP_V2_SPKR_1,
288 SP_V2_SPKR_2,
289 SP_V2_NUM_MAX_SPKRS
290};
291
292struct audio_cal_info_spk_prot_cfg {
293 int32_t r0[SP_V2_NUM_MAX_SPKRS];
294 int32_t t0[SP_V2_NUM_MAX_SPKRS];
295 uint32_t quick_calib_flag;
296 uint32_t mode;
297 /*
298 * 0 - Start spk prot
299 * 1 - Start calib
300 * 2 - Disable spk prot
301 */
302};
303
304struct audio_cal_info_sp_th_vi_ftm_cfg {
305 uint32_t wait_time[SP_V2_NUM_MAX_SPKRS];
306 uint32_t ftm_time[SP_V2_NUM_MAX_SPKRS];
307 uint32_t mode;
308 /*
309 * 0 - normal running mode
310 * 1 - Calibration
311 * 2 - FTM mode
312 */
313};
314
315struct audio_cal_info_sp_ex_vi_ftm_cfg {
316 uint32_t wait_time[SP_V2_NUM_MAX_SPKRS];
317 uint32_t ftm_time[SP_V2_NUM_MAX_SPKRS];
318 uint32_t mode;
319 /*
320 * 0 - normal running mode
321 * 2 - FTM mode
322 */
323};
324
325struct audio_cal_info_sp_ex_vi_param {
326 int32_t freq_q20[SP_V2_NUM_MAX_SPKRS];
327 int32_t resis_q24[SP_V2_NUM_MAX_SPKRS];
328 int32_t qmct_q24[SP_V2_NUM_MAX_SPKRS];
329 int32_t status[SP_V2_NUM_MAX_SPKRS];
330};
331
332struct audio_cal_info_sp_th_vi_param {
333 int32_t r_dc_q24[SP_V2_NUM_MAX_SPKRS];
334 int32_t temp_q22[SP_V2_NUM_MAX_SPKRS];
335 int32_t status[SP_V2_NUM_MAX_SPKRS];
336};
337
338struct audio_cal_info_msm_spk_prot_status {
339 int32_t r0[SP_V2_NUM_MAX_SPKRS];
340 int32_t status;
341};
342
343struct audio_cal_info_sidetone {
344 uint16_t enable;
345 uint16_t gain;
346 int32_t tx_acdb_id;
347 int32_t rx_acdb_id;
348 int32_t mid;
349 int32_t pid;
350};
351
Siena Richardd83d83f2016-12-15 13:49:41 -0800352#define MAX_SIDETONE_IIR_DATA_SIZE 224
353#define MAX_NO_IIR_FILTER_STAGE 10
354
355struct audio_cal_info_sidetone_iir {
356 uint16_t iir_enable;
357 uint16_t num_biquad_stages;
358 uint16_t pregain;
359 int32_t tx_acdb_id;
360 int32_t rx_acdb_id;
361 int32_t mid;
362 int32_t pid;
363 uint8_t iir_config[MAX_SIDETONE_IIR_DATA_SIZE];
364};
Banajit Goswami0530e2f2016-12-09 21:34:37 -0800365struct audio_cal_info_lsm_top {
366 int32_t topology;
367 int32_t acdb_id;
368 int32_t app_type;
369};
370
371
372struct audio_cal_info_lsm {
373 int32_t acdb_id;
374 /* RX_DEVICE or TX_DEVICE */
375 int32_t path;
376 int32_t app_type;
377};
378
379struct audio_cal_info_voc_top {
380 int32_t topology;
381 int32_t acdb_id;
382};
383
384struct audio_cal_info_vocproc {
385 int32_t tx_acdb_id;
386 int32_t rx_acdb_id;
387 int32_t tx_sample_rate;
388 int32_t rx_sample_rate;
389};
390
391enum {
392 DEFAULT_FEATURE_SET,
393 VOL_BOOST_FEATURE_SET,
394};
395
396struct audio_cal_info_vocvol {
397 int32_t tx_acdb_id;
398 int32_t rx_acdb_id;
399 /* DEFAULT_ or VOL_BOOST_FEATURE_SET */
400 int32_t feature_set;
401};
402
403struct audio_cal_info_vocdev_cfg {
404 int32_t tx_acdb_id;
405 int32_t rx_acdb_id;
406};
407
408#define MAX_VOICE_COLUMNS 20
409
410union audio_cal_col_na {
411 uint8_t val8;
412 uint16_t val16;
413 uint32_t val32;
414 uint64_t val64;
415} __packed;
416
417struct audio_cal_col {
418 uint32_t id;
419 uint32_t type;
420 union audio_cal_col_na na_value;
421} __packed;
422
423struct audio_cal_col_data {
424 uint32_t num_columns;
425 struct audio_cal_col column[MAX_VOICE_COLUMNS];
426} __packed;
427
428struct audio_cal_info_voc_col {
429 int32_t table_id;
430 int32_t tx_acdb_id;
431 int32_t rx_acdb_id;
432 struct audio_cal_col_data data;
433};
434
435/* AUDIO_SET_CALIBRATION & */
436struct audio_cal_type_basic {
437 struct audio_cal_type_header cal_hdr;
438 struct audio_cal_data cal_data;
439};
440
441struct audio_cal_basic {
442 struct audio_cal_header hdr;
443 struct audio_cal_type_basic cal_type;
444};
445
446struct audio_cal_type_adm_top {
447 struct audio_cal_type_header cal_hdr;
448 struct audio_cal_data cal_data;
449 struct audio_cal_info_adm_top cal_info;
450};
451
452struct audio_cal_adm_top {
453 struct audio_cal_header hdr;
454 struct audio_cal_type_adm_top cal_type;
455};
456
457struct audio_cal_type_metainfo {
458 struct audio_cal_type_header cal_hdr;
459 struct audio_cal_data cal_data;
460 struct audio_cal_info_metainfo cal_info;
461};
462
463struct audio_core_metainfo {
464 struct audio_cal_header hdr;
465 struct audio_cal_type_metainfo cal_type;
466};
467
468struct audio_cal_type_audproc {
469 struct audio_cal_type_header cal_hdr;
470 struct audio_cal_data cal_data;
471 struct audio_cal_info_audproc cal_info;
472};
473
474struct audio_cal_audproc {
475 struct audio_cal_header hdr;
476 struct audio_cal_type_audproc cal_type;
477};
478
479struct audio_cal_type_audvol {
480 struct audio_cal_type_header cal_hdr;
481 struct audio_cal_data cal_data;
482 struct audio_cal_info_audvol cal_info;
483};
484
485struct audio_cal_audvol {
486 struct audio_cal_header hdr;
487 struct audio_cal_type_audvol cal_type;
488};
489
490struct audio_cal_type_asm_top {
491 struct audio_cal_type_header cal_hdr;
492 struct audio_cal_data cal_data;
493 struct audio_cal_info_asm_top cal_info;
494};
495
496struct audio_cal_asm_top {
497 struct audio_cal_header hdr;
498 struct audio_cal_type_asm_top cal_type;
499};
500
501struct audio_cal_type_audstrm {
502 struct audio_cal_type_header cal_hdr;
503 struct audio_cal_data cal_data;
504 struct audio_cal_info_audstrm cal_info;
505};
506
507struct audio_cal_audstrm {
508 struct audio_cal_header hdr;
509 struct audio_cal_type_audstrm cal_type;
510};
511
512struct audio_cal_type_afe {
513 struct audio_cal_type_header cal_hdr;
514 struct audio_cal_data cal_data;
515 struct audio_cal_info_afe cal_info;
516};
517
518struct audio_cal_afe {
519 struct audio_cal_header hdr;
520 struct audio_cal_type_afe cal_type;
521};
522
523struct audio_cal_type_afe_top {
524 struct audio_cal_type_header cal_hdr;
525 struct audio_cal_data cal_data;
526 struct audio_cal_info_afe_top cal_info;
527};
528
529struct audio_cal_afe_top {
530 struct audio_cal_header hdr;
531 struct audio_cal_type_afe_top cal_type;
532};
533
534struct audio_cal_type_aanc {
535 struct audio_cal_type_header cal_hdr;
536 struct audio_cal_data cal_data;
537 struct audio_cal_info_aanc cal_info;
538};
539
540struct audio_cal_aanc {
541 struct audio_cal_header hdr;
542 struct audio_cal_type_aanc cal_type;
543};
544
545struct audio_cal_type_fb_spk_prot_cfg {
546 struct audio_cal_type_header cal_hdr;
547 struct audio_cal_data cal_data;
548 struct audio_cal_info_spk_prot_cfg cal_info;
549};
550
551struct audio_cal_fb_spk_prot_cfg {
552 struct audio_cal_header hdr;
553 struct audio_cal_type_fb_spk_prot_cfg cal_type;
554};
555
556struct audio_cal_type_sp_th_vi_ftm_cfg {
557 struct audio_cal_type_header cal_hdr;
558 struct audio_cal_data cal_data;
559 struct audio_cal_info_sp_th_vi_ftm_cfg cal_info;
560};
561
562struct audio_cal_sp_th_vi_ftm_cfg {
563 struct audio_cal_header hdr;
564 struct audio_cal_type_sp_th_vi_ftm_cfg cal_type;
565};
566
567struct audio_cal_type_sp_ex_vi_ftm_cfg {
568 struct audio_cal_type_header cal_hdr;
569 struct audio_cal_data cal_data;
570 struct audio_cal_info_sp_ex_vi_ftm_cfg cal_info;
571};
572
573struct audio_cal_sp_ex_vi_ftm_cfg {
574 struct audio_cal_header hdr;
575 struct audio_cal_type_sp_ex_vi_ftm_cfg cal_type;
576};
577struct audio_cal_type_hw_delay {
578 struct audio_cal_type_header cal_hdr;
579 struct audio_cal_data cal_data;
580 struct audio_cal_info_hw_delay cal_info;
581};
582
583struct audio_cal_hw_delay {
584 struct audio_cal_header hdr;
585 struct audio_cal_type_hw_delay cal_type;
586};
587
588struct audio_cal_type_sidetone {
589 struct audio_cal_type_header cal_hdr;
590 struct audio_cal_data cal_data;
591 struct audio_cal_info_sidetone cal_info;
592};
593
594struct audio_cal_sidetone {
595 struct audio_cal_header hdr;
596 struct audio_cal_type_sidetone cal_type;
597};
598
Siena Richardd83d83f2016-12-15 13:49:41 -0800599struct audio_cal_type_sidetone_iir {
600 struct audio_cal_type_header cal_hdr;
601 struct audio_cal_data cal_data;
602 struct audio_cal_info_sidetone_iir cal_info;
603};
604
605struct audio_cal_sidetone_iir {
606 struct audio_cal_header hdr;
607 struct audio_cal_type_sidetone_iir cal_type;
608};
609
Banajit Goswami0530e2f2016-12-09 21:34:37 -0800610struct audio_cal_type_lsm_top {
611 struct audio_cal_type_header cal_hdr;
612 struct audio_cal_data cal_data;
613 struct audio_cal_info_lsm_top cal_info;
614};
615
616struct audio_cal_lsm_top {
617 struct audio_cal_header hdr;
618 struct audio_cal_type_lsm_top cal_type;
619};
620
621struct audio_cal_type_lsm {
622 struct audio_cal_type_header cal_hdr;
623 struct audio_cal_data cal_data;
624 struct audio_cal_info_lsm cal_info;
625};
626
627struct audio_cal_lsm {
628 struct audio_cal_header hdr;
629 struct audio_cal_type_lsm cal_type;
630};
631
632struct audio_cal_type_voc_top {
633 struct audio_cal_type_header cal_hdr;
634 struct audio_cal_data cal_data;
635 struct audio_cal_info_voc_top cal_info;
636};
637
638struct audio_cal_voc_top {
639 struct audio_cal_header hdr;
640 struct audio_cal_type_voc_top cal_type;
641};
642
643struct audio_cal_type_vocproc {
644 struct audio_cal_type_header cal_hdr;
645 struct audio_cal_data cal_data;
646 struct audio_cal_info_vocproc cal_info;
647};
648
649struct audio_cal_vocproc {
650 struct audio_cal_header hdr;
651 struct audio_cal_type_vocproc cal_type;
652};
653
654struct audio_cal_type_vocvol {
655 struct audio_cal_type_header cal_hdr;
656 struct audio_cal_data cal_data;
657 struct audio_cal_info_vocvol cal_info;
658};
659
660struct audio_cal_vocvol {
661 struct audio_cal_header hdr;
662 struct audio_cal_type_vocvol cal_type;
663};
664
665struct audio_cal_type_vocdev_cfg {
666 struct audio_cal_type_header cal_hdr;
667 struct audio_cal_data cal_data;
668 struct audio_cal_info_vocdev_cfg cal_info;
669};
670
671struct audio_cal_vocdev_cfg {
672 struct audio_cal_header hdr;
673 struct audio_cal_type_vocdev_cfg cal_type;
674};
675
676struct audio_cal_type_voc_col {
677 struct audio_cal_type_header cal_hdr;
678 struct audio_cal_data cal_data;
679 struct audio_cal_info_voc_col cal_info;
680};
681
682struct audio_cal_voc_col {
683 struct audio_cal_header hdr;
684 struct audio_cal_type_voc_col cal_type;
685};
686
687/* AUDIO_GET_CALIBRATION */
688struct audio_cal_type_fb_spk_prot_status {
689 struct audio_cal_type_header cal_hdr;
690 struct audio_cal_data cal_data;
691 struct audio_cal_info_msm_spk_prot_status cal_info;
692};
693
694struct audio_cal_fb_spk_prot_status {
695 struct audio_cal_header hdr;
696 struct audio_cal_type_fb_spk_prot_status cal_type;
697};
698
699struct audio_cal_type_sp_th_vi_param {
700 struct audio_cal_type_header cal_hdr;
701 struct audio_cal_data cal_data;
702 struct audio_cal_info_sp_th_vi_param cal_info;
703};
704
705struct audio_cal_sp_th_vi_param {
706 struct audio_cal_header hdr;
707 struct audio_cal_type_sp_th_vi_param cal_type;
708};
709struct audio_cal_type_sp_ex_vi_param {
710 struct audio_cal_type_header cal_hdr;
711 struct audio_cal_data cal_data;
712 struct audio_cal_info_sp_ex_vi_param cal_info;
713};
714
715struct audio_cal_sp_ex_vi_param {
716 struct audio_cal_header hdr;
717 struct audio_cal_type_sp_ex_vi_param cal_type;
718};
719#endif /* _UAPI_MSM_AUDIO_CALIBRATION_H */