mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 05:39:54 -04:00
dsp: add support for SVA to use afe topology deregister
To handle erroneous scenario when audio afe driver registers a FFNS topology in non-island mode instead of island mode, add capability for audio afe driver to deregister previously created topology before registering a new topology for SVA. Change-Id: Iff871da998847ea5d3bcee417c780b8acaf70ca3 Signed-off-by: Sanjana B <sanjb@codeaurora.org> Signed-off-by: Xiaoyu Ye <benyxy@codeaurora.org>
This commit is contained in:
parent
ac1e77dc77
commit
afcc911b4e
2 changed files with 67 additions and 0 deletions
65
dsp/q6afe.c
65
dsp/q6afe.c
|
|
@ -3037,6 +3037,63 @@ unlock:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int afe_port_topology_deregister(u16 port_id)
|
||||
{
|
||||
struct param_hdr_v3 param_info;
|
||||
int ret = 0;
|
||||
uint32_t build_major_version = 0;
|
||||
uint32_t build_minor_version = 0;
|
||||
uint32_t build_branch_version = 0;
|
||||
uint32_t afe_api_version = 0;
|
||||
|
||||
ret = q6core_get_avcs_avs_build_version_info(&build_major_version,
|
||||
&build_minor_version,
|
||||
&build_branch_version);
|
||||
if (ret < 0) {
|
||||
pr_err("%s: get AVS build versions failed %d\n",
|
||||
__func__, ret);
|
||||
goto done;
|
||||
}
|
||||
|
||||
afe_api_version = q6core_get_avcs_api_version_per_service(
|
||||
APRV2_IDS_SERVICE_ID_ADSP_AFE_V);
|
||||
if (afe_api_version < 0) {
|
||||
ret = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
pr_debug("%s: major: %u, minor: %u, branch: %u, afe_api: %u\n",
|
||||
__func__, build_major_version, build_minor_version,
|
||||
build_branch_version, afe_api_version);
|
||||
|
||||
if (build_major_version != AVS_BUILD_MAJOR_VERSION_V2 ||
|
||||
build_minor_version != AVS_BUILD_MINOR_VERSION_V9 ||
|
||||
(build_branch_version != AVS_BUILD_BRANCH_VERSION_V0 &&
|
||||
build_branch_version != AVS_BUILD_BRANCH_VERSION_V3) ||
|
||||
afe_api_version < AFE_API_VERSION_V9) {
|
||||
ret = -EINVAL;
|
||||
pr_err("%s: AVS build versions mismatched %d\n",
|
||||
__func__, ret);
|
||||
goto done;
|
||||
}
|
||||
|
||||
memset(¶m_info, 0, sizeof(param_info));
|
||||
param_info.module_id = AFE_MODULE_AUDIO_DEV_INTERFACE;
|
||||
param_info.instance_id = INSTANCE_ID_0;
|
||||
param_info.param_id = AFE_PARAM_ID_DEREGISTER_TOPOLOGY;
|
||||
param_info.param_size = 0;
|
||||
ret = q6afe_pack_and_set_param_in_band(port_id,
|
||||
q6audio_get_port_index(port_id),
|
||||
param_info, NULL);
|
||||
if (ret < 0)
|
||||
pr_err("%s: AFE deregister topology for port 0x%x failed %d\n",
|
||||
__func__, port_id, ret);
|
||||
|
||||
done:
|
||||
pr_debug("%s: AFE port 0x%x deregister topology, ret %d\n",
|
||||
__func__, port_id, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int afe_send_port_topology_id(u16 port_id)
|
||||
{
|
||||
struct afe_param_id_set_topology_cfg topology;
|
||||
|
|
@ -5518,6 +5575,14 @@ static int __afe_port_start(u16 port_id, union afe_port_config *afe_config,
|
|||
if (!(this_afe.afe_cal_mode[port_index] == AFE_CAL_MODE_NONE)) {
|
||||
/* One time call: only for first time */
|
||||
afe_send_custom_topology();
|
||||
/*
|
||||
* Deregister existing afe topology before
|
||||
* sending a new one for VA use cases only
|
||||
*/
|
||||
if (port_id == AFE_PORT_ID_VA_CODEC_DMA_TX_0 ||
|
||||
port_id == AFE_PORT_ID_VA_CODEC_DMA_TX_1 ||
|
||||
port_id == AFE_PORT_ID_VA_CODEC_DMA_TX_2)
|
||||
afe_port_topology_deregister(port_id);
|
||||
afe_send_port_topology_id(port_id);
|
||||
afe_send_cal(port_id);
|
||||
afe_send_hw_delay(port_id, rate);
|
||||
|
|
|
|||
|
|
@ -3940,6 +3940,7 @@ struct afe_param_id_device_hw_delay_cfg {
|
|||
} __packed;
|
||||
|
||||
#define AFE_PARAM_ID_SET_TOPOLOGY 0x0001025A
|
||||
#define AFE_PARAM_ID_DEREGISTER_TOPOLOGY 0x000102E8
|
||||
#define AFE_API_VERSION_TOPOLOGY_V1 0x1
|
||||
|
||||
struct afe_param_id_set_topology_cfg {
|
||||
|
|
@ -12161,6 +12162,7 @@ struct afe_clk_set {
|
|||
|
||||
#define AVS_BUILD_MAJOR_VERSION_V2 2
|
||||
#define AVS_BUILD_MINOR_VERSION_V9 9
|
||||
#define AVS_BUILD_BRANCH_VERSION_V0 0
|
||||
#define AVS_BUILD_BRANCH_VERSION_V3 3
|
||||
|
||||
#define AFE_PARAM_ID_CLOCK_SET_V2 0x000102E6
|
||||
|
|
|
|||
Loading…
Reference in a new issue