Loading dsp/audio_cal_utils.c +2 −0 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ size_t get_cal_info_size(int32_t cal_type) break; case ADM_AUDPROC_CAL_TYPE: case ADM_LSM_AUDPROC_CAL_TYPE: case ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE: size = sizeof(struct audio_cal_info_audproc); break; case ADM_AUDVOL_CAL_TYPE: Loading Loading @@ -213,6 +214,7 @@ size_t get_user_cal_type_size(int32_t cal_type) break; case ADM_AUDPROC_CAL_TYPE: case ADM_LSM_AUDPROC_CAL_TYPE: case ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE: size = sizeof(struct audio_cal_type_audproc); break; case ADM_AUDVOL_CAL_TYPE: Loading dsp/q6adm.c +30 −5 Original line number Diff line number Diff line Loading @@ -2000,7 +2000,8 @@ static struct cal_block_data *adm_find_cal_by_path(int cal_index, int path) continue; if (cal_index == ADM_AUDPROC_CAL || cal_index == ADM_LSM_AUDPROC_CAL) { cal_index == ADM_LSM_AUDPROC_CAL || cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL) { audproc_cal_info = cal_block->cal_info; if ((audproc_cal_info->path == path) && (cal_block->cal_data.size > 0)) Loading Loading @@ -2037,7 +2038,8 @@ static struct cal_block_data *adm_find_cal_by_app_type(int cal_index, int path, continue; if (cal_index == ADM_AUDPROC_CAL || cal_index == ADM_LSM_AUDPROC_CAL) { cal_index == ADM_LSM_AUDPROC_CAL || cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL) { audproc_cal_info = cal_block->cal_info; if ((audproc_cal_info->path == path) && (audproc_cal_info->app_type == app_type) && Loading Loading @@ -2077,7 +2079,8 @@ static struct cal_block_data *adm_find_cal(int cal_index, int path, continue; if (cal_index == ADM_AUDPROC_CAL || cal_index == ADM_LSM_AUDPROC_CAL) { cal_index == ADM_LSM_AUDPROC_CAL || cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL) { audproc_cal_info = cal_block->cal_info; if ((audproc_cal_info->path == path) && (audproc_cal_info->app_type == app_type) && Loading Loading @@ -2165,12 +2168,18 @@ static void send_adm_cal(int port_id, int copp_idx, int path, int perf_mode, { pr_debug("%s: port id 0x%x copp_idx %d\n", __func__, port_id, copp_idx); if (passthr_mode != LISTEN) if (passthr_mode != LISTEN) { send_adm_cal_type(ADM_AUDPROC_CAL, path, port_id, copp_idx, perf_mode, app_type, acdb_id, sample_rate); else } else { send_adm_cal_type(ADM_LSM_AUDPROC_CAL, path, port_id, copp_idx, perf_mode, app_type, acdb_id, sample_rate); send_adm_cal_type(ADM_LSM_AUDPROC_PERSISTENT_CAL, path, port_id, copp_idx, perf_mode, app_type, acdb_id, sample_rate); } send_adm_cal_type(ADM_AUDVOL_CAL, path, port_id, copp_idx, perf_mode, app_type, acdb_id, sample_rate); } Loading Loading @@ -3297,6 +3306,9 @@ static int get_cal_type_index(int32_t cal_type) case ADM_RTAC_AUDVOL_CAL_TYPE: ret = ADM_RTAC_AUDVOL_CAL; break; case ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE: ret = ADM_LSM_AUDPROC_PERSISTENT_CAL; break; default: pr_err("%s: invalid cal type %d!\n", __func__, cal_type); } Loading Loading @@ -3518,6 +3530,12 @@ static int adm_init_cal_data(void) adm_set_cal, NULL, NULL} }, {adm_map_cal_data, adm_unmap_cal_data, cal_utils_match_buf_num} }, {{ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE, {adm_alloc_cal, adm_dealloc_cal, NULL, adm_set_cal, NULL, NULL} }, {adm_map_cal_data, adm_unmap_cal_data, cal_utils_match_buf_num} }, }; pr_debug("%s:\n", __func__); Loading Loading @@ -3987,6 +4005,13 @@ int adm_store_cal_data(int port_id, int copp_idx, int path, int perf_mode, rc = -ENOMEM; goto unlock; } } else if (cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL) { if (cal_block->cal_data.size > AUD_PROC_PERSIST_BLOCK_SIZE) { pr_err("%s:persist invalid size exp/actual[%zd, %d]\n", __func__, cal_block->cal_data.size, *size); rc = -ENOMEM; goto unlock; } } else if (cal_index == ADM_AUDVOL_CAL) { if (cal_block->cal_data.size > AUD_VOL_BLOCK_SIZE) { pr_err("%s:aud_vol:invalid size exp/actual[%zd, %d]\n", Loading include/dsp/q6adm-v2.h +2 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ ((MAX_MODULES_IN_TOPO + 1) * 2 * sizeof(uint32_t)) #define AUD_PROC_BLOCK_SIZE 4096 #define AUD_VOL_BLOCK_SIZE 4096 #define AUD_PROC_PERSIST_BLOCK_SIZE (2 * 1024 * 1020) #define AUDIO_RX_CALIBRATION_SIZE (AUD_PROC_BLOCK_SIZE + \ AUD_VOL_BLOCK_SIZE) enum { Loading @@ -40,6 +41,7 @@ enum { ADM_RTAC_APR_CAL, ADM_SRS_TRUMEDIA, ADM_RTAC_AUDVOL_CAL, ADM_LSM_AUDPROC_PERSISTENT_CAL, ADM_MAX_CAL_TYPES }; Loading include/uapi/linux/msm_audio_calibration.h +2 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ enum { AFE_LSM_TX_CAL_TYPE, ADM_LSM_TOPOLOGY_CAL_TYPE, ADM_LSM_AUDPROC_CAL_TYPE, ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE, MAX_CAL_TYPES, }; Loading @@ -115,6 +116,7 @@ enum { #define AFE_LSM_TX_CAL_TYPE AFE_LSM_TX_CAL_TYPE #define ADM_LSM_TOPOLOGY_CAL_TYPE ADM_LSM_TOPOLOGY_CAL_TYPE #define ADM_LSM_AUDPROC_CAL_TYPE ADM_LSM_AUDPROC_CAL_TYPE #define ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE #define LSM_CAL_TYPES #define TOPOLOGY_SPECIFIC_CHANNEL_INFO Loading Loading
dsp/audio_cal_utils.c +2 −0 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ size_t get_cal_info_size(int32_t cal_type) break; case ADM_AUDPROC_CAL_TYPE: case ADM_LSM_AUDPROC_CAL_TYPE: case ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE: size = sizeof(struct audio_cal_info_audproc); break; case ADM_AUDVOL_CAL_TYPE: Loading Loading @@ -213,6 +214,7 @@ size_t get_user_cal_type_size(int32_t cal_type) break; case ADM_AUDPROC_CAL_TYPE: case ADM_LSM_AUDPROC_CAL_TYPE: case ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE: size = sizeof(struct audio_cal_type_audproc); break; case ADM_AUDVOL_CAL_TYPE: Loading
dsp/q6adm.c +30 −5 Original line number Diff line number Diff line Loading @@ -2000,7 +2000,8 @@ static struct cal_block_data *adm_find_cal_by_path(int cal_index, int path) continue; if (cal_index == ADM_AUDPROC_CAL || cal_index == ADM_LSM_AUDPROC_CAL) { cal_index == ADM_LSM_AUDPROC_CAL || cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL) { audproc_cal_info = cal_block->cal_info; if ((audproc_cal_info->path == path) && (cal_block->cal_data.size > 0)) Loading Loading @@ -2037,7 +2038,8 @@ static struct cal_block_data *adm_find_cal_by_app_type(int cal_index, int path, continue; if (cal_index == ADM_AUDPROC_CAL || cal_index == ADM_LSM_AUDPROC_CAL) { cal_index == ADM_LSM_AUDPROC_CAL || cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL) { audproc_cal_info = cal_block->cal_info; if ((audproc_cal_info->path == path) && (audproc_cal_info->app_type == app_type) && Loading Loading @@ -2077,7 +2079,8 @@ static struct cal_block_data *adm_find_cal(int cal_index, int path, continue; if (cal_index == ADM_AUDPROC_CAL || cal_index == ADM_LSM_AUDPROC_CAL) { cal_index == ADM_LSM_AUDPROC_CAL || cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL) { audproc_cal_info = cal_block->cal_info; if ((audproc_cal_info->path == path) && (audproc_cal_info->app_type == app_type) && Loading Loading @@ -2165,12 +2168,18 @@ static void send_adm_cal(int port_id, int copp_idx, int path, int perf_mode, { pr_debug("%s: port id 0x%x copp_idx %d\n", __func__, port_id, copp_idx); if (passthr_mode != LISTEN) if (passthr_mode != LISTEN) { send_adm_cal_type(ADM_AUDPROC_CAL, path, port_id, copp_idx, perf_mode, app_type, acdb_id, sample_rate); else } else { send_adm_cal_type(ADM_LSM_AUDPROC_CAL, path, port_id, copp_idx, perf_mode, app_type, acdb_id, sample_rate); send_adm_cal_type(ADM_LSM_AUDPROC_PERSISTENT_CAL, path, port_id, copp_idx, perf_mode, app_type, acdb_id, sample_rate); } send_adm_cal_type(ADM_AUDVOL_CAL, path, port_id, copp_idx, perf_mode, app_type, acdb_id, sample_rate); } Loading Loading @@ -3297,6 +3306,9 @@ static int get_cal_type_index(int32_t cal_type) case ADM_RTAC_AUDVOL_CAL_TYPE: ret = ADM_RTAC_AUDVOL_CAL; break; case ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE: ret = ADM_LSM_AUDPROC_PERSISTENT_CAL; break; default: pr_err("%s: invalid cal type %d!\n", __func__, cal_type); } Loading Loading @@ -3518,6 +3530,12 @@ static int adm_init_cal_data(void) adm_set_cal, NULL, NULL} }, {adm_map_cal_data, adm_unmap_cal_data, cal_utils_match_buf_num} }, {{ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE, {adm_alloc_cal, adm_dealloc_cal, NULL, adm_set_cal, NULL, NULL} }, {adm_map_cal_data, adm_unmap_cal_data, cal_utils_match_buf_num} }, }; pr_debug("%s:\n", __func__); Loading Loading @@ -3987,6 +4005,13 @@ int adm_store_cal_data(int port_id, int copp_idx, int path, int perf_mode, rc = -ENOMEM; goto unlock; } } else if (cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL) { if (cal_block->cal_data.size > AUD_PROC_PERSIST_BLOCK_SIZE) { pr_err("%s:persist invalid size exp/actual[%zd, %d]\n", __func__, cal_block->cal_data.size, *size); rc = -ENOMEM; goto unlock; } } else if (cal_index == ADM_AUDVOL_CAL) { if (cal_block->cal_data.size > AUD_VOL_BLOCK_SIZE) { pr_err("%s:aud_vol:invalid size exp/actual[%zd, %d]\n", Loading
include/dsp/q6adm-v2.h +2 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ ((MAX_MODULES_IN_TOPO + 1) * 2 * sizeof(uint32_t)) #define AUD_PROC_BLOCK_SIZE 4096 #define AUD_VOL_BLOCK_SIZE 4096 #define AUD_PROC_PERSIST_BLOCK_SIZE (2 * 1024 * 1020) #define AUDIO_RX_CALIBRATION_SIZE (AUD_PROC_BLOCK_SIZE + \ AUD_VOL_BLOCK_SIZE) enum { Loading @@ -40,6 +41,7 @@ enum { ADM_RTAC_APR_CAL, ADM_SRS_TRUMEDIA, ADM_RTAC_AUDVOL_CAL, ADM_LSM_AUDPROC_PERSISTENT_CAL, ADM_MAX_CAL_TYPES }; Loading
include/uapi/linux/msm_audio_calibration.h +2 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ enum { AFE_LSM_TX_CAL_TYPE, ADM_LSM_TOPOLOGY_CAL_TYPE, ADM_LSM_AUDPROC_CAL_TYPE, ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE, MAX_CAL_TYPES, }; Loading @@ -115,6 +116,7 @@ enum { #define AFE_LSM_TX_CAL_TYPE AFE_LSM_TX_CAL_TYPE #define ADM_LSM_TOPOLOGY_CAL_TYPE ADM_LSM_TOPOLOGY_CAL_TYPE #define ADM_LSM_AUDPROC_CAL_TYPE ADM_LSM_AUDPROC_CAL_TYPE #define ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE #define LSM_CAL_TYPES #define TOPOLOGY_SPECIFIC_CHANNEL_INFO Loading