From 4ef357502632565256d61200d499c102a8377e2b Mon Sep 17 00:00:00 2001 From: Daniel Baluta Date: Fri, 14 Dec 2018 19:19:15 +0200 Subject: MLK-20095-4: ASoC: fsl: Use hardwired system address offset source select for QM We set system address offset select to 0 on QM because of the following reasons: * SC_C_OFS_PERIPH, it is not available for QM * SC_C_OFS_AUDIO, it is not used * SC_C_OFS_IRQ, needs to get outside of the VPU. A simplified version of the code is: if (dsp_priv->dsp_board_type == DSP_IMX8QXP_TYPE) { sc_misc_set_control(ipcHndl, SC_R_DSP, SC_C_OFS_SEL, 1); sc_misc_set_control(ipcHndl, SC_R_DSP, SC_C_OFS_PERIPH, 0x5A); sc_misc_set_control(ipcHndl, SC_R_DSP, SC_C_OFS_IRQ, 0x51); sc_misc_set_control(ipcHndl, SC_R_DSP, SC_C_OFS_AUDIO, 0x80); } } else { sc_misc_set_control(ipcHndl, SC_R_DSP, SC_C_OFS_SEL, 0); } Reviewed-by: Shengjiu Wang Signed-off-by: Daniel Baluta --- sound/soc/fsl/fsl_dsp.c | 56 +++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 23 deletions(-) (limited to 'sound/soc/fsl/fsl_dsp.c') diff --git a/sound/soc/fsl/fsl_dsp.c b/sound/soc/fsl/fsl_dsp.c index 63c11db54f04..1d5b28fc05ac 100644 --- a/sound/soc/fsl/fsl_dsp.c +++ b/sound/soc/fsl/fsl_dsp.c @@ -819,32 +819,42 @@ static int fsl_dsp_probe(struct platform_device *pdev) return ret; }; - ret = imx_sc_misc_set_control(dsp_priv->dsp_ipcHandle, IMX_SC_R_DSP, - IMX_SC_C_OFS_SEL, 1); - if (ret) { - dev_err(&pdev->dev, "Error system address offset source select\n"); - return -EIO; - } + if (dsp_priv->dsp_board_type == DSP_IMX8QXP_TYPE) { + ret = imx_sc_misc_set_control(dsp_priv->dsp_ipcHandle, IMX_SC_R_DSP, + IMX_SC_C_OFS_SEL, 1); + if (ret) { + dev_err(&pdev->dev, "Error system address offset source select\n"); + return -EIO; + } - ret = imx_sc_misc_set_control(dsp_priv->dsp_ipcHandle, IMX_SC_R_DSP, - IMX_SC_C_OFS_AUDIO, 0x80); - if (ret) { - dev_err(&pdev->dev, "Error system address offset of AUDIO\n"); - return -EIO; - } + ret = imx_sc_misc_set_control(dsp_priv->dsp_ipcHandle, IMX_SC_R_DSP, + IMX_SC_C_OFS_PERIPH, 0x5A); + if (ret) { + dev_err(&pdev->dev, "Error system address offset of PERIPH %d\n", + ret); + return -EIO; + } - ret = imx_sc_misc_set_control(dsp_priv->dsp_ipcHandle, IMX_SC_R_DSP, - IMX_SC_C_OFS_PERIPH, 0x5A); - if (ret) { - dev_err(&pdev->dev, "Error system address offset of PERIPH %d\n", - sciErr); - } + ret = imx_sc_misc_set_control(dsp_priv->dsp_ipcHandle, IMX_SC_R_DSP, + IMX_SC_C_OFS_IRQ, 0x51); + if (ret) { + dev_err(&pdev->dev, "Error system address offset of IRQ\n"); + return -EIO; + } - ret = imx_sc_misc_set_control(dsp_priv->dsp_ipcHandle, IMX_SC_R_DSP, - IMX_SC_C_OFS_IRQ, 0x51); - if (ret) { - dev_err(&pdev->dev, "Error system address offset of IRQ\n"); - return -EIO; + ret = imx_sc_misc_set_control(dsp_priv->dsp_ipcHandle, IMX_SC_R_DSP, + IMX_SC_C_OFS_AUDIO, 0x80); + if (ret) { + dev_err(&pdev->dev, "Error system address offset of AUDIO\n"); + return -EIO; + } + } else { + ret = imx_sc_misc_set_control(dsp_priv->dsp_ipcHandle, IMX_SC_R_DSP, + IMX_SC_C_OFS_SEL, 0); + if (ret) { + dev_err(&pdev->dev, "Error system address offset source select\n"); + return -EIO; + } } ret = dsp_mu_init(dsp_priv); -- cgit v1.2.3