remoteproc: Add common wc-ioremap carveout callbacks

Several remoteproc drivers open-code the same ioremap_wc() and
iounmap() callbacks for carveout mappings. Add subsystem-private
helpers in remoteproc_internal.h so those drivers can share the same
implementation.

Keep this change behavior-neutral. The helper now emits a common error
message on ioremap_wc() failure, but leaves mem->is_iomem handling to a
follow-on patch so that the behavioral change can be justified
separately.

Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
Tested-by: Peng Fan <peng.fan@nxp.com> #i.MX8MP-EVK
Link: https://lore.kernel.org/r/20260529021637.2077602-2-ben.levinsky@amd.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
This commit is contained in:
Ben Levinsky 2026-05-28 19:16:33 -07:00 committed by Mathieu Poirier
parent dc59e4fea9
commit 50227acbf4

View File

@ -14,6 +14,7 @@
#include <linux/irqreturn.h>
#include <linux/firmware.h>
#include <linux/io.h>
struct rproc;
@ -122,6 +123,31 @@ rproc_find_carveout_by_name(struct rproc *rproc, const char *name, ...);
void rproc_add_rvdev(struct rproc *rproc, struct rproc_vdev *rvdev);
void rproc_remove_rvdev(struct rproc_vdev *rvdev);
static inline int rproc_mem_entry_ioremap_wc(struct rproc *rproc,
struct rproc_mem_entry *mem)
{
void __iomem *va;
va = ioremap_wc(mem->dma, mem->len);
if (!va) {
dev_err(&rproc->dev, "Unable to map memory region: %pa+%zx\n",
&mem->dma, mem->len);
return -ENOMEM;
}
mem->va = (__force void *)va;
return 0;
}
static inline int rproc_mem_entry_iounmap(struct rproc *rproc,
struct rproc_mem_entry *mem)
{
iounmap((__force __iomem void *)mem->va);
return 0;
}
static inline int rproc_prepare_device(struct rproc *rproc)
{
if (rproc->ops->prepare)