]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
sysreset: qemu virt: Use map_sysmem()
authorDaniel Palmer <daniel@thingy.jp>
Sat, 16 May 2026 07:39:53 +0000 (16:39 +0900)
committerTom Rini <trini@konsulko.com>
Fri, 22 May 2026 22:47:54 +0000 (16:47 -0600)
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@thingy.jp>
Acked-by: Kuan-Wei Chiu <visitorckw@gmail.com>
drivers/sysreset/sysreset_qemu_virt_ctrl.c

index e7cacc9b6e9842c325b36e57513c154e87bfbff8..61b38d507fc53f447807c859094892e06201c84d 100644 (file)
@@ -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;
 }