From d197fd1747900642e484387566326b383c6f4dd0 Mon Sep 17 00:00:00 2001 From: Sudheer Papothi Date: Wed, 10 Aug 2016 07:31:32 +0530 Subject: [PATCH] ASoC: wcd_cpe_services: Process detection events in SEND state when event is generated during CMI SEND state, process the event explicitly without waiting for response to complete. This change fixes response timed out errors for start and stop commands. Change-Id: I2e8d877b57c4d547688fdd7a2e71d06dfec3d4ab Signed-off-by: Sudheer Papothi --- sound/soc/codecs/wcd_cpe_services.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sound/soc/codecs/wcd_cpe_services.c b/sound/soc/codecs/wcd_cpe_services.c index 5a82c8e5382b..582fddfa1096 100644 --- a/sound/soc/codecs/wcd_cpe_services.c +++ b/sound/soc/codecs/wcd_cpe_services.c @@ -845,6 +845,7 @@ static void cpe_process_irq_int(u32 irq, struct cpe_send_msg *m; u8 size = 0; bool err_irq = false; + struct cmi_hdr *hdr; pr_debug("%s: irq = %u\n", __func__, irq); @@ -911,6 +912,18 @@ static void cpe_process_irq_int(u32 irq, break; case CPE_STATE_SENDING_MSG: + hdr = CMI_GET_HEADER(t_info->tgt->outbox); + if (CMI_GET_OPCODE(t_info->tgt->outbox) == + CPE_LSM_SESSION_EVENT_DETECTION_STATUS_V2) { + pr_debug("%s: session_id: %u, state: %d,%d, event received\n", + __func__, CMI_HDR_GET_SESSION_ID(hdr), + t_info->state, t_info->substate); + temp_node.command = CPE_CMD_PROC_INCOMING_MSG; + temp_node.data = NULL; + t_info->cpe_process_command(&temp_node); + break; + } + m = (struct cpe_send_msg *)t_info->pending; switch (t_info->substate) {