On Wed, 2022-07-27 at 10:41 +0200, Thomas Zimmermann wrote: > > > > +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.