summaryrefslogtreecommitdiff
path: root/sound
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-12-09 18:33:21 +0800
commit5b07f684deb1b5519ac641baf7df953e80113e93 (patch)
tree7ce051476645661bbdde519e91030af2cb15568a /sound
parent5a257681ebaf36c4dfa83ae84ccb80699b62db01 (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')
-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;