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>
diff --git a/dsp/q6adm.c b/dsp/q6adm.c
index f0b7121..0346013 100644
--- a/dsp/q6adm.c
+++ b/dsp/q6adm.c
@@ -1856,7 +1856,7 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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;
}