summaryrefslogtreecommitdiff
path: root/sound/soc/fsl/fsl_dsp_proxy.c
diff options
context:
space:
mode:
authorZhang Peng <peng.zhang_8@nxp.com>2020-07-31 19:25:57 +0800
committerZhang Peng <peng.zhang_8@nxp.com>2020-08-03 19:32:57 +0800
commit14a1f3afd3491c421177f102f0d16a40a7cb9979 (patch)
tree3eefabaf9ceae795d3264b0f8583f1d4218d0b1b /sound/soc/fsl/fsl_dsp_proxy.c
parentec10135c193594eff7ee081099b4a409d2c89205 (diff)
MLK-24453 ASoC: fsl_dsp: Add pause&pause_release in dsp
Add dsp support pause and pause_release cmd. Signed-off-by: Zhang Peng <peng.zhang_8@nxp.com>
Diffstat (limited to 'sound/soc/fsl/fsl_dsp_proxy.c')
-rw-r--r--sound/soc/fsl/fsl_dsp_proxy.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/sound/soc/fsl/fsl_dsp_proxy.c b/sound/soc/fsl/fsl_dsp_proxy.c
index 266a50deab91..46b65cb200b9 100644
--- a/sound/soc/fsl/fsl_dsp_proxy.c
+++ b/sound/soc/fsl/fsl_dsp_proxy.c
@@ -246,6 +246,8 @@ irqreturn_t fsl_dsp_mu_isr(int irq, void *dev_id)
break;
case XF_SUSPEND:
case XF_RESUME:
+ case XF_PAUSE:
+ case XF_PAUSE_RELEASE:
complete(&proxy->cmd_complete);
break;
default:
@@ -769,6 +771,48 @@ int xf_cmd_send_resume(struct xf_proxy *proxy)
return ret;
}
+/*
+ * pause & pause_release functions
+ */
+int xf_cmd_send_pause(struct xf_proxy *proxy)
+{
+ union icm_header_t msghdr;
+ int ret = 0;
+
+ init_completion(&proxy->cmd_complete);
+
+ msghdr.allbits = 0; /* clear all bits; */
+ msghdr.ack = 0;
+ msghdr.intr = 1;
+ msghdr.msg = XF_PAUSE;
+ msghdr.size = 0;
+ icm_intr_send(proxy, msghdr.allbits);
+
+ /* wait for response here */
+ ret = icm_ack_wait(proxy, msghdr.allbits);
+
+ return ret;
+}
+
+int xf_cmd_send_pause_release(struct xf_proxy *proxy)
+{
+ union icm_header_t msghdr;
+ int ret = 0;
+
+ init_completion(&proxy->cmd_complete);
+
+ msghdr.allbits = 0; /* clear all bits; */
+ msghdr.ack = 0;
+ msghdr.intr = 1;
+ msghdr.msg = XF_PAUSE_RELEASE;
+ msghdr.size = 0;
+ icm_intr_send(proxy, msghdr.allbits);
+
+ /* wait for response here */
+ ret = icm_ack_wait(proxy, msghdr.allbits);
+
+ return ret;
+}
/* ...open component handle */
int xf_open(struct xf_client *client, struct xf_proxy *proxy,