On Wed, 2022-07-27 at 10:41 +0200, Thomas Zimmermann wrote:
quoted
quoted
+static void __iomem *ofdrm_mach64_cmap_ioremap(struct ofdrm_device *odev,
+ struct device_node *of_node,
+ u64 fb_base)
+{
+ struct drm_device *dev = &odev->dev;
+ u64 address;
+ void __iomem *cmap_base;
+
+ address = fb_base & 0xff000000ul;
+ address += 0x7ff000;
+
It would be good to know where these addresses are coming from. Maybe some
constant macros or a comment ? Same for the other places where addresses
and offsets are used.
I have no idea where these values come from. I took them from offb. And
I suspect that some of these CMAP helpers could be further merged if
only it was clear where the numbers come from. But as i don't have the
equipment for testing, I took most of this literally as-is from offb.
Ancient black magic :-) Old ATI mach64 chips had the registers sitting
at the end of the framebuffer. You can find an equivalent in
drivers/video/aty/atyfb_base.c:atyfb_setup_generic():
raddr = addr + 0x7ff000UL;
Cheers,
Ben.