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