dev_dbg(dev, "mbox msg: 0x%x\n", msg);
@@ -550,7 +550,7 @@ static void omap_rproc_kick(struct rproc *rproc, int vqid)
}
/* send the index of the triggered virtqueue in the mailbox payload */
- ret = mbox_send_message(oproc->mbox, (void *)vqid);
+ ret = mbox_send_message(oproc->mbox, omap_mbox_to_message(vqid));
if (ret < 0)
dev_err(dev, "failed to send mailbox message, status = %d\n",
ret);
@@ -628,7 +628,7 @@ static int omap_rproc_start(struct rproc *rproc)
* Note that the reply will _not_ arrive immediately: this message
* will wait in the mailbox fifo until the remote processor is booted.
*/
- ret = mbox_send_message(oproc->mbox, (void *)RP_MBOX_ECHO_REQUEST);
+ ret = mbox_send_message(oproc->mbox,
omap_mbox_to_message(RP_MBOX_ECHO_REQUEST));
if (ret < 0) {
dev_err(dev, "mbox_send_message failed: %d\n", ret);
goto put_mbox;
@@ -777,13 +777,13 @@ static int _omap_rproc_suspend(struct rproc *rproc, bool
auto_suspend)
struct omap_rproc *oproc = rproc->priv;
unsigned long to = msecs_to_jiffies(DEF_SUSPEND_TIMEOUT);
unsigned long ta = jiffies + to;
- u32 suspend_msg = auto_suspend ?
+ mbox_msg_t suspend_msg = auto_suspend ?
RP_MBOX_SUSPEND_AUTO : RP_MBOX_SUSPEND_SYSTEM;
int ret;
reinit_completion(&oproc->pm_comp);
oproc->suspend_acked = false;
- ret = mbox_send_message(oproc->mbox, (void *)suspend_msg);
+ ret = mbox_send_message(oproc->mbox, omap_mbox_to_message(suspend_msg));
if (ret < 0) {
dev_err(dev, "PM mbox_send_message failed: %d\n", ret);
return ret;
diff --git a/drivers/remoteproc/ti_k3_common.c
b/drivers/remoteproc/ti_k3_common.c
index 3cb8ae5d72f67..4b6da3363f6c2 100644
--- a/drivers/remoteproc/ti_k3_common.c
+++ b/drivers/remoteproc/ti_k3_common.c
@@ -54,7 +54,7 @@ void k3_rproc_mbox_callback(struct mbox_client *client, void
*data)
struct k3_rproc *kproc = container_of(client, struct k3_rproc, client);
struct device *dev = kproc->rproc->dev.parent;
struct rproc *rproc = kproc->rproc;
- u32 msg = (u32)(uintptr_t)(data);
+ mbox_msg_t msg = omap_mbox_from_message(data);
dev_dbg(dev, "mbox msg: 0x%x\n", msg);
@@ -94,15 +94,9 @@ void k3_rproc_kick(struct rproc *rproc, int vqid)
{
struct k3_rproc *kproc = rproc->priv;
struct device *dev = kproc->dev;
- u32 msg = (u32)vqid;
int ret;
- /*
- * Send the index of the triggered virtqueue in the mailbox payload.
- * NOTE: msg is cast to uintptr_t to prevent compiler warnings when
- * void* is 64bit. It is safely cast back to u32 in the mailbox driver.
- */
- ret = mbox_send_message(kproc->mbox, (void *)(uintptr_t)msg);
+ ret = mbox_send_message(kproc->mbox, omap_mbox_to_message(vqid));
if (ret < 0)
dev_err(dev, "failed to send mailbox message, status = %d\n",
ret);
diff --git a/include/linux/omap-mailbox.h b/include/linux/omap-mailbox.h
index 3cc5c4ed7f5a6..e45f8c3841c23 100644
--- a/include/linux/omap-mailbox.h
+++ b/include/linux/omap-mailbox.h
@@ -6,8 +6,9 @@
#ifndef OMAP_MAILBOX_H
#define OMAP_MAILBOX_H
-typedef uintptr_t mbox_msg_t;
+typedef u32 mbox_msg_t;
-#define omap_mbox_message(data) (u32)(mbox_msg_t)(data)
+#define omap_mbox_to_message(data) ((void *)(uintptr_t)(data))
+#define omap_mbox_from_message(data) ((mbox_msg_t)(uintptr_t)(data))
#endif /* OMAP_MAILBOX_H */
--
2.39.2