Lines Matching refs:fb_info
34 struct fb_info *registered_fb[FB_MAX] __read_mostly;
40 struct fb_info *get_fb_info(unsigned int idx) in get_fb_info()
42 struct fb_info *fb_info; in get_fb_info() local
48 fb_info = registered_fb[idx]; in get_fb_info()
49 if (fb_info) in get_fb_info()
50 refcount_inc(&fb_info->count); in get_fb_info()
53 return fb_info; in get_fb_info()
56 void put_fb_info(struct fb_info *fb_info) in put_fb_info() argument
58 if (!refcount_dec_and_test(&fb_info->count)) in put_fb_info()
60 if (fb_info->fbops->fb_destroy) in put_fb_info()
61 fb_info->fbops->fb_destroy(fb_info); in put_fb_info()
134 char* fb_get_buffer_offset(struct fb_info *info, struct fb_pixmap *buf, u32 size) in fb_get_buffer_offset()
168 fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var) in fb_pan_display()
205 static int fb_check_caps(struct fb_info *info, struct fb_var_screeninfo *var, in fb_check_caps()
225 static void fb_lcd_notify_mode_change(struct fb_info *info, in fb_lcd_notify_mode_change()
232 fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var) in fb_set_var()
349 static void fb_lcd_notify_blank(struct fb_info *info) in fb_lcd_notify_blank()
375 static void fb_ledtrig_backlight_notify_blank(struct fb_info *info) in fb_ledtrig_backlight_notify_blank()
383 int fb_blank(struct fb_info *info, int blank) in fb_blank()
412 static int fb_check_foreignness(struct fb_info *fi) in fb_check_foreignness()
437 static int do_register_framebuffer(struct fb_info *fb_info) in do_register_framebuffer() argument
442 if (fb_check_foreignness(fb_info)) in do_register_framebuffer()
455 if (!fb_info->modelist.prev || !fb_info->modelist.next) in do_register_framebuffer()
456 INIT_LIST_HEAD(&fb_info->modelist); in do_register_framebuffer()
458 fb_var_to_videomode(&mode, &fb_info->var); in do_register_framebuffer()
459 err = fb_add_videomode(&mode, &fb_info->modelist); in do_register_framebuffer()
463 fb_info->node = i; in do_register_framebuffer()
464 refcount_set(&fb_info->count, 1); in do_register_framebuffer()
465 mutex_init(&fb_info->lock); in do_register_framebuffer()
466 mutex_init(&fb_info->mm_lock); in do_register_framebuffer()
473 if (fb_info->fbops->fb_blank) in do_register_framebuffer()
474 fb_info->blank = FB_BLANK_POWERDOWN; in do_register_framebuffer()
476 fb_device_create(fb_info); in do_register_framebuffer()
478 if (fb_info->pixmap.addr == NULL) { in do_register_framebuffer()
479 fb_info->pixmap.addr = kmalloc(FBPIXMAPSIZE, GFP_KERNEL); in do_register_framebuffer()
480 if (fb_info->pixmap.addr) { in do_register_framebuffer()
481 fb_info->pixmap.size = FBPIXMAPSIZE; in do_register_framebuffer()
482 fb_info->pixmap.buf_align = 1; in do_register_framebuffer()
483 fb_info->pixmap.scan_align = 1; in do_register_framebuffer()
484 fb_info->pixmap.access_align = 32; in do_register_framebuffer()
485 fb_info->pixmap.flags = FB_PIXMAP_DEFAULT; in do_register_framebuffer()
488 fb_info->pixmap.offset = 0; in do_register_framebuffer()
490 if (bitmap_empty(fb_info->pixmap.blit_x, FB_MAX_BLIT_WIDTH)) in do_register_framebuffer()
491 bitmap_fill(fb_info->pixmap.blit_x, FB_MAX_BLIT_WIDTH); in do_register_framebuffer()
493 if (bitmap_empty(fb_info->pixmap.blit_y, FB_MAX_BLIT_HEIGHT)) in do_register_framebuffer()
494 bitmap_fill(fb_info->pixmap.blit_y, FB_MAX_BLIT_HEIGHT); in do_register_framebuffer()
496 if (fb_info->skip_vt_switch) in do_register_framebuffer()
497 pm_vt_switch_required(fb_info->device, false); in do_register_framebuffer()
499 pm_vt_switch_required(fb_info->device, true); in do_register_framebuffer()
502 registered_fb[i] = fb_info; in do_register_framebuffer()
507 event.info = fb_info; in do_register_framebuffer()
512 return fbcon_fb_registered(fb_info); in do_register_framebuffer()
515 static void unbind_console(struct fb_info *fb_info) in unbind_console() argument
517 int i = fb_info->node; in unbind_console()
519 if (WARN_ON(i < 0 || i >= FB_MAX || registered_fb[i] != fb_info)) in unbind_console()
522 fbcon_fb_unbind(fb_info); in unbind_console()
525 static void unlink_framebuffer(struct fb_info *fb_info) in unlink_framebuffer() argument
529 i = fb_info->node; in unlink_framebuffer()
530 if (WARN_ON(i < 0 || i >= FB_MAX || registered_fb[i] != fb_info)) in unlink_framebuffer()
533 fb_device_destroy(fb_info); in unlink_framebuffer()
534 pm_vt_switch_unregister(fb_info->device); in unlink_framebuffer()
535 unbind_console(fb_info); in unlink_framebuffer()
538 static void do_unregister_framebuffer(struct fb_info *fb_info) in do_unregister_framebuffer() argument
540 unlink_framebuffer(fb_info); in do_unregister_framebuffer()
541 if (fb_info->pixmap.addr && in do_unregister_framebuffer()
542 (fb_info->pixmap.flags & FB_PIXMAP_DEFAULT)) { in do_unregister_framebuffer()
543 kfree(fb_info->pixmap.addr); in do_unregister_framebuffer()
544 fb_info->pixmap.addr = NULL; in do_unregister_framebuffer()
547 fb_destroy_modelist(&fb_info->modelist); in do_unregister_framebuffer()
548 registered_fb[fb_info->node] = NULL; in do_unregister_framebuffer()
553 event.info = fb_info; in do_unregister_framebuffer()
557 fbcon_fb_unregistered(fb_info); in do_unregister_framebuffer()
560 put_fb_info(fb_info); in do_unregister_framebuffer()
573 register_framebuffer(struct fb_info *fb_info) in register_framebuffer() argument
578 ret = do_register_framebuffer(fb_info); in register_framebuffer()
602 unregister_framebuffer(struct fb_info *fb_info) in unregister_framebuffer() argument
605 do_unregister_framebuffer(fb_info); in unregister_framebuffer()
612 struct fb_info *info = data; in devm_unregister_framebuffer()
628 devm_register_framebuffer(struct device *dev, struct fb_info *fb_info) in devm_register_framebuffer() argument
632 ret = register_framebuffer(fb_info); in devm_register_framebuffer()
636 return devm_add_action_or_reset(dev, devm_unregister_framebuffer, fb_info); in devm_register_framebuffer()
649 void fb_set_suspend(struct fb_info *info, int state) in fb_set_suspend()
712 int fb_new_modelist(struct fb_info *info) in fb_new_modelist()