From de79a06acf6cdbb7780fe68b39364f81d27c6172 Mon Sep 17 00:00:00 2001 From: Surendar Karka Date: Wed, 5 Dec 2018 14:18:55 +0530 Subject: [PATCH] dsp: update EC reference port only if channels are configured ADM open is failed due to payload size not getting updated with ec reference size. Update EC reference port only if EC reference channels are configured. Change-Id: Ic2dd6a3cf805c1ea40d71d0b62b6e867167d169e Signed-off-by: Surendar Karka --- dsp/q6adm.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/dsp/q6adm.c b/dsp/q6adm.c index d0b94177bce6..a01429b8e7e0 100644 --- a/dsp/q6adm.c +++ b/dsp/q6adm.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 /* - * Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. */ #include #include @@ -2943,9 +2943,18 @@ int adm_open(int port_id, int path, int rate, int channel_mode, int topology, open_v8.endpoint_id_2 = 0xFFFF; open_v8.endpoint_id_3 = 0xFFFF; - if (this_adm.ec_ref_rx && (path != ADM_PATH_PLAYBACK)) { - open_v8.endpoint_id_2 = this_adm.ec_ref_rx; - this_adm.ec_ref_rx = -1; + if ((this_adm.ec_ref_rx != -1) && + (path != ADM_PATH_PLAYBACK)) { + if (this_adm.num_ec_ref_rx_chans != 0) { + open_v8.endpoint_id_2 = + this_adm.ec_ref_rx; + this_adm.ec_ref_rx = -1; + } else { + pr_err("%s: EC channels not set %d\n", + __func__, + this_adm.num_ec_ref_rx_chans); + return -EINVAL; + } } open_v8.topology_id = topology;