dsp: Mark cal block after use
After applying calibration on DSP, cal block is marked stale to ensure same calibration is not reused for future usecase. Change-Id: I9f446c0602f4ab34ca71b9d2611319624fb19cd2 Signed-off-by: Vikram Panduranga <vpandura@codeaurora.org>
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
dd3e130abe
commit
770b8383d2
18
dsp/q6adm.c
18
dsp/q6adm.c
@@ -1856,7 +1856,7 @@ static void send_adm_custom_topology(void)
|
||||
this_adm.set_custom_topology = 0;
|
||||
|
||||
cal_block = cal_utils_get_only_cal_block(this_adm.cal_data[cal_index]);
|
||||
if (cal_block == NULL)
|
||||
if (cal_block == NULL || cal_utils_is_cal_stale(cal_block))
|
||||
goto unlock;
|
||||
|
||||
pr_debug("%s: Sending cal_index %d\n", __func__, cal_index);
|
||||
@@ -1996,8 +1996,11 @@ static struct cal_block_data *adm_find_cal_by_path(int cal_index, int path)
|
||||
cal_block = list_entry(ptr,
|
||||
struct cal_block_data, list);
|
||||
|
||||
if (cal_utils_is_cal_stale(cal_block))
|
||||
continue;
|
||||
|
||||
if (cal_index == ADM_AUDPROC_CAL ||
|
||||
cal_index == ADM_LSM_AUDPROC_CAL) {
|
||||
cal_index == ADM_LSM_AUDPROC_CAL) {
|
||||
audproc_cal_info = cal_block->cal_info;
|
||||
if ((audproc_cal_info->path == path) &&
|
||||
(cal_block->cal_data.size > 0))
|
||||
@@ -2030,8 +2033,11 @@ static struct cal_block_data *adm_find_cal_by_app_type(int cal_index, int path,
|
||||
cal_block = list_entry(ptr,
|
||||
struct cal_block_data, list);
|
||||
|
||||
if (cal_utils_is_cal_stale(cal_block))
|
||||
continue;
|
||||
|
||||
if (cal_index == ADM_AUDPROC_CAL ||
|
||||
cal_index == ADM_LSM_AUDPROC_CAL) {
|
||||
cal_index == ADM_LSM_AUDPROC_CAL) {
|
||||
audproc_cal_info = cal_block->cal_info;
|
||||
if ((audproc_cal_info->path == path) &&
|
||||
(audproc_cal_info->app_type == app_type) &&
|
||||
@@ -2067,6 +2073,8 @@ static struct cal_block_data *adm_find_cal(int cal_index, int path,
|
||||
|
||||
cal_block = list_entry(ptr,
|
||||
struct cal_block_data, list);
|
||||
if (cal_utils_is_cal_stale(cal_block))
|
||||
continue;
|
||||
|
||||
if (cal_index == ADM_AUDPROC_CAL ||
|
||||
cal_index == ADM_LSM_AUDPROC_CAL) {
|
||||
@@ -2135,6 +2143,8 @@ static void send_adm_cal_type(int cal_index, int path, int port_id,
|
||||
|
||||
ret = adm_remap_and_send_cal_block(cal_index, port_id, copp_idx,
|
||||
cal_block, perf_mode, app_type, acdb_id, sample_rate);
|
||||
|
||||
cal_utils_mark_cal_used(cal_block);
|
||||
unlock:
|
||||
mutex_unlock(&this_adm.cal_data[cal_index]->lock);
|
||||
done:
|
||||
@@ -3111,7 +3121,7 @@ int send_rtac_audvol_cal(void)
|
||||
|
||||
cal_block = cal_utils_get_only_cal_block(
|
||||
this_adm.cal_data[ADM_RTAC_AUDVOL_CAL]);
|
||||
if (cal_block == NULL) {
|
||||
if (cal_block == NULL || cal_utils_is_cal_stale(cal_block)) {
|
||||
pr_err("%s: can't find cal block!\n", __func__);
|
||||
goto unlock;
|
||||
}
|
||||
|
Reference in New Issue
Block a user