Merge "dsp: q6adm: add ADM_AUDPROC_PERSISTENT cal type"

This commit is contained in:
qctecmdr
2020-05-05 23:55:58 -07:00
committed by Gerrit - the friendly Code Review server
3 changed files with 31 additions and 5 deletions

View File

@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2014-2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2014-2020, The Linux Foundation. All rights reserved.
*/
#include <linux/slab.h>
#include <linux/fs.h>
@@ -57,6 +57,7 @@ size_t get_cal_info_size(int32_t cal_type)
case ADM_AUDPROC_CAL_TYPE:
case ADM_LSM_AUDPROC_CAL_TYPE:
case ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE:
case ADM_AUDPROC_PERSISTENT_CAL_TYPE:
size = sizeof(struct audio_cal_info_audproc);
break;
case ADM_AUDVOL_CAL_TYPE:
@@ -211,6 +212,7 @@ size_t get_user_cal_type_size(int32_t cal_type)
case ADM_AUDPROC_CAL_TYPE:
case ADM_LSM_AUDPROC_CAL_TYPE:
case ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE:
case ADM_AUDPROC_PERSISTENT_CAL_TYPE:
size = sizeof(struct audio_cal_type_audproc);
break;
case ADM_AUDVOL_CAL_TYPE:

View File

@@ -2149,7 +2149,8 @@ static struct cal_block_data *adm_find_cal_by_path(int cal_index, int path)
if (cal_index == ADM_AUDPROC_CAL ||
cal_index == ADM_LSM_AUDPROC_CAL ||
cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL) {
cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL ||
cal_index == ADM_AUDPROC_PERSISTENT_CAL) {
audproc_cal_info = cal_block->cal_info;
if ((audproc_cal_info->path == path) &&
(cal_block->cal_data.size > 0))
@@ -2187,7 +2188,8 @@ static struct cal_block_data *adm_find_cal_by_app_type(int cal_index, int path,
if (cal_index == ADM_AUDPROC_CAL ||
cal_index == ADM_LSM_AUDPROC_CAL ||
cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL) {
cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL ||
cal_index == ADM_AUDPROC_PERSISTENT_CAL) {
audproc_cal_info = cal_block->cal_info;
if ((audproc_cal_info->path == path) &&
(audproc_cal_info->app_type == app_type) &&
@@ -2228,7 +2230,8 @@ static struct cal_block_data *adm_find_cal(int cal_index, int path,
if (cal_index == ADM_AUDPROC_CAL ||
cal_index == ADM_LSM_AUDPROC_CAL ||
cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL) {
cal_index == ADM_LSM_AUDPROC_PERSISTENT_CAL||
cal_index == ADM_AUDPROC_PERSISTENT_CAL) {
audproc_cal_info = cal_block->cal_info;
if ((audproc_cal_info->path == path) &&
(audproc_cal_info->app_type == app_type) &&
@@ -2319,6 +2322,9 @@ static void send_adm_cal(int port_id, int copp_idx, int path, int perf_mode,
if (passthr_mode != LISTEN) {
send_adm_cal_type(ADM_AUDPROC_CAL, path, port_id, copp_idx,
perf_mode, app_type, acdb_id, sample_rate);
send_adm_cal_type(ADM_AUDPROC_PERSISTENT_CAL, path,
port_id, copp_idx, perf_mode, app_type,
acdb_id, sample_rate);
} else {
send_adm_cal_type(ADM_LSM_AUDPROC_CAL, path, port_id, copp_idx,
perf_mode, app_type, acdb_id, sample_rate);
@@ -4134,6 +4140,9 @@ static int get_cal_type_index(int32_t cal_type)
case ADM_LSM_AUDPROC_PERSISTENT_CAL_TYPE:
ret = ADM_LSM_AUDPROC_PERSISTENT_CAL;
break;
case ADM_AUDPROC_PERSISTENT_CAL_TYPE:
ret = ADM_AUDPROC_PERSISTENT_CAL;
break;
default:
pr_err("%s: invalid cal type %d!\n", __func__, cal_type);
}
@@ -4361,6 +4370,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_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__);
@@ -4922,7 +4937,15 @@ 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_AUDVOL_CAL) {
} else if (cal_index == ADM_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",
__func__, cal_block->cal_data.size, *size);

View File

@@ -35,6 +35,7 @@ enum {
ADM_SRS_TRUMEDIA,
ADM_RTAC_AUDVOL_CAL,
ADM_LSM_AUDPROC_PERSISTENT_CAL,
ADM_AUDPROC_PERSISTENT_CAL,
ADM_MAX_CAL_TYPES
};