[PATCH v7 1/9] sysreset: qemu virt: Use map_sysmem()
Kuan-Wei Chiu
visitorckw at gmail.com
Mon May 18 19:46:10 CEST 2026
On Sat, May 16, 2026 at 04:39:53PM +0900, Daniel Palmer wrote:
> In the platform data there is a phys_addr_t (an integer) for the address
> of the register and we pass that as-is into writel() which is fine in most
> places because we don't need to do any mapping and the macro for writel()
> does a cast to a pointer.
>
> If writel() is a static inline function the address argument is a pointer
> so passing it in as an integer without casting it first causes warnings or
> build failure.
>
> map_sysmem() handles the casting part and if phys_addr_t is 32bits when
> on a 64bit machine.
>
> Signed-off-by: Daniel Palmer <daniel at thingy.jp>
Acked-by: Kuan-Wei Chiu <visitorckw at gmail.com>
> ---
> drivers/sysreset/sysreset_qemu_virt_ctrl.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/sysreset/sysreset_qemu_virt_ctrl.c b/drivers/sysreset/sysreset_qemu_virt_ctrl.c
> index e7cacc9b6e98..61b38d507fc5 100644
> --- a/drivers/sysreset/sysreset_qemu_virt_ctrl.c
> +++ b/drivers/sysreset/sysreset_qemu_virt_ctrl.c
> @@ -8,6 +8,7 @@
> #include <dm.h>
> #include <qemu_virt_ctrl.h>
> #include <sysreset.h>
> +#include <mapmem.h>
> #include <asm/io.h>
> #include <linux/err.h>
>
> @@ -24,6 +25,7 @@
> static int qemu_virt_ctrl_request(struct udevice *dev, enum sysreset_t type)
> {
> struct qemu_virt_ctrl_plat *plat = dev_get_plat(dev);
> + void __iomem *reg = map_sysmem(plat->reg + VIRT_CTRL_REG_CMD, 0x4);
> u32 val;
>
> switch (type) {
> @@ -38,7 +40,7 @@ static int qemu_virt_ctrl_request(struct udevice *dev, enum sysreset_t type)
> return -EPROTONOSUPPORT;
> }
>
> - writel(val, plat->reg + VIRT_CTRL_REG_CMD);
> + writel(val, reg);
>
> return -EINPROGRESS;
> }
> --
> 2.53.0
>
More information about the U-Boot
mailing list