summaryrefslogtreecommitdiff
path: root/sound/soc/fsl/fsl_rpmsg_i2s.c
diff options
context:
space:
mode:
authorShengjiu Wang <shengjiu.wang@nxp.com>2019-11-29 12:03:04 +0800
committerShengjiu Wang <shengjiu.wang@nxp.com>2019-11-29 16:15:08 +0800
commitdfb874e95e3aa46b43b8940b6e921cf753eda947 (patch)
treeeea197c4ee74a5f3d0060e3a5472e4e9e31d4a6e /sound/soc/fsl/fsl_rpmsg_i2s.c
parent50b229c2d5a4ce5adcaa204442734d64575f9316 (diff)
LF-215: ASoC: fsl_rpmsg_i2s: Enable WQ_FREEZABLE for workqueue
In the end of playback, when the suspend happen, there will be error in m4 side. RTM_SaiSdmaAdapter_SetParam: Tx in wrong state 2! SRTM_SaiSdmaAdapter_SetBuf: Tx in wrong state 2! SRTM_SaiSdmaAdapter_Start: Tx in wrong state 2! The reason is that the I2S_TX_TERMINATE happen in the middle of I2S_TX_SUSPEND and I2S_TX_RESUME, this sequence is not allowed. So we make the rpmsg message workqueue enter freeze in suspend to avoid such issue. that the command sequence will be I2S_TX_SUSPEND->I2S_TX_RESUME->I2S_TX_TERMINATE Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Diffstat (limited to 'sound/soc/fsl/fsl_rpmsg_i2s.c')
-rw-r--r--sound/soc/fsl/fsl_rpmsg_i2s.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/soc/fsl/fsl_rpmsg_i2s.c b/sound/soc/fsl/fsl_rpmsg_i2s.c
index 4ba151186681..f392817dd3fc 100644
--- a/sound/soc/fsl/fsl_rpmsg_i2s.c
+++ b/sound/soc/fsl/fsl_rpmsg_i2s.c
@@ -222,7 +222,7 @@ static int fsl_rpmsg_i2s_probe(struct platform_device *pdev)
audioindex = 0;
/* Setup work queue */
- i2s_info->rpmsg_wq = create_singlethread_workqueue("rpmsg_i2s");
+ i2s_info->rpmsg_wq = alloc_ordered_workqueue("rpmsg_i2s", WQ_HIGHPRI | WQ_UNBOUND | WQ_FREEZABLE);
if (i2s_info->rpmsg_wq == NULL) {
dev_err(&pdev->dev, "workqueue create failed\n");
return -ENOMEM;