Building simplefb-fixup for 64-bit has the compiler inform us that the code doesn't handle 64-bit addresses as it should. Silence the warnings and have the code return -ENOSYS if this happens. Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- drivers/video/simplefb-fixup.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/video/simplefb-fixup.c b/drivers/video/simplefb-fixup.c index a2c59de364a5..65e0281a189f 100644 --- a/drivers/video/simplefb-fixup.c +++ b/drivers/video/simplefb-fixup.c @@ -90,6 +90,7 @@ static int simplefb_create_node(struct device_node *root, const struct fb_info *fbi, const char *format) { struct device_node *node; + phys_addr_t screen_base; u32 cells[2]; int ret; @@ -105,7 +106,11 @@ static int simplefb_create_node(struct device_node *root, if (ret) return ret; - cells[0] = cpu_to_be32((u32)fbi->screen_base); + screen_base = virt_to_phys(fbi->screen_base); + if (upper_32_bits(screen_base)) + return -ENOSYS; + + cells[0] = cpu_to_be32(lower_32_bits(screen_base)); cells[1] = cpu_to_be32(fbi->line_length * fbi->yres); ret = of_set_property(node, "reg", cells, sizeof(cells[0]) * 2, 1); if (ret < 0) @@ -130,8 +135,7 @@ static int simplefb_create_node(struct device_node *root, if (ret < 0) return ret; - of_add_reserve_entry((u32)fbi->screen_base, - (u32)fbi->screen_base + fbi->screen_size); + of_add_reserve_entry(screen_base, screen_base + fbi->screen_size); return of_property_write_string(node, "status", "okay"); } -- 2.39.2