diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index 98843c2..72b3113 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c @@ -1470,9 +1470,23 @@ register_framebuffer(struct fb_info *fb_info) if (!fb_info->pixmap.blit_y) fb_info->pixmap.blit_y = ~(u32)0; - if (!fb_info->modelist.prev || !fb_info->modelist.next) + if (!fb_info->modelist.prev || !fb_info->modelist.next) { INIT_LIST_HEAD(&fb_info->modelist); + /* For drivers which does not support mode setting + * initialize an emulated modeline */ + if (!fb_info->fbops->fb_check_var && + fb_info->var.pixclock == 0) { + char modestr[32]; + snprintf(modestr, sizeof(modestr), "%dx%d-%d", + fb_info->var.xres, + fb_info->var.yres, + fb_info->var.bits_per_pixel); + fb_find_mode(&fb_info->var, fb_info, modestr, + NULL, 0, NULL, fb_info->var.bits_per_pixel); + } + } + fb_var_to_videomode(&mode, &fb_info->var); fb_add_videomode(&mode, &fb_info->modelist); registered_fb[i] = fb_info;