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: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Link: https://lore.kernel.org/r/20230104115341.320951-2-angelogioacchino.delregno@collabora.com Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
This commit is contained in:
parent
e46ceea314
commit
fad151d52b
|
@ -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,
|
||||||
{
|
{
|
||||||
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,
|
||||||
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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue