1 #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 *)
47 enum {
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,
101 	MAX_CAL_TYPES,
102 };
103 
104 #define AFE_FB_SPKR_PROT_TH_VI_CAL_TYPE AFE_FB_SPKR_PROT_TH_VI_CAL_TYPE
105 #define AFE_FB_SPKR_PROT_EX_VI_CAL_TYPE AFE_FB_SPKR_PROT_EX_VI_CAL_TYPE
106 
107 enum {
108 	VERSION_0_0,
109 };
110 
111 enum {
112 	PER_VOCODER_CAL_BIT_MASK = 0x10000,
113 };
114 
115 #define MAX_IOCTL_CMD_SIZE	512
116 
117 /* common structures */
118 
119 struct audio_cal_header {
120 	int32_t		data_size;
121 	int32_t		version;
122 	int32_t		cal_type;
123 	int32_t		cal_type_size;
124 };
125 
126 struct audio_cal_type_header {
127 	int32_t		version;
128 	int32_t		buffer_number;
129 };
130 
131 struct audio_cal_data {
132 	/* Size of cal data at mem_handle allocation or at vaddr */
133 	int32_t		cal_size;
134 	/* If mem_handle if shared memory is used*/
135 	int32_t		mem_handle;
136 	/* size of virtual memory if shared memory not used */
137 };
138 
139 
140 /* AUDIO_ALLOCATE_CALIBRATION */
141 struct audio_cal_type_alloc {
142 	struct audio_cal_type_header	cal_hdr;
143 	struct audio_cal_data		cal_data;
144 };
145 
146 struct audio_cal_alloc {
147 	struct audio_cal_header		hdr;
148 	struct audio_cal_type_alloc	cal_type;
149 };
150 
151 
152 /* AUDIO_DEALLOCATE_CALIBRATION */
153 struct audio_cal_type_dealloc {
154 	struct audio_cal_type_header	cal_hdr;
155 	struct audio_cal_data		cal_data;
156 };
157 
158 struct audio_cal_dealloc {
159 	struct audio_cal_header		hdr;
160 	struct audio_cal_type_dealloc	cal_type;
161 };
162 
163 
164 /* AUDIO_PREPARE_CALIBRATION */
165 struct audio_cal_type_prepare {
166 	struct audio_cal_type_header	cal_hdr;
167 	struct audio_cal_data		cal_data;
168 };
169 
170 struct audio_cal_prepare {
171 	struct audio_cal_header		hdr;
172 	struct audio_cal_type_prepare	cal_type;
173 };
174 
175 
176 /* AUDIO_POST_CALIBRATION */
177 struct audio_cal_type_post {
178 	struct audio_cal_type_header	cal_hdr;
179 	struct audio_cal_data		cal_data;
180 };
181 
182 struct audio_cal_post {
183 	struct audio_cal_header		hdr;
184 	struct audio_cal_type_post	cal_type;
185 };
186 
187 /*AUDIO_CORE_META_INFO */
188 
189 struct audio_cal_info_metainfo {
190 	uint32_t nKey;
191 };
192 
193 /* Cal info types */
194 enum {
195 	RX_DEVICE,
196 	TX_DEVICE,
197 	MAX_PATH_TYPE
198 };
199 
200 struct audio_cal_info_adm_top {
201 	int32_t		topology;
202 	int32_t		acdb_id;
203 	/* RX_DEVICE or TX_DEVICE */
204 	int32_t		path;
205 	int32_t		app_type;
206 	int32_t		sample_rate;
207 };
208 
209 struct audio_cal_info_audproc {
210 	int32_t		acdb_id;
211 	/* RX_DEVICE or TX_DEVICE */
212 	int32_t		path;
213 	int32_t		app_type;
214 	int32_t		sample_rate;
215 };
216 
217 struct audio_cal_info_audvol {
218 	int32_t		acdb_id;
219 	/* RX_DEVICE or TX_DEVICE */
220 	int32_t		path;
221 	int32_t		app_type;
222 	int32_t		vol_index;
223 };
224 
225 struct audio_cal_info_afe {
226 	int32_t		acdb_id;
227 	/* RX_DEVICE or TX_DEVICE */
228 	int32_t		path;
229 	int32_t		sample_rate;
230 };
231 
232 struct audio_cal_info_afe_top {
233 	int32_t		topology;
234 	int32_t		acdb_id;
235 	/* RX_DEVICE or TX_DEVICE */
236 	int32_t		path;
237 	int32_t		sample_rate;
238 };
239 
240 struct audio_cal_info_asm_top {
241 	int32_t		topology;
242 	int32_t		app_type;
243 };
244 
245 struct audio_cal_info_audstrm {
246 	int32_t		app_type;
247 };
248 
249 struct audio_cal_info_aanc {
250 	int32_t		acdb_id;
251 };
252 
253 #define MAX_HW_DELAY_ENTRIES	25
254 
255 struct audio_cal_hw_delay_entry {
256 	uint32_t sample_rate;
257 	uint32_t delay_usec;
258 };
259 
260 struct audio_cal_hw_delay_data {
261 	uint32_t				num_entries;
262 	struct audio_cal_hw_delay_entry		entry[MAX_HW_DELAY_ENTRIES];
263 };
264 
265 struct audio_cal_info_hw_delay {
266 	int32_t					acdb_id;
267 	/* RX_DEVICE or TX_DEVICE */
268 	int32_t					path;
269 	int32_t					property_type;
270 	struct audio_cal_hw_delay_data		data;
271 };
272 
273 enum msm_spkr_prot_states {
274 	MSM_SPKR_PROT_CALIBRATED,
275 	MSM_SPKR_PROT_CALIBRATION_IN_PROGRESS,
276 	MSM_SPKR_PROT_DISABLED,
277 	MSM_SPKR_PROT_NOT_CALIBRATED,
278 	MSM_SPKR_PROT_PRE_CALIBRATED,
279 	MSM_SPKR_PROT_IN_FTM_MODE
280 };
281 #define MSM_SPKR_PROT_IN_FTM_MODE MSM_SPKR_PROT_IN_FTM_MODE
282 
283 enum msm_spkr_count {
284 	SP_V2_SPKR_1,
285 	SP_V2_SPKR_2,
286 	SP_V2_NUM_MAX_SPKRS
287 };
288 
289 struct audio_cal_info_spk_prot_cfg {
290 	int32_t		r0[SP_V2_NUM_MAX_SPKRS];
291 	int32_t		t0[SP_V2_NUM_MAX_SPKRS];
292 	uint32_t	quick_calib_flag;
293 	uint32_t	mode;
294 	/*
295 	 * 0 - Start spk prot
296 	 * 1 - Start calib
297 	 * 2 - Disable spk prot
298 	 */
299 };
300 
301 struct audio_cal_info_sp_th_vi_ftm_cfg {
302 	uint32_t	wait_time[SP_V2_NUM_MAX_SPKRS];
303 	uint32_t	ftm_time[SP_V2_NUM_MAX_SPKRS];
304 	uint32_t	mode;
305 	/*
306 	 * 0 - normal running mode
307 	 * 1 - Calibration
308 	 * 2 - FTM mode
309 	 */
310 };
311 
312 struct audio_cal_info_sp_ex_vi_ftm_cfg {
313 	uint32_t	wait_time[SP_V2_NUM_MAX_SPKRS];
314 	uint32_t	ftm_time[SP_V2_NUM_MAX_SPKRS];
315 	uint32_t	mode;
316 	/*
317 	 * 0 - normal running mode
318 	 * 2 - FTM mode
319 	 */
320 };
321 
322 struct audio_cal_info_sp_ex_vi_param {
323 	int32_t		freq_q20[SP_V2_NUM_MAX_SPKRS];
324 	int32_t		resis_q24[SP_V2_NUM_MAX_SPKRS];
325 	int32_t		qmct_q24[SP_V2_NUM_MAX_SPKRS];
326 	int32_t		status[SP_V2_NUM_MAX_SPKRS];
327 };
328 
329 struct audio_cal_info_sp_th_vi_param {
330 	int32_t		r_dc_q24[SP_V2_NUM_MAX_SPKRS];
331 	int32_t		temp_q22[SP_V2_NUM_MAX_SPKRS];
332 	int32_t		status[SP_V2_NUM_MAX_SPKRS];
333 };
334 
335 struct audio_cal_info_msm_spk_prot_status {
336 	int32_t		r0[SP_V2_NUM_MAX_SPKRS];
337 	int32_t		status;
338 };
339 
340 struct audio_cal_info_sidetone {
341 	uint16_t	enable;
342 	uint16_t	gain;
343 	int32_t		tx_acdb_id;
344 	int32_t		rx_acdb_id;
345 	int32_t		mid;
346 	int32_t		pid;
347 };
348 
349 struct audio_cal_info_lsm_top {
350 	int32_t		topology;
351 	int32_t		acdb_id;
352 	int32_t		app_type;
353 };
354 
355 
356 struct audio_cal_info_lsm {
357 	int32_t		acdb_id;
358 	/* RX_DEVICE or TX_DEVICE */
359 	int32_t		path;
360 	int32_t		app_type;
361 };
362 
363 struct audio_cal_info_voc_top {
364 	int32_t		topology;
365 	int32_t		acdb_id;
366 };
367 
368 struct audio_cal_info_vocproc {
369 	int32_t		tx_acdb_id;
370 	int32_t		rx_acdb_id;
371 	int32_t		tx_sample_rate;
372 	int32_t		rx_sample_rate;
373 };
374 
375 enum {
376 	DEFAULT_FEATURE_SET,
377 	VOL_BOOST_FEATURE_SET,
378 };
379 
380 struct audio_cal_info_vocvol {
381 	int32_t		tx_acdb_id;
382 	int32_t		rx_acdb_id;
383 	/* DEFUALT_ or VOL_BOOST_FEATURE_SET */
384 	int32_t		feature_set;
385 };
386 
387 struct audio_cal_info_vocdev_cfg {
388 	int32_t		tx_acdb_id;
389 	int32_t		rx_acdb_id;
390 };
391 
392 #define MAX_VOICE_COLUMNS	20
393 
394 union audio_cal_col_na {
395 	uint8_t		val8;
396 	uint16_t	val16;
397 	uint32_t	val32;
398 	uint64_t	val64;
399 } __packed;
400 
401 struct audio_cal_col {
402 	uint32_t		id;
403 	uint32_t		type;
404 	union audio_cal_col_na	na_value;
405 } __packed;
406 
407 struct audio_cal_col_data {
408 	uint32_t		num_columns;
409 	struct audio_cal_col	column[MAX_VOICE_COLUMNS];
410 } __packed;
411 
412 struct audio_cal_info_voc_col {
413 	int32_t				table_id;
414 	int32_t				tx_acdb_id;
415 	int32_t				rx_acdb_id;
416 	struct audio_cal_col_data	data;
417 };
418 
419 /* AUDIO_SET_CALIBRATION & */
420 struct audio_cal_type_basic {
421 	struct audio_cal_type_header	cal_hdr;
422 	struct audio_cal_data		cal_data;
423 };
424 
425 struct audio_cal_basic {
426 	struct audio_cal_header		hdr;
427 	struct audio_cal_type_basic	cal_type;
428 };
429 
430 struct audio_cal_type_adm_top {
431 	struct audio_cal_type_header	cal_hdr;
432 	struct audio_cal_data		cal_data;
433 	struct audio_cal_info_adm_top	cal_info;
434 };
435 
436 struct audio_cal_adm_top {
437 	struct audio_cal_header		hdr;
438 	struct audio_cal_type_adm_top	cal_type;
439 };
440 
441 struct audio_cal_type_metainfo {
442 	struct audio_cal_type_header	cal_hdr;
443 	struct audio_cal_data		cal_data;
444 	struct audio_cal_info_metainfo	cal_info;
445 };
446 
447 struct audio_core_metainfo {
448 	struct audio_cal_header	  hdr;
449 	struct audio_cal_type_metainfo cal_type;
450 };
451 
452 struct audio_cal_type_audproc {
453 	struct audio_cal_type_header	cal_hdr;
454 	struct audio_cal_data		cal_data;
455 	struct audio_cal_info_audproc	cal_info;
456 };
457 
458 struct audio_cal_audproc {
459 	struct audio_cal_header		hdr;
460 	struct audio_cal_type_audproc	cal_type;
461 };
462 
463 struct audio_cal_type_audvol {
464 	struct audio_cal_type_header	cal_hdr;
465 	struct audio_cal_data		cal_data;
466 	struct audio_cal_info_audvol	cal_info;
467 };
468 
469 struct audio_cal_audvol {
470 	struct audio_cal_header		hdr;
471 	struct audio_cal_type_audvol	cal_type;
472 };
473 
474 struct audio_cal_type_asm_top {
475 	struct audio_cal_type_header	cal_hdr;
476 	struct audio_cal_data		cal_data;
477 	struct audio_cal_info_asm_top	cal_info;
478 };
479 
480 struct audio_cal_asm_top {
481 	struct audio_cal_header		hdr;
482 	struct audio_cal_type_asm_top	cal_type;
483 };
484 
485 struct audio_cal_type_audstrm {
486 	struct audio_cal_type_header	cal_hdr;
487 	struct audio_cal_data		cal_data;
488 	struct audio_cal_info_audstrm	cal_info;
489 };
490 
491 struct audio_cal_audstrm {
492 	struct audio_cal_header		hdr;
493 	struct audio_cal_type_audstrm	cal_type;
494 };
495 
496 struct audio_cal_type_afe {
497 	struct audio_cal_type_header	cal_hdr;
498 	struct audio_cal_data		cal_data;
499 	struct audio_cal_info_afe	cal_info;
500 };
501 
502 struct audio_cal_afe {
503 	struct audio_cal_header		hdr;
504 	struct audio_cal_type_afe	cal_type;
505 };
506 
507 struct audio_cal_type_afe_top {
508 	struct audio_cal_type_header	cal_hdr;
509 	struct audio_cal_data		cal_data;
510 	struct audio_cal_info_afe_top	cal_info;
511 };
512 
513 struct audio_cal_afe_top {
514 	struct audio_cal_header		hdr;
515 	struct audio_cal_type_afe_top	cal_type;
516 };
517 
518 struct audio_cal_type_aanc {
519 	struct audio_cal_type_header	cal_hdr;
520 	struct audio_cal_data		cal_data;
521 	struct audio_cal_info_aanc	cal_info;
522 };
523 
524 struct audio_cal_aanc {
525 	struct audio_cal_header		hdr;
526 	struct audio_cal_type_aanc	cal_type;
527 };
528 
529 struct audio_cal_type_fb_spk_prot_cfg {
530 	struct audio_cal_type_header		cal_hdr;
531 	struct audio_cal_data			cal_data;
532 	struct audio_cal_info_spk_prot_cfg	cal_info;
533 };
534 
535 struct audio_cal_fb_spk_prot_cfg {
536 	struct audio_cal_header			hdr;
537 	struct audio_cal_type_fb_spk_prot_cfg	cal_type;
538 };
539 
540 struct audio_cal_type_sp_th_vi_ftm_cfg {
541 	struct audio_cal_type_header		cal_hdr;
542 	struct audio_cal_data			cal_data;
543 	struct audio_cal_info_sp_th_vi_ftm_cfg	cal_info;
544 };
545 
546 struct audio_cal_sp_th_vi_ftm_cfg {
547 	struct audio_cal_header			hdr;
548 	struct audio_cal_type_sp_th_vi_ftm_cfg	cal_type;
549 };
550 
551 struct audio_cal_type_sp_ex_vi_ftm_cfg {
552 	struct audio_cal_type_header		cal_hdr;
553 	struct audio_cal_data			cal_data;
554 	struct audio_cal_info_sp_ex_vi_ftm_cfg	cal_info;
555 };
556 
557 struct audio_cal_sp_ex_vi_ftm_cfg {
558 	struct audio_cal_header			hdr;
559 	struct audio_cal_type_sp_ex_vi_ftm_cfg	cal_type;
560 };
561 struct audio_cal_type_hw_delay {
562 	struct audio_cal_type_header	cal_hdr;
563 	struct audio_cal_data		cal_data;
564 	struct audio_cal_info_hw_delay	cal_info;
565 };
566 
567 struct audio_cal_hw_delay {
568 	struct audio_cal_header		hdr;
569 	struct audio_cal_type_hw_delay	cal_type;
570 };
571 
572 struct audio_cal_type_sidetone {
573 	struct audio_cal_type_header		cal_hdr;
574 	struct audio_cal_data			cal_data;
575 	struct audio_cal_info_sidetone		cal_info;
576 };
577 
578 struct audio_cal_sidetone {
579 	struct audio_cal_header			hdr;
580 	struct audio_cal_type_sidetone		cal_type;
581 };
582 
583 struct audio_cal_type_lsm_top {
584 	struct audio_cal_type_header	cal_hdr;
585 	struct audio_cal_data		cal_data;
586 	struct audio_cal_info_lsm_top	cal_info;
587 };
588 
589 struct audio_cal_lsm_top {
590 	struct audio_cal_header		hdr;
591 	struct audio_cal_type_lsm_top	cal_type;
592 };
593 
594 struct audio_cal_type_lsm {
595 	struct audio_cal_type_header	cal_hdr;
596 	struct audio_cal_data		cal_data;
597 	struct audio_cal_info_lsm	cal_info;
598 };
599 
600 struct audio_cal_lsm {
601 	struct audio_cal_header		hdr;
602 	struct audio_cal_type_lsm	cal_type;
603 };
604 
605 struct audio_cal_type_voc_top {
606 	struct audio_cal_type_header	cal_hdr;
607 	struct audio_cal_data		cal_data;
608 	struct audio_cal_info_voc_top	cal_info;
609 };
610 
611 struct audio_cal_voc_top {
612 	struct audio_cal_header		hdr;
613 	struct audio_cal_type_voc_top	cal_type;
614 };
615 
616 struct audio_cal_type_vocproc {
617 	struct audio_cal_type_header	cal_hdr;
618 	struct audio_cal_data		cal_data;
619 	struct audio_cal_info_vocproc	cal_info;
620 };
621 
622 struct audio_cal_vocproc {
623 	struct audio_cal_header		hdr;
624 	struct audio_cal_type_vocproc	cal_type;
625 };
626 
627 struct audio_cal_type_vocvol {
628 	struct audio_cal_type_header	cal_hdr;
629 	struct audio_cal_data		cal_data;
630 	struct audio_cal_info_vocvol	cal_info;
631 };
632 
633 struct audio_cal_vocvol {
634 	struct audio_cal_header		hdr;
635 	struct audio_cal_type_vocvol	cal_type;
636 };
637 
638 struct audio_cal_type_vocdev_cfg {
639 	struct audio_cal_type_header		cal_hdr;
640 	struct audio_cal_data			cal_data;
641 	struct audio_cal_info_vocdev_cfg	cal_info;
642 };
643 
644 struct audio_cal_vocdev_cfg {
645 	struct audio_cal_header			hdr;
646 	struct audio_cal_type_vocdev_cfg	cal_type;
647 };
648 
649 struct audio_cal_type_voc_col {
650 	struct audio_cal_type_header	cal_hdr;
651 	struct audio_cal_data		cal_data;
652 	struct audio_cal_info_voc_col	cal_info;
653 };
654 
655 struct audio_cal_voc_col {
656 	struct audio_cal_header		hdr;
657 	struct audio_cal_type_voc_col	cal_type;
658 };
659 
660 /* AUDIO_GET_CALIBRATION */
661 struct audio_cal_type_fb_spk_prot_status {
662 	struct audio_cal_type_header			cal_hdr;
663 	struct audio_cal_data				cal_data;
664 	struct audio_cal_info_msm_spk_prot_status	cal_info;
665 };
666 
667 struct audio_cal_fb_spk_prot_status {
668 	struct audio_cal_header				hdr;
669 	struct audio_cal_type_fb_spk_prot_status	cal_type;
670 };
671 
672 struct audio_cal_type_sp_th_vi_param {
673 	struct audio_cal_type_header			cal_hdr;
674 	struct audio_cal_data				cal_data;
675 	struct audio_cal_info_sp_th_vi_param		cal_info;
676 };
677 
678 struct audio_cal_sp_th_vi_param {
679 	struct audio_cal_header				hdr;
680 	struct audio_cal_type_sp_th_vi_param		cal_type;
681 };
682 struct audio_cal_type_sp_ex_vi_param {
683 	struct audio_cal_type_header			cal_hdr;
684 	struct audio_cal_data				cal_data;
685 	struct audio_cal_info_sp_ex_vi_param		cal_info;
686 };
687 
688 struct audio_cal_sp_ex_vi_param {
689 	struct audio_cal_header				hdr;
690 	struct audio_cal_type_sp_ex_vi_param		cal_type;
691 };
692 #endif /* _UAPI_MSM_AUDIO_CALIBRATION_H */
693