Commit fad151d5 authored by AngeloGioacchino Del Regno's avatar AngeloGioacchino Del Regno Committed by Mathieu Poirier

remoteproc/mtk_scp: Use readl_poll_timeout_atomic() for polling

Convert the usage of an open-coded custom tight poll while loop
with the provided readl_poll_timeout_atomic() macro.

This cleanup brings no functional change.
Signed-off-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/20230104115341.320951-2-angelogioacchino.delregno@collabora.comSigned-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
parent e46ceea3
...@@ -6,13 +6,17 @@ ...@@ -6,13 +6,17 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/time64.h>
#include <linux/remoteproc/mtk_scp.h> #include <linux/remoteproc/mtk_scp.h>
#include "mtk_common.h" #include "mtk_common.h"
#define SCP_TIMEOUT_US (2000 * USEC_PER_MSEC)
/** /**
* scp_ipi_register() - register an ipi function * scp_ipi_register() - register an ipi function
* *
...@@ -157,6 +161,7 @@ int scp_ipi_send(struct mtk_scp *scp, u32 id, void *buf, unsigned int len, ...@@ -157,6 +161,7 @@ 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; struct mtk_share_obj __iomem *send_obj = scp->send_buf;
unsigned long timeout; unsigned long timeout;
u32 val;
int ret; int ret;
if (WARN_ON(id <= SCP_IPI_INIT) || WARN_ON(id >= SCP_IPI_MAX) || if (WARN_ON(id <= SCP_IPI_INIT) || WARN_ON(id >= SCP_IPI_MAX) ||
...@@ -173,14 +178,12 @@ int scp_ipi_send(struct mtk_scp *scp, u32 id, void *buf, unsigned int len, ...@@ -173,14 +178,12 @@ int scp_ipi_send(struct mtk_scp *scp, u32 id, void *buf, unsigned int len,
mutex_lock(&scp->send_lock); mutex_lock(&scp->send_lock);
/* Wait until SCP receives the last command */ /* Wait until SCP receives the last command */
timeout = jiffies + msecs_to_jiffies(2000); ret = readl_poll_timeout_atomic(scp->reg_base + scp->data->host_to_scp_reg,
do { val, !val, 0, SCP_TIMEOUT_US);
if (time_after(jiffies, timeout)) { if (ret) {
dev_err(scp->dev, "%s: IPI timeout!\n", __func__); dev_err(scp->dev, "%s: IPI timeout!\n", __func__);
ret = -ETIMEDOUT;
goto unlock_mutex; goto unlock_mutex;
} }
} while (readl(scp->reg_base + scp->data->host_to_scp_reg));
scp_memcpy_aligned(send_obj->share_buf, buf, len); scp_memcpy_aligned(send_obj->share_buf, buf, len);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment