From 4c353a4209175ffbb4a21e5f2e642c2e63cdd35b Mon Sep 17 00:00:00 2001 From: Walter Yang Date: Mon, 14 Jul 2014 14:36:04 -0700 Subject: [PATCH] ASoC: msm: qdsp6v2: Update calibration driver and voice driver Update calibration driver and voice driver for per vocoder cal. Update the voice-related cal types. Add new enumerate. Change-Id: I10c60724c2f1e44f948d6d2ee8b19cd32c2adc40 Signed-off-by: Walter Yang --- include/sound/audio_cal_utils.h | 2 ++ include/uapi/linux/msm_audio_calibration.h | 18 +++++++---- sound/soc/msm/qdsp6v2/audio_cal_utils.c | 37 ++++++++++++---------- sound/soc/msm/qdsp6v2/q6voice.c | 30 +++++++++--------- 4 files changed, 50 insertions(+), 37 deletions(-) diff --git a/include/sound/audio_cal_utils.h b/include/sound/audio_cal_utils.h index f836fe139d05..b28b3bdf4e83 100644 --- a/include/sound/audio_cal_utils.h +++ b/include/sound/audio_cal_utils.h @@ -97,4 +97,6 @@ struct cal_block_data *cal_utils_get_only_cal_block( size_t get_cal_info_size(int32_t cal_type); size_t get_user_cal_type_size(int32_t cal_type); +/* Version of the cal type*/ +int32_t cal_utils_get_cal_type_version(void *cal_type_data); #endif diff --git a/include/uapi/linux/msm_audio_calibration.h b/include/uapi/linux/msm_audio_calibration.h index 95b1e5f16b5e..e62f59dfead2 100644 --- a/include/uapi/linux/msm_audio_calibration.h +++ b/include/uapi/linux/msm_audio_calibration.h @@ -47,13 +47,13 @@ enum { CVP_VOC_RX_TOPOLOGY_CAL_TYPE = 0, CVP_VOC_TX_TOPOLOGY_CAL_TYPE, - CVP_VOCPROC_CAL_TYPE, - CVP_VOCVOL_CAL_TYPE, - CVS_VOCSTRM_CAL_TYPE, + CVP_VOCPROC_STATIC_CAL_TYPE, + CVP_VOCPROC_DYNAMIC_CAL_TYPE, + CVS_VOCSTRM_STATIC_CAL_TYPE, CVP_VOCDEV_CFG_CAL_TYPE, - CVP_VOCPROC_COL_CAL_TYPE, - CVP_VOCVOL_COL_CAL_TYPE, - CVS_VOCSTRM_COL_CAL_TYPE, + CVP_VOCPROC_STATIC_COL_CAL_TYPE, + CVP_VOCPROC_DYNAMIC_COL_CAL_TYPE, + CVS_VOCSTRM_STATIC_COL_CAL_TYPE, ADM_TOPOLOGY_CAL_TYPE, ADM_CUST_TOPOLOGY_CAL_TYPE, @@ -93,6 +93,10 @@ enum { VERSION_0_0, }; +enum { + PER_VOCODER_CAL_BIT_MASK = 0x10000, +}; + #define MAX_IOCTL_CMD_SIZE 512 /* common structures */ @@ -324,6 +328,8 @@ struct audio_cal_col_data { struct audio_cal_info_voc_col { int32_t table_id; + int32_t tx_acdb_id; + int32_t rx_acdb_id; struct audio_cal_col_data data; }; diff --git a/sound/soc/msm/qdsp6v2/audio_cal_utils.c b/sound/soc/msm/qdsp6v2/audio_cal_utils.c index 1e3927d5561d..845013bfd838 100644 --- a/sound/soc/msm/qdsp6v2/audio_cal_utils.c +++ b/sound/soc/msm/qdsp6v2/audio_cal_utils.c @@ -30,25 +30,25 @@ size_t get_cal_info_size(int32_t cal_type) case CVP_VOC_TX_TOPOLOGY_CAL_TYPE: size = sizeof(struct audio_cal_info_voc_top); break; - case CVP_VOCPROC_CAL_TYPE: + case CVP_VOCPROC_STATIC_CAL_TYPE: size = sizeof(struct audio_cal_info_vocproc); break; - case CVP_VOCVOL_CAL_TYPE: + case CVP_VOCPROC_DYNAMIC_CAL_TYPE: size = sizeof(struct audio_cal_info_vocvol); break; - case CVS_VOCSTRM_CAL_TYPE: + case CVS_VOCSTRM_STATIC_CAL_TYPE: size = 0; break; case CVP_VOCDEV_CFG_CAL_TYPE: size = sizeof(struct audio_cal_info_vocdev_cfg); break; - case CVP_VOCPROC_COL_CAL_TYPE: + case CVP_VOCPROC_STATIC_COL_CAL_TYPE: size = sizeof(struct audio_cal_info_voc_col); break; - case CVP_VOCVOL_COL_CAL_TYPE: + case CVP_VOCPROC_DYNAMIC_COL_CAL_TYPE: size = sizeof(struct audio_cal_info_voc_col); break; - case CVS_VOCSTRM_COL_CAL_TYPE: + case CVS_VOCSTRM_STATIC_COL_CAL_TYPE: size = sizeof(struct audio_cal_info_voc_col); break; case ADM_TOPOLOGY_CAL_TYPE: @@ -141,25 +141,21 @@ size_t get_user_cal_type_size(int32_t cal_type) case CVP_VOC_TX_TOPOLOGY_CAL_TYPE: size = sizeof(struct audio_cal_type_voc_top); break; - case CVP_VOCPROC_CAL_TYPE: + case CVP_VOCPROC_STATIC_CAL_TYPE: size = sizeof(struct audio_cal_type_vocproc); break; - case CVP_VOCVOL_CAL_TYPE: + case CVP_VOCPROC_DYNAMIC_CAL_TYPE: size = sizeof(struct audio_cal_type_vocvol); break; - case CVS_VOCSTRM_CAL_TYPE: + case CVS_VOCSTRM_STATIC_CAL_TYPE: size = sizeof(struct audio_cal_type_basic); break; case CVP_VOCDEV_CFG_CAL_TYPE: size = sizeof(struct audio_cal_type_vocdev_cfg); break; - case CVP_VOCPROC_COL_CAL_TYPE: - size = sizeof(struct audio_cal_type_voc_col); - break; - case CVP_VOCVOL_COL_CAL_TYPE: - size = sizeof(struct audio_cal_type_voc_col); - break; - case CVS_VOCSTRM_COL_CAL_TYPE: + case CVP_VOCPROC_STATIC_COL_CAL_TYPE: + case CVP_VOCPROC_DYNAMIC_COL_CAL_TYPE: + case CVS_VOCSTRM_STATIC_COL_CAL_TYPE: size = sizeof(struct audio_cal_type_voc_col); break; case ADM_TOPOLOGY_CAL_TYPE: @@ -241,6 +237,15 @@ size_t get_user_cal_type_size(int32_t cal_type) return size; } +int32_t cal_utils_get_cal_type_version(void *cal_type_data) +{ + struct audio_cal_type_basic *data = NULL; + + data = (struct audio_cal_type_basic *)cal_type_data; + + return data->cal_hdr.version; +} + static struct cal_type_data *create_cal_type_data( struct cal_type_info *info) { diff --git a/sound/soc/msm/qdsp6v2/q6voice.c b/sound/soc/msm/qdsp6v2/q6voice.c index 362ed906dda6..8b7c4fa7d373 100644 --- a/sound/soc/msm/qdsp6v2/q6voice.c +++ b/sound/soc/msm/qdsp6v2/q6voice.c @@ -2946,13 +2946,13 @@ static int voice_unmap_cal_memory(int32_t cal_type, result = result2; } - if (cal_type == CVP_VOCVOL_CAL_TYPE) + if (cal_type == CVP_VOCPROC_DYNAMIC_CAL_TYPE) voice_send_cvp_deregister_vol_cal_cmd(v); - else if (cal_type == CVP_VOCPROC_CAL_TYPE) + else if (cal_type == CVP_VOCPROC_STATIC_CAL_TYPE) voice_send_cvp_deregister_cal_cmd(v); else if (cal_type == CVP_VOCDEV_CFG_CAL_TYPE) voice_send_cvp_deregister_dev_cfg_cmd(v); - else if (cal_type == CVS_VOCSTRM_CAL_TYPE) + else if (cal_type == CVS_VOCSTRM_STATIC_CAL_TYPE) voice_send_cvs_deregister_cal_cmd(v); else pr_err("%s: Invalid cal type %d!\n", @@ -6525,25 +6525,25 @@ static int get_cal_type_index(int32_t cal_type) case CVP_VOC_TX_TOPOLOGY_CAL_TYPE: ret = CVP_VOC_TX_TOPOLOGY_CAL; break; - case CVP_VOCPROC_CAL_TYPE: + case CVP_VOCPROC_STATIC_CAL_TYPE: ret = CVP_VOCPROC_CAL; break; - case CVP_VOCVOL_CAL_TYPE: + case CVP_VOCPROC_DYNAMIC_CAL_TYPE: ret = CVP_VOCVOL_CAL; break; - case CVS_VOCSTRM_CAL_TYPE: + case CVS_VOCSTRM_STATIC_CAL_TYPE: ret = CVS_VOCSTRM_CAL; break; case CVP_VOCDEV_CFG_CAL_TYPE: ret = CVP_VOCDEV_CFG_CAL; break; - case CVP_VOCPROC_COL_CAL_TYPE: + case CVP_VOCPROC_STATIC_COL_CAL_TYPE: ret = CVP_VOCPROC_COL_CAL; break; - case CVP_VOCVOL_COL_CAL_TYPE: + case CVP_VOCPROC_DYNAMIC_COL_CAL_TYPE: ret = CVP_VOCVOL_COL_CAL; break; - case CVS_VOCSTRM_COL_CAL_TYPE: + case CVS_VOCSTRM_STATIC_COL_CAL_TYPE: ret = CVS_VOCSTRM_COL_CAL; break; case VOICE_RTAC_INFO_CAL_TYPE: @@ -6676,13 +6676,13 @@ static int voice_init_cal_data(void) {NULL, NULL, NULL, voice_set_cal, NULL, NULL} }, {NULL, NULL, cal_utils_match_buf_num} }, - {{CVP_VOCPROC_CAL_TYPE, + {{CVP_VOCPROC_STATIC_CAL_TYPE, {voice_alloc_cal, voice_dealloc_cal, NULL, voice_set_cal, NULL, NULL} }, {NULL, voice_unmap_cal_memory, cal_utils_match_buf_num} }, - {{CVP_VOCVOL_CAL_TYPE, + {{CVP_VOCPROC_DYNAMIC_CAL_TYPE, {voice_alloc_cal, voice_dealloc_cal, voice_prepare_volume_boost, voice_set_cal, NULL, @@ -6696,21 +6696,21 @@ static int voice_init_cal_data(void) {NULL, voice_unmap_cal_memory, cal_utils_match_buf_num} }, - {{CVP_VOCPROC_COL_CAL_TYPE, + {{CVP_VOCPROC_STATIC_COL_CAL_TYPE, {NULL, NULL, NULL, voice_set_cal, NULL, NULL} }, {NULL, NULL, cal_utils_match_buf_num} }, - {{CVP_VOCVOL_COL_CAL_TYPE, + {{CVP_VOCPROC_DYNAMIC_COL_CAL_TYPE, {NULL, NULL, NULL, voice_set_cal, NULL, NULL} }, {NULL, NULL, cal_utils_match_buf_num} }, - {{CVS_VOCSTRM_CAL_TYPE, + {{CVS_VOCSTRM_STATIC_CAL_TYPE, {voice_alloc_cal, voice_dealloc_cal, NULL, voice_set_cal, NULL, NULL} }, {NULL, voice_unmap_cal_memory, cal_utils_match_buf_num} }, - {{CVS_VOCSTRM_COL_CAL_TYPE, + {{CVS_VOCSTRM_STATIC_COL_CAL_TYPE, {NULL, NULL, NULL, voice_set_cal, NULL, NULL} }, {NULL, NULL, cal_utils_match_buf_num} },