aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/remoteproc/mtk_scp_ipi.c
diff options
context:
space:
mode:
authorOlivia Wen <olivia.wen@mediatek.com>2024-04-30 09:15:33 +0800
committerMathieu Poirier <mathieu.poirier@linaro.org>2024-04-30 10:43:59 -0600
commitc08a824945009aefcb4d70705f195ad15fe26e64 (patch)
tree6225932ea873cffd062c266c54e028d9edf2b14c /drivers/remoteproc/mtk_scp_ipi.c
parentremoteproc: mediatek: Support MT8188 SCP core 1 (diff)
downloadwireguard-linux-c08a824945009aefcb4d70705f195ad15fe26e64.tar.xz
wireguard-linux-c08a824945009aefcb4d70705f195ad15fe26e64.zip
remoteproc: mediatek: Support setting DRAM and IPI shared buffer sizes
The SCP on different chips will require different DRAM sizes and IPI shared buffer sizes based on varying requirements. Signed-off-by: Olivia Wen <olivia.wen@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Link: https://lore.kernel.org/r/20240430011534.9587-4-olivia.wen@mediatek.com Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Diffstat (limited to '')
-rw-r--r--drivers/remoteproc/mtk_scp_ipi.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/remoteproc/mtk_scp_ipi.c b/drivers/remoteproc/mtk_scp_ipi.c
index cd0b60106ec2..c068227e251e 100644
--- a/drivers/remoteproc/mtk_scp_ipi.c
+++ b/drivers/remoteproc/mtk_scp_ipi.c
@@ -162,10 +162,13 @@ int scp_ipi_send(struct mtk_scp *scp, u32 id, void *buf, unsigned int len,
struct mtk_share_obj __iomem *send_obj = scp->send_buf;
u32 val;
int ret;
+ const struct mtk_scp_sizes_data *scp_sizes;
+
+ scp_sizes = scp->data->scp_sizes;
if (WARN_ON(id <= SCP_IPI_INIT) || WARN_ON(id >= SCP_IPI_MAX) ||
WARN_ON(id == SCP_IPI_NS_SERVICE) ||
- WARN_ON(len > sizeof(send_obj->share_buf)) || WARN_ON(!buf))
+ WARN_ON(len > scp_sizes->ipi_share_buffer_size) || WARN_ON(!buf))
return -EINVAL;
ret = clk_prepare_enable(scp->clk);
@@ -184,7 +187,7 @@ int scp_ipi_send(struct mtk_scp *scp, u32 id, void *buf, unsigned int len,
goto unlock_mutex;
}
- scp_memcpy_aligned(send_obj->share_buf, buf, len);
+ scp_memcpy_aligned(&send_obj->share_buf, buf, len);
writel(len, &send_obj->len);
writel(id, &send_obj->id);