Hi Geert,
I guess it dies in register_framebuffer() - the next log entry is missing:fb_info(&fb_info, "frame buffer device, using %dK of video memory\n",screen_len >> 10);And register_framebuffer() will write to the frame buffer, I think. So info->screen_base may be incorrect. Yep: static void atafb_set_disp(struct fb_info *info) { atafb_get_var(&info->var, info); atafb_get_fix(&info->fix, info); info->screen_base = (void *)info->fix.smem_start; } Missing atari_stram_to_virt().Should have had phys_to_virt() before I guess. Thanks.
Bingo!
Any other casts that indicate bugs? ;-)Probably - I'll go over the source again. My port of atafb a few years back was none too subtle.
Only a few more - in the external VGA adapter code, in the ioctl code (copy tp/from user) and one in the atafb_imageblit() that I'm fairly sure is dead code.
ARAnyM is happy - I'll have yet to see how this works on real hardware. We might yet need a writethrough mapping for performance.
In the interest of minimizing casts, I'll rewrite the virt/phys translation helpers and clean up the rest of the code a bit more. Saves a bit of headache when I need to revisit this code in another decade or so :-)
Thanks again for your help in tracking this down. Cheers, Michael