The SCP core 1 doesn't have vdec/venc functions like SCP core 0. Remove usage of venc/vdec parameters. Signed-off-by: Tinghan Shen <tinghan.shen@xxxxxxxxxxxx> --- drivers/remoteproc/mtk_scp_dual.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/remoteproc/mtk_scp_dual.c b/drivers/remoteproc/mtk_scp_dual.c index 7bed39722bd5..d4cc15e22640 100644 --- a/drivers/remoteproc/mtk_scp_dual.c +++ b/drivers/remoteproc/mtk_scp_dual.c @@ -20,6 +20,16 @@ static const struct rproc_ops scp_ops = { .parse_fw = scp_parse_fw, }; +static void scp_init_ipi_handler(void *data, unsigned int len, void *priv) +{ + struct mtk_scp *scp = (struct mtk_scp *)priv; + struct scp_run *run = (struct scp_run *)data; + + scp->run.signaled = run->signaled; + strscpy(scp->run.fw_ver, run->fw_ver, SCP_FW_VER_LEN); + wake_up_interruptible(&scp->run.wq); +} + static int scp_dual_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -68,6 +78,13 @@ static int scp_dual_probe(struct platform_device *pdev) for (i = 0; i < SCP_IPI_MAX; i++) mutex_init(&scp->ipi_desc[i].lock); + /* register SCP initialization IPI */ + ret = scp_ipi_register(scp, SCP_IPI_INIT, scp_init_ipi_handler, scp); + if (ret) { + dev_err(dev, "Failed to register IPI_SCP_INIT\n"); + goto release_dev_mem; + } + init_waitqueue_head(&scp->run.wq); init_waitqueue_head(&scp->ack_wq); @@ -77,11 +94,13 @@ static int scp_dual_probe(struct platform_device *pdev) if (ret) { dev_err(dev, "failed to request irq\n"); - goto release_dev_mem; + goto remove_ipi; } return 0; +remove_ipi: + scp_ipi_unregister(scp, SCP_IPI_INIT); release_dev_mem: scp_unmap_memory_region(scp); for (i = 0; i < SCP_IPI_MAX; i++) @@ -96,6 +115,7 @@ static int scp_dual_remove(struct platform_device *pdev) struct mtk_scp *scp = platform_get_drvdata(pdev); int i; + scp_ipi_unregister(scp, SCP_IPI_INIT); scp_unmap_memory_region(scp); for (i = 0; i < SCP_IPI_MAX; i++) mutex_destroy(&scp->ipi_desc[i].lock); -- 2.18.0