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 29d600f..8d8a473 100644
--- a/dsp/q6adm.c
+++ b/dsp/q6adm.c
@@ -2038,7 +2038,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);
@@ -2219,6 +2219,9 @@
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_PERSISTENT_CAL) {
@@ -2254,6 +2257,9 @@
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_PERSISTENT_CAL) {
@@ -2292,6 +2298,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 ||
@@ -2362,6 +2370,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:
@@ -3398,7 +3408,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;
}