mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-08 21:22:09 -04:00
Merge "dsp: adm: ensure hyp assgin is called when FNN module is used"
This commit is contained in:
commit
577aef21c4
1 changed files with 19 additions and 21 deletions
40
dsp/q6adm.c
40
dsp/q6adm.c
|
|
@ -2314,7 +2314,7 @@ static void send_adm_cal_type(int cal_index, int path, int port_id,
|
|||
int acdb_id, int sample_rate)
|
||||
{
|
||||
struct cal_block_data *cal_block = NULL;
|
||||
int ret, port_idx, topology;
|
||||
int ret;
|
||||
int dest_perms[2] = {PERM_READ | PERM_WRITE, PERM_READ | PERM_WRITE};
|
||||
int source_vm[1] = {VMID_HLOS};
|
||||
int dest_vm[2] = {VMID_LPASS, VMID_ADSP_HEAP};
|
||||
|
|
@ -2327,21 +2327,13 @@ static void send_adm_cal_type(int cal_index, int path, int port_id,
|
|||
goto done;
|
||||
}
|
||||
|
||||
port_idx = adm_validate_and_get_port_index(port_id);
|
||||
if (port_idx < 0) {
|
||||
pr_err("%s: Invalid port id: 0x%x", __func__, port_id);
|
||||
goto done;
|
||||
}
|
||||
|
||||
mutex_lock(&this_adm.cal_data[cal_index]->lock);
|
||||
cal_block = adm_find_cal(cal_index, path, app_type, acdb_id,
|
||||
sample_rate);
|
||||
if (cal_block == NULL)
|
||||
goto unlock;
|
||||
|
||||
topology = atomic_read(&this_adm.copp.topology[port_idx][copp_idx]);
|
||||
if (cal_block->cma_mem &&
|
||||
topology == VPM_TX_VOICE_FLUENCE_NN_COPP_TOPOLOGY) {
|
||||
if (cal_block->cma_mem) {
|
||||
if (cal_block->cal_data.paddr == 0 ||
|
||||
cal_block->map_data.map_size <= 0) {
|
||||
pr_err("%s: No address to map!\n", __func__);
|
||||
|
|
@ -3130,7 +3122,8 @@ int adm_open(int port_id, int path, int rate, int channel_mode, int topology,
|
|||
}
|
||||
|
||||
if ((topology == VPM_TX_SM_ECNS_V2_COPP_TOPOLOGY) ||
|
||||
(topology == VPM_TX_DM_FLUENCE_EF_COPP_TOPOLOGY)) {
|
||||
(topology == VPM_TX_DM_FLUENCE_EF_COPP_TOPOLOGY) ||
|
||||
(topology == VPM_TX_VOICE_FLUENCE_NN_COPP_TOPOLOGY)) {
|
||||
if ((rate != ADM_CMD_COPP_OPEN_SAMPLE_RATE_8K) &&
|
||||
(rate != ADM_CMD_COPP_OPEN_SAMPLE_RATE_16K) &&
|
||||
(rate != ADM_CMD_COPP_OPEN_SAMPLE_RATE_32K) &&
|
||||
|
|
@ -3887,13 +3880,14 @@ int adm_close(int port_id, int perf_mode, int copp_idx)
|
|||
{
|
||||
struct apr_hdr close;
|
||||
|
||||
int ret = 0, port_idx, app_type, topology;
|
||||
int ret = 0, port_idx, app_type;
|
||||
int copp_id = RESET_COPP_ID;
|
||||
bool result = false;
|
||||
int dest_perms[1] = {PERM_READ | PERM_WRITE | PERM_EXEC};
|
||||
int source_vm[2] = {VMID_LPASS, VMID_ADSP_HEAP};
|
||||
int dest_vm[1] = {VMID_HLOS};
|
||||
struct cal_block_data *cal_block = NULL;
|
||||
struct audio_cal_info_audproc *audproc_cal_info = NULL;
|
||||
int cal_index = ADM_AUDPROC_PERSISTENT_CAL;
|
||||
|
||||
pr_debug("%s: port_id=0x%x perf_mode: %d copp_idx: %d\n", __func__,
|
||||
|
|
@ -3913,7 +3907,6 @@ int adm_close(int port_id, int perf_mode, int copp_idx)
|
|||
}
|
||||
|
||||
port_channel_map[port_idx].set_channel_map = false;
|
||||
topology = atomic_read(&this_adm.copp.topology[port_idx][copp_idx]);
|
||||
app_type = atomic_read(&this_adm.copp.app_type[port_idx][copp_idx]);
|
||||
if (this_adm.copp.adm_delay[port_idx][copp_idx] && perf_mode
|
||||
== LEGACY_PCM_MODE) {
|
||||
|
|
@ -3996,9 +3989,7 @@ int adm_close(int port_id, int perf_mode, int copp_idx)
|
|||
ret = apr_send_pkt(this_adm.apr, (uint32_t *)&close);
|
||||
if (ret < 0) {
|
||||
pr_err("%s: ADM close failed %d\n", __func__, ret);
|
||||
if (this_adm.tx_port_id == port_id &&
|
||||
this_adm.fnn_app_type == app_type &&
|
||||
topology == VPM_TX_VOICE_FLUENCE_NN_COPP_TOPOLOGY) {
|
||||
if (this_adm.tx_port_id == port_id) {
|
||||
mutex_lock(&this_adm.cal_data[cal_index]->lock);
|
||||
cal_block = cal_utils_get_only_cal_block(
|
||||
this_adm.cal_data[cal_index]);
|
||||
|
|
@ -4007,7 +3998,12 @@ int adm_close(int port_id, int perf_mode, int copp_idx)
|
|||
pr_debug("%s: cma_alloc %d\n",
|
||||
__func__, cal_block->cma_mem);
|
||||
}
|
||||
if (result) {
|
||||
if (app_type == 0) {
|
||||
audproc_cal_info = cal_block->cal_info;
|
||||
app_type = audproc_cal_info->app_type;
|
||||
}
|
||||
|
||||
if (result && this_adm.fnn_app_type == app_type) {
|
||||
pr_debug("%s: use hyp assigned %d, use buffer %d\n",
|
||||
__func__, this_adm.hyp_assigned,
|
||||
cal_block->buffer_number);
|
||||
|
|
@ -4083,9 +4079,7 @@ int adm_close(int port_id, int perf_mode, int copp_idx)
|
|||
rtac_remove_adm_device(port_id, copp_id);
|
||||
}
|
||||
|
||||
if (this_adm.tx_port_id == port_id &&
|
||||
this_adm.fnn_app_type == app_type &&
|
||||
topology == VPM_TX_VOICE_FLUENCE_NN_COPP_TOPOLOGY) {
|
||||
if (this_adm.tx_port_id == port_id) {
|
||||
mutex_lock(&this_adm.cal_data[cal_index]->lock);
|
||||
cal_block = cal_utils_get_only_cal_block(
|
||||
this_adm.cal_data[cal_index]);
|
||||
|
|
@ -4094,8 +4088,12 @@ int adm_close(int port_id, int perf_mode, int copp_idx)
|
|||
pr_debug("%s: cma_alloc %d\n",
|
||||
__func__, cal_block->cma_mem);
|
||||
}
|
||||
if (app_type == 0) {
|
||||
audproc_cal_info = cal_block->cal_info;
|
||||
app_type = audproc_cal_info->app_type;
|
||||
}
|
||||
|
||||
if (result) {
|
||||
if (result && this_adm.fnn_app_type == app_type) {
|
||||
pr_debug("%s: use hyp assigned %d, use buffer %d\n",
|
||||
__func__, this_adm.hyp_assigned,
|
||||
cal_block->buffer_number);
|
||||
|
|
|
|||
Loading…
Reference in a new issue