• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _MSM_AUDIO_CALIBRATION_H
2 #define _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 	AFE_SIDETONE_IIR_CAL_TYPE,
102 	AFE_LSM_TOPOLOGY_CAL_TYPE,
103 	AFE_LSM_TX_CAL_TYPE,
104 	ADM_LSM_TOPOLOGY_CAL_TYPE,
105 	ADM_LSM_AUDPROC_CAL_TYPE,
106 	ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE,
107 	ADM_AUDPROC_PERSISTENT_CAL_TYPE,
108 	AFE_FB_SPKR_PROT_V4_EX_VI_CAL_TYPE,
109 	MAX_CAL_TYPES,
110 };
111 
112 #define AFE_FB_SPKR_PROT_TH_VI_CAL_TYPE AFE_FB_SPKR_PROT_TH_VI_CAL_TYPE
113 #define AFE_FB_SPKR_PROT_EX_VI_CAL_TYPE AFE_FB_SPKR_PROT_EX_VI_CAL_TYPE
114 #define AFE_FB_SPKR_PROT_V4_EX_VI_CAL_TYPE AFE_FB_SPKR_PROT_V4_EX_VI_CAL_TYPE
115 
116 #define AFE_SIDETONE_IIR_CAL_TYPE AFE_SIDETONE_IIR_CAL_TYPE
117 
118 #define AFE_LSM_TOPOLOGY_CAL_TYPE AFE_LSM_TOPOLOGY_CAL_TYPE
119 #define AFE_LSM_TX_CAL_TYPE AFE_LSM_TX_CAL_TYPE
120 #define ADM_LSM_TOPOLOGY_CAL_TYPE ADM_LSM_TOPOLOGY_CAL_TYPE
121 #define ADM_LSM_AUDPROC_CAL_TYPE ADM_LSM_AUDPROC_CAL_TYPE
122 #define ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE
123 #define ADM_AUDPROC_PERSISTENT_CAL_TYPE ADM_AUDPROC_PERSISTENT_CAL_TYPE
124 #define LSM_CAL_TYPES
125 
126 #define TOPOLOGY_SPECIFIC_CHANNEL_INFO
127 #define MSM_SPKR_PROT_SPV3
128 #define MSM_SPKR_PROT_SPV4
129 
130 enum {
131 	VERSION_0_0,
132 };
133 
134 enum {
135 	PER_VOCODER_CAL_BIT_MASK = 0x10000,
136 };
137 
138 #define MAX_IOCTL_CMD_SIZE	512
139 
140 /* common structures */
141 
142 struct audio_cal_header {
143 	int32_t		data_size;
144 	int32_t		version;
145 	int32_t		cal_type;
146 	int32_t		cal_type_size;
147 };
148 
149 struct audio_cal_type_header {
150 	int32_t		version;
151 	int32_t		buffer_number;
152 };
153 
154 struct audio_cal_data {
155 	/* Size of cal data at mem_handle allocation or at vaddr */
156 	int32_t		cal_size;
157 	/* If mem_handle if shared memory is used*/
158 	int32_t		mem_handle;
159 	/* size of virtual memory if shared memory not used */
160 };
161 
162 
163 /* AUDIO_ALLOCATE_CALIBRATION */
164 struct audio_cal_type_alloc {
165 	struct audio_cal_type_header	cal_hdr;
166 	struct audio_cal_data		cal_data;
167 };
168 
169 struct audio_cal_alloc {
170 	struct audio_cal_header		hdr;
171 	struct audio_cal_type_alloc	cal_type;
172 };
173 
174 
175 /* AUDIO_DEALLOCATE_CALIBRATION */
176 struct audio_cal_type_dealloc {
177 	struct audio_cal_type_header	cal_hdr;
178 	struct audio_cal_data		cal_data;
179 };
180 
181 struct audio_cal_dealloc {
182 	struct audio_cal_header		hdr;
183 	struct audio_cal_type_dealloc	cal_type;
184 };
185 
186 
187 /* AUDIO_PREPARE_CALIBRATION */
188 struct audio_cal_type_prepare {
189 	struct audio_cal_type_header	cal_hdr;
190 	struct audio_cal_data		cal_data;
191 };
192 
193 struct audio_cal_prepare {
194 	struct audio_cal_header		hdr;
195 	struct audio_cal_type_prepare	cal_type;
196 };
197 
198 
199 /* AUDIO_POST_CALIBRATION */
200 struct audio_cal_type_post {
201 	struct audio_cal_type_header	cal_hdr;
202 	struct audio_cal_data		cal_data;
203 };
204 
205 struct audio_cal_post {
206 	struct audio_cal_header		hdr;
207 	struct audio_cal_type_post	cal_type;
208 };
209 
210 /*AUDIO_CORE_META_INFO */
211 
212 struct audio_cal_info_metainfo {
213 	uint32_t nKey;
214 };
215 
216 /* Cal info types */
217 enum {
218 	RX_DEVICE,
219 	TX_DEVICE,
220 	MAX_PATH_TYPE
221 };
222 
223 struct audio_cal_info_adm_top {
224 	int32_t		topology;
225 	int32_t		acdb_id;
226 	/* RX_DEVICE or TX_DEVICE */
227 	int32_t		path;
228 	int32_t		app_type;
229 	int32_t		sample_rate;
230 };
231 
232 struct audio_cal_info_audproc {
233 	int32_t		acdb_id;
234 	/* RX_DEVICE or TX_DEVICE */
235 	int32_t		path;
236 	int32_t		app_type;
237 	int32_t		sample_rate;
238 };
239 
240 struct audio_cal_info_audvol {
241 	int32_t		acdb_id;
242 	/* RX_DEVICE or TX_DEVICE */
243 	int32_t		path;
244 	int32_t		app_type;
245 	int32_t		vol_index;
246 };
247 
248 struct audio_cal_info_afe {
249 	int32_t		acdb_id;
250 	/* RX_DEVICE or TX_DEVICE */
251 	int32_t		path;
252 	int32_t		sample_rate;
253 };
254 
255 struct audio_cal_info_afe_top {
256 	int32_t		topology;
257 	int32_t		acdb_id;
258 	/* RX_DEVICE or TX_DEVICE */
259 	int32_t		path;
260 	int32_t		sample_rate;
261 };
262 
263 struct audio_cal_info_asm_top {
264 	int32_t		topology;
265 	int32_t		app_type;
266 };
267 
268 struct audio_cal_info_audstrm {
269 	int32_t		app_type;
270 };
271 
272 struct audio_cal_info_aanc {
273 	int32_t		acdb_id;
274 };
275 
276 #define MAX_HW_DELAY_ENTRIES	25
277 
278 struct audio_cal_hw_delay_entry {
279 	uint32_t sample_rate;
280 	uint32_t delay_usec;
281 };
282 
283 struct audio_cal_hw_delay_data {
284 	uint32_t				num_entries;
285 	struct audio_cal_hw_delay_entry		entry[MAX_HW_DELAY_ENTRIES];
286 };
287 
288 struct audio_cal_info_hw_delay {
289 	int32_t					acdb_id;
290 	/* RX_DEVICE or TX_DEVICE */
291 	int32_t					path;
292 	int32_t					property_type;
293 	struct audio_cal_hw_delay_data		data;
294 };
295 
296 enum msm_spkr_prot_states {
297 	MSM_SPKR_PROT_CALIBRATED,
298 	MSM_SPKR_PROT_CALIBRATION_IN_PROGRESS,
299 	MSM_SPKR_PROT_DISABLED,
300 	MSM_SPKR_PROT_NOT_CALIBRATED,
301 	MSM_SPKR_PROT_PRE_CALIBRATED,
302 	MSM_SPKR_PROT_IN_FTM_MODE,
303 	MSM_SPKR_PROT_IN_V_VALI_MODE
304 };
305 #define MSM_SPKR_PROT_IN_FTM_MODE MSM_SPKR_PROT_IN_FTM_MODE
306 #define MSM_SPKR_PROT_IN_V_VALI_MODE MSM_SPKR_PROT_IN_V_VALI_MODE
307 
308 enum msm_spkr_count {
309 	SP_V2_SPKR_1,
310 	SP_V2_SPKR_2,
311 	SP_V2_NUM_MAX_SPKRS
312 };
313 
314 struct audio_cal_info_spk_prot_cfg {
315 	int32_t		r0[SP_V2_NUM_MAX_SPKRS];
316 	int32_t		t0[SP_V2_NUM_MAX_SPKRS];
317 	uint32_t	quick_calib_flag;
318 	uint32_t	mode;
319 	/*
320 	 * 0 - Start spk prot
321 	 * 1 - Start calib
322 	 * 2 - Disable spk prot
323 	 */
324 #ifdef MSM_SPKR_PROT_SPV3
325 	uint32_t	sp_version;
326 	int32_t	limiter_th[SP_V2_NUM_MAX_SPKRS];
327 #endif
328 };
329 
330 struct audio_cal_info_sp_th_vi_ftm_cfg {
331 	/*
332 	 * mode should be first param, add new params later to this.
333 	 * we use this mode(first 4 bytes) to differentiate
334 	 * whether it is TH_VI FTM or v-validation.
335 	 */
336 	uint32_t	mode;
337 	/*
338 	 * 0 - normal running mode
339 	 * 1 - Calibration
340 	 * 2 - FTM mode
341 	 */
342 	uint32_t	wait_time[SP_V2_NUM_MAX_SPKRS];
343 	uint32_t	ftm_time[SP_V2_NUM_MAX_SPKRS];
344 };
345 
346 struct audio_cal_info_sp_th_vi_v_vali_cfg {
347 	/*
348 	 * mode should be first param, add new params later to this.
349 	 * we use this mode(first 4 bytes) to differentiate
350 	 * whether it is TH_VI FTM or v-validation.
351 	 */
352 	uint32_t	mode;
353 	/*
354 	 * 0 - normal running mode
355 	 * 1 - Calibration
356 	 * 2 - FTM mode
357 	 * 3 - V-Validation mode
358 	 */
359 	uint32_t	wait_time[SP_V2_NUM_MAX_SPKRS];
360 	uint32_t	vali_time[SP_V2_NUM_MAX_SPKRS];
361 
362 };
363 
364 struct audio_cal_info_sp_ex_vi_ftm_cfg {
365 	uint32_t	wait_time[SP_V2_NUM_MAX_SPKRS];
366 	uint32_t	ftm_time[SP_V2_NUM_MAX_SPKRS];
367 	uint32_t	mode;
368 	/*
369 	 * 0 - normal running mode
370 	 * 2 - FTM mode
371 	 */
372 };
373 
374 struct audio_cal_info_sp_ex_vi_param {
375 	int32_t		freq_q20[SP_V2_NUM_MAX_SPKRS];
376 	int32_t		resis_q24[SP_V2_NUM_MAX_SPKRS];
377 	int32_t		qmct_q24[SP_V2_NUM_MAX_SPKRS];
378 	int32_t		status[SP_V2_NUM_MAX_SPKRS];
379 };
380 
381 struct audio_cal_info_sp_v4_ex_vi_param {
382 	int32_t		ftm_re_q24[SP_V2_NUM_MAX_SPKRS];
383 	int32_t		ftm_Bl_q24[SP_V2_NUM_MAX_SPKRS];
384 	int32_t		ftm_Rms_q24[SP_V2_NUM_MAX_SPKRS];
385 	int32_t		ftm_Kms_q24[SP_V2_NUM_MAX_SPKRS];
386 	int32_t		ftm_freq_q20[SP_V2_NUM_MAX_SPKRS];
387 	int32_t		ftm_Qms_q24[SP_V2_NUM_MAX_SPKRS];
388 	uint32_t	status[SP_V2_NUM_MAX_SPKRS];
389 };
390 
391 struct audio_cal_info_sp_th_vi_param {
392 	/*
393 	 * mode should be first param, add new params later to this.
394 	 * we use this mode(first 4 bytes) to differentiate
395 	 * whether it is TH_VI FTM or v-validation.
396 	 */
397 	uint32_t	mode;
398 	int32_t		r_dc_q24[SP_V2_NUM_MAX_SPKRS];
399 	int32_t		temp_q22[SP_V2_NUM_MAX_SPKRS];
400 	int32_t		status[SP_V2_NUM_MAX_SPKRS];
401 };
402 
403 struct audio_cal_info_sp_th_vi_v_vali_param {
404 	/*
405 	 * mode should be first param, add new params later to this.
406 	 * we use this mode(first 4 bytes) to differentiate
407 	 * whether it is TH_VI FTM or v-validation.
408 	 */
409 	uint32_t	mode;
410 	uint32_t	vrms_q24[SP_V2_NUM_MAX_SPKRS];
411 	int32_t		status[SP_V2_NUM_MAX_SPKRS];
412 };
413 
414 struct audio_cal_info_msm_spk_prot_status {
415 	int32_t		r0[SP_V2_NUM_MAX_SPKRS];
416 	int32_t		status;
417 };
418 
419 struct audio_cal_info_sidetone {
420 	uint16_t	enable;
421 	uint16_t	gain;
422 	int32_t		tx_acdb_id;
423 	int32_t		rx_acdb_id;
424 	int32_t		mid;
425 	int32_t		pid;
426 };
427 
428 #define MAX_SIDETONE_IIR_DATA_SIZE   224
429 #define MAX_NO_IIR_FILTER_STAGE      10
430 
431 struct audio_cal_info_sidetone_iir {
432 	uint16_t	iir_enable;
433 	uint16_t	num_biquad_stages;
434 	uint16_t	pregain;
435 	int32_t	        tx_acdb_id;
436 	int32_t	        rx_acdb_id;
437 	int32_t	        mid;
438 	int32_t	        pid;
439 	uint8_t	        iir_config[MAX_SIDETONE_IIR_DATA_SIZE];
440 };
441 struct audio_cal_info_lsm_top {
442 	int32_t		topology;
443 	int32_t		acdb_id;
444 	int32_t		app_type;
445 };
446 
447 
448 struct audio_cal_info_lsm {
449 	int32_t		acdb_id;
450 	/* RX_DEVICE or TX_DEVICE */
451 	int32_t		path;
452 	int32_t		app_type;
453 };
454 
455 #define VSS_NUM_CHANNELS_MAX	32
456 
457 struct audio_cal_info_voc_top {
458 	int32_t		topology;
459 	int32_t		acdb_id;
460 #ifdef TOPOLOGY_SPECIFIC_CHANNEL_INFO
461 	uint32_t	num_channels;
462 	uint8_t		channel_mapping[VSS_NUM_CHANNELS_MAX];
463 #endif
464 };
465 
466 struct audio_cal_info_vocproc {
467 	int32_t		tx_acdb_id;
468 	int32_t		rx_acdb_id;
469 	int32_t		tx_sample_rate;
470 	int32_t		rx_sample_rate;
471 };
472 
473 enum {
474 	DEFAULT_FEATURE_SET,
475 	VOL_BOOST_FEATURE_SET,
476 };
477 
478 struct audio_cal_info_vocvol {
479 	int32_t		tx_acdb_id;
480 	int32_t		rx_acdb_id;
481 	/* DEFAULT_ or VOL_BOOST_FEATURE_SET */
482 	int32_t		feature_set;
483 };
484 
485 struct audio_cal_info_vocdev_cfg {
486 	int32_t		tx_acdb_id;
487 	int32_t		rx_acdb_id;
488 };
489 
490 #define MAX_VOICE_COLUMNS	20
491 
492 union audio_cal_col_na {
493 	uint8_t		val8;
494 	uint16_t	val16;
495 	uint32_t	val32;
496 	uint64_t	val64;
497 } __attribute__((packed));
498 
499 struct audio_cal_col {
500 	uint32_t		id;
501 	uint32_t		type;
502 	union audio_cal_col_na	na_value;
503 } __attribute__((packed));
504 
505 struct audio_cal_col_data {
506 	uint32_t		num_columns;
507 	struct audio_cal_col	column[MAX_VOICE_COLUMNS];
508 } __attribute__((packed));
509 
510 struct audio_cal_info_voc_col {
511 	int32_t				table_id;
512 	int32_t				tx_acdb_id;
513 	int32_t				rx_acdb_id;
514 	struct audio_cal_col_data	data;
515 };
516 
517 /* AUDIO_SET_CALIBRATION & */
518 struct audio_cal_type_basic {
519 	struct audio_cal_type_header	cal_hdr;
520 	struct audio_cal_data		cal_data;
521 };
522 
523 struct audio_cal_basic {
524 	struct audio_cal_header		hdr;
525 	struct audio_cal_type_basic	cal_type;
526 };
527 
528 struct audio_cal_type_adm_top {
529 	struct audio_cal_type_header	cal_hdr;
530 	struct audio_cal_data		cal_data;
531 	struct audio_cal_info_adm_top	cal_info;
532 };
533 
534 struct audio_cal_adm_top {
535 	struct audio_cal_header		hdr;
536 	struct audio_cal_type_adm_top	cal_type;
537 };
538 
539 struct audio_cal_type_metainfo {
540 	struct audio_cal_type_header	cal_hdr;
541 	struct audio_cal_data		cal_data;
542 	struct audio_cal_info_metainfo	cal_info;
543 };
544 
545 struct audio_core_metainfo {
546 	struct audio_cal_header	  hdr;
547 	struct audio_cal_type_metainfo cal_type;
548 };
549 
550 struct audio_cal_type_audproc {
551 	struct audio_cal_type_header	cal_hdr;
552 	struct audio_cal_data		cal_data;
553 	struct audio_cal_info_audproc	cal_info;
554 };
555 
556 struct audio_cal_audproc {
557 	struct audio_cal_header		hdr;
558 	struct audio_cal_type_audproc	cal_type;
559 };
560 
561 struct audio_cal_type_audvol {
562 	struct audio_cal_type_header	cal_hdr;
563 	struct audio_cal_data		cal_data;
564 	struct audio_cal_info_audvol	cal_info;
565 };
566 
567 struct audio_cal_audvol {
568 	struct audio_cal_header		hdr;
569 	struct audio_cal_type_audvol	cal_type;
570 };
571 
572 struct audio_cal_type_asm_top {
573 	struct audio_cal_type_header	cal_hdr;
574 	struct audio_cal_data		cal_data;
575 	struct audio_cal_info_asm_top	cal_info;
576 };
577 
578 struct audio_cal_asm_top {
579 	struct audio_cal_header		hdr;
580 	struct audio_cal_type_asm_top	cal_type;
581 };
582 
583 struct audio_cal_type_audstrm {
584 	struct audio_cal_type_header	cal_hdr;
585 	struct audio_cal_data		cal_data;
586 	struct audio_cal_info_audstrm	cal_info;
587 };
588 
589 struct audio_cal_audstrm {
590 	struct audio_cal_header		hdr;
591 	struct audio_cal_type_audstrm	cal_type;
592 };
593 
594 struct audio_cal_type_afe {
595 	struct audio_cal_type_header	cal_hdr;
596 	struct audio_cal_data		cal_data;
597 	struct audio_cal_info_afe	cal_info;
598 };
599 
600 struct audio_cal_afe {
601 	struct audio_cal_header		hdr;
602 	struct audio_cal_type_afe	cal_type;
603 };
604 
605 struct audio_cal_type_afe_top {
606 	struct audio_cal_type_header	cal_hdr;
607 	struct audio_cal_data		cal_data;
608 	struct audio_cal_info_afe_top	cal_info;
609 };
610 
611 struct audio_cal_afe_top {
612 	struct audio_cal_header		hdr;
613 	struct audio_cal_type_afe_top	cal_type;
614 };
615 
616 struct audio_cal_type_aanc {
617 	struct audio_cal_type_header	cal_hdr;
618 	struct audio_cal_data		cal_data;
619 	struct audio_cal_info_aanc	cal_info;
620 };
621 
622 struct audio_cal_aanc {
623 	struct audio_cal_header		hdr;
624 	struct audio_cal_type_aanc	cal_type;
625 };
626 
627 struct audio_cal_type_fb_spk_prot_cfg {
628 	struct audio_cal_type_header		cal_hdr;
629 	struct audio_cal_data			cal_data;
630 	struct audio_cal_info_spk_prot_cfg	cal_info;
631 };
632 
633 struct audio_cal_fb_spk_prot_cfg {
634 	struct audio_cal_header			hdr;
635 	struct audio_cal_type_fb_spk_prot_cfg	cal_type;
636 };
637 
638 struct audio_cal_type_sp_th_vi_ftm_cfg {
639 	struct audio_cal_type_header		cal_hdr;
640 	struct audio_cal_data			cal_data;
641 	struct audio_cal_info_sp_th_vi_ftm_cfg	cal_info;
642 };
643 
644 struct audio_cal_sp_th_vi_ftm_cfg {
645 	struct audio_cal_header			hdr;
646 	struct audio_cal_type_sp_th_vi_ftm_cfg	cal_type;
647 };
648 
649 struct audio_cal_type_sp_th_vi_v_vali_cfg {
650 	struct audio_cal_type_header		cal_hdr;
651 	struct audio_cal_data			cal_data;
652 	struct audio_cal_info_sp_th_vi_v_vali_cfg	cal_info;
653 };
654 
655 struct audio_cal_sp_th_vi_v_vali_cfg {
656 	struct audio_cal_header			hdr;
657 	struct audio_cal_type_sp_th_vi_v_vali_cfg	cal_type;
658 };
659 
660 struct audio_cal_type_sp_ex_vi_ftm_cfg {
661 	struct audio_cal_type_header		cal_hdr;
662 	struct audio_cal_data			cal_data;
663 	struct audio_cal_info_sp_ex_vi_ftm_cfg	cal_info;
664 };
665 
666 struct audio_cal_sp_ex_vi_ftm_cfg {
667 	struct audio_cal_header			hdr;
668 	struct audio_cal_type_sp_ex_vi_ftm_cfg	cal_type;
669 };
670 struct audio_cal_type_hw_delay {
671 	struct audio_cal_type_header	cal_hdr;
672 	struct audio_cal_data		cal_data;
673 	struct audio_cal_info_hw_delay	cal_info;
674 };
675 
676 struct audio_cal_hw_delay {
677 	struct audio_cal_header		hdr;
678 	struct audio_cal_type_hw_delay	cal_type;
679 };
680 
681 struct audio_cal_type_sidetone {
682 	struct audio_cal_type_header		cal_hdr;
683 	struct audio_cal_data			cal_data;
684 	struct audio_cal_info_sidetone		cal_info;
685 };
686 
687 struct audio_cal_sidetone {
688 	struct audio_cal_header			hdr;
689 	struct audio_cal_type_sidetone		cal_type;
690 };
691 
692 struct audio_cal_type_sidetone_iir {
693 	struct audio_cal_type_header	   cal_hdr;
694 	struct audio_cal_data		   cal_data;
695 	struct audio_cal_info_sidetone_iir cal_info;
696 };
697 
698 struct audio_cal_sidetone_iir {
699 	struct audio_cal_header		   hdr;
700 	struct audio_cal_type_sidetone_iir cal_type;
701 };
702 
703 struct audio_cal_type_lsm_top {
704 	struct audio_cal_type_header	cal_hdr;
705 	struct audio_cal_data		cal_data;
706 	struct audio_cal_info_lsm_top	cal_info;
707 };
708 
709 struct audio_cal_lsm_top {
710 	struct audio_cal_header		hdr;
711 	struct audio_cal_type_lsm_top	cal_type;
712 };
713 
714 struct audio_cal_type_lsm {
715 	struct audio_cal_type_header	cal_hdr;
716 	struct audio_cal_data		cal_data;
717 	struct audio_cal_info_lsm	cal_info;
718 };
719 
720 struct audio_cal_lsm {
721 	struct audio_cal_header		hdr;
722 	struct audio_cal_type_lsm	cal_type;
723 };
724 
725 struct audio_cal_type_voc_top {
726 	struct audio_cal_type_header	cal_hdr;
727 	struct audio_cal_data		cal_data;
728 	struct audio_cal_info_voc_top	cal_info;
729 };
730 
731 struct audio_cal_voc_top {
732 	struct audio_cal_header		hdr;
733 	struct audio_cal_type_voc_top	cal_type;
734 };
735 
736 struct audio_cal_type_vocproc {
737 	struct audio_cal_type_header	cal_hdr;
738 	struct audio_cal_data		cal_data;
739 	struct audio_cal_info_vocproc	cal_info;
740 };
741 
742 struct audio_cal_vocproc {
743 	struct audio_cal_header		hdr;
744 	struct audio_cal_type_vocproc	cal_type;
745 };
746 
747 struct audio_cal_type_vocvol {
748 	struct audio_cal_type_header	cal_hdr;
749 	struct audio_cal_data		cal_data;
750 	struct audio_cal_info_vocvol	cal_info;
751 };
752 
753 struct audio_cal_vocvol {
754 	struct audio_cal_header		hdr;
755 	struct audio_cal_type_vocvol	cal_type;
756 };
757 
758 struct audio_cal_type_vocdev_cfg {
759 	struct audio_cal_type_header		cal_hdr;
760 	struct audio_cal_data			cal_data;
761 	struct audio_cal_info_vocdev_cfg	cal_info;
762 };
763 
764 struct audio_cal_vocdev_cfg {
765 	struct audio_cal_header			hdr;
766 	struct audio_cal_type_vocdev_cfg	cal_type;
767 };
768 
769 struct audio_cal_type_voc_col {
770 	struct audio_cal_type_header	cal_hdr;
771 	struct audio_cal_data		cal_data;
772 	struct audio_cal_info_voc_col	cal_info;
773 };
774 
775 struct audio_cal_voc_col {
776 	struct audio_cal_header		hdr;
777 	struct audio_cal_type_voc_col	cal_type;
778 };
779 
780 /* AUDIO_GET_CALIBRATION */
781 struct audio_cal_type_fb_spk_prot_status {
782 	struct audio_cal_type_header			cal_hdr;
783 	struct audio_cal_data				cal_data;
784 	struct audio_cal_info_msm_spk_prot_status	cal_info;
785 };
786 
787 struct audio_cal_fb_spk_prot_status {
788 	struct audio_cal_header				hdr;
789 	struct audio_cal_type_fb_spk_prot_status	cal_type;
790 };
791 
792 struct audio_cal_type_sp_th_vi_param {
793 	struct audio_cal_type_header			cal_hdr;
794 	struct audio_cal_data				cal_data;
795 	struct audio_cal_info_sp_th_vi_param		cal_info;
796 };
797 
798 struct audio_cal_sp_th_vi_param {
799 	struct audio_cal_header				hdr;
800 	struct audio_cal_type_sp_th_vi_param		cal_type;
801 };
802 
803 struct audio_cal_type_sp_th_vi_v_vali_param {
804 	struct audio_cal_type_header			cal_hdr;
805 	struct audio_cal_data				cal_data;
806 	struct audio_cal_info_sp_th_vi_v_vali_param	cal_info;
807 };
808 
809 struct audio_cal_sp_th_vi_v_vali_param {
810 	struct audio_cal_header				hdr;
811 	struct audio_cal_type_sp_th_vi_v_vali_param	cal_type;
812 };
813 
814 struct audio_cal_type_sp_ex_vi_param {
815 	struct audio_cal_type_header			cal_hdr;
816 	struct audio_cal_data				cal_data;
817 	struct audio_cal_info_sp_ex_vi_param		cal_info;
818 };
819 
820 struct audio_cal_sp_ex_vi_param {
821 	struct audio_cal_header				hdr;
822 	struct audio_cal_type_sp_ex_vi_param		cal_type;
823 };
824 
825 struct audio_cal_type_sp_v4_ex_vi_param {
826 	struct audio_cal_type_header			cal_hdr;
827 	struct audio_cal_data				cal_data;
828 	struct audio_cal_info_sp_v4_ex_vi_param		cal_info;
829 };
830 
831 struct audio_cal_sp_v4_ex_vi_param {
832 	struct audio_cal_header				hdr;
833 	struct audio_cal_type_sp_v4_ex_vi_param		cal_type;
834 };
835 
836 #endif /* _MSM_AUDIO_CALIBRATION_H */
837