summaryrefslogtreecommitdiff
path: root/sound/soc/fsl/fsl_dsp.c
diff options
context:
space:
mode:
authorBing Song <bing.song@nxp.com>2020-08-14 13:54:20 +0800
committerBing Song <bing.song@nxp.com>2020-08-14 16:48:44 +0800
commit5ae911fd64fb27e97fd95b0e5f4813a4b2546e2f (patch)
tree1e580f274f3b873ec63c4c927f49be9ae45cf14b /sound/soc/fsl/fsl_dsp.c
parent0581bdbb6d8db8c9a40d0ef9b5f524bf97c13e38 (diff)
MLK-24501-4 dsp: disable mxc_hifi4 when LPA.
FW is locate on OCRAM_A when lpa. core decoder can't put in reserved memory as HIFI4 has 1G memory limitation. Disable DSP wrapper decoder when lpa. lpa PCM mode will use SW decoder. Signed-off-by: Bing Song <bing.song@nxp.com> Reviewed-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Diffstat (limited to 'sound/soc/fsl/fsl_dsp.c')
-rw-r--r--sound/soc/fsl/fsl_dsp.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/sound/soc/fsl/fsl_dsp.c b/sound/soc/fsl/fsl_dsp.c
index 547713907580..46c16ebc8c54 100644
--- a/sound/soc/fsl/fsl_dsp.c
+++ b/sound/soc/fsl/fsl_dsp.c
@@ -1201,12 +1201,14 @@ static int fsl_dsp_probe(struct platform_device *pdev)
ret = of_property_read_u32(np, "fixup-offset", &dsp_priv->fixup_offset);
- dsp_miscdev.fops = &dsp_fops,
- dsp_miscdev.parent = &pdev->dev,
- ret = misc_register(&dsp_miscdev);
- if (ret) {
- dev_err(&pdev->dev, "failed to register misc device %d\n", ret);
- goto misc_register_fail;
+ if (!dsp_priv->dsp_is_lpa) {
+ dsp_miscdev.fops = &dsp_fops,
+ dsp_miscdev.parent = &pdev->dev,
+ ret = misc_register(&dsp_miscdev);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to register misc device %d\n", ret);
+ goto misc_register_fail;
+ }
}
reserved_node = of_parse_phandle(np, "memory-region", 0);
@@ -1370,7 +1372,8 @@ alloc_coherent_fail:
iounmap(dsp_priv->ocram_e_vir_addr);
reserved_node_fail:
- misc_deregister(&dsp_miscdev);
+ if (!dsp_priv->dsp_is_lpa)
+ misc_deregister(&dsp_miscdev);
misc_register_fail:
mu_init_fail:
configure_fail:
@@ -1384,7 +1387,8 @@ static int fsl_dsp_remove(struct platform_device *pdev)
struct fsl_dsp *dsp_priv = platform_get_drvdata(pdev);
int size;
- misc_deregister(&dsp_miscdev);
+ if (!dsp_priv->dsp_is_lpa)
+ misc_deregister(&dsp_miscdev);
size = MSG_BUF_SIZE + DSP_CONFIG_SIZE;
dma_free_coherent(&pdev->dev, size, dsp_priv->msg_buf_virt,