Lines Matching refs:info
77 int lock_fb_info(struct fb_info *info) in lock_fb_info() argument
79 mutex_lock(&info->lock); in lock_fb_info()
80 if (!info->fbops) { in lock_fb_info()
81 mutex_unlock(&info->lock); in lock_fb_info()
158 char* fb_get_buffer_offset(struct fb_info *info, struct fb_pixmap *buf, u32 size) in fb_get_buffer_offset() argument
167 if (info->fbops->fb_sync && (buf->flags & FB_PIXMAP_SYNC)) in fb_get_buffer_offset()
168 info->fbops->fb_sync(info); in fb_get_buffer_offset()
180 if (info->fbops->fb_sync && (buf->flags & FB_PIXMAP_SYNC)) in fb_get_buffer_offset()
181 info->fbops->fb_sync(info); in fb_get_buffer_offset()
198 static void fb_set_logocmap(struct fb_info *info, in fb_set_logocmap() argument
228 fb_set_cmap(&palette_cmap, info); in fb_set_logocmap()
232 static void fb_set_logo_truepalette(struct fb_info *info, in fb_set_logo_truepalette() argument
247 redmask = mask[info->var.red.length < 8 ? info->var.red.length : 8]; in fb_set_logo_truepalette()
248 greenmask = mask[info->var.green.length < 8 ? info->var.green.length : 8]; in fb_set_logo_truepalette()
249 bluemask = mask[info->var.blue.length < 8 ? info->var.blue.length : 8]; in fb_set_logo_truepalette()
250 redshift = info->var.red.offset - (8 - info->var.red.length); in fb_set_logo_truepalette()
251 greenshift = info->var.green.offset - (8 - info->var.green.length); in fb_set_logo_truepalette()
252 blueshift = info->var.blue.offset - (8 - info->var.blue.length); in fb_set_logo_truepalette()
262 static void fb_set_logo_directpalette(struct fb_info *info, in fb_set_logo_directpalette() argument
269 redshift = info->var.red.offset; in fb_set_logo_directpalette()
270 greenshift = info->var.green.offset; in fb_set_logo_directpalette()
271 blueshift = info->var.blue.offset; in fb_set_logo_directpalette()
277 static void fb_set_logo(struct fb_info *info, in fb_set_logo() argument
283 u8 xor = (info->fix.visual == FB_VISUAL_MONO01) ? 0xff : 0; in fb_set_logo()
286 switch (fb_get_color_depth(&info->var, &info->fix)) { in fb_set_logo()
298 if (info->fix.visual == FB_VISUAL_MONO01 || in fb_set_logo()
299 info->fix.visual == FB_VISUAL_MONO10) in fb_set_logo()
300 fg = ~((u8) (0xfff << info->var.green.length)); in fb_set_logo()
390 static void fb_rotate_logo(struct fb_info *info, u8 *dst, in fb_rotate_logo() argument
398 image->dx = info->var.xres - image->width - image->dx; in fb_rotate_logo()
399 image->dy = info->var.yres - image->height - image->dy; in fb_rotate_logo()
408 image->dx = info->var.xres - image->width - tmp; in fb_rotate_logo()
417 image->dy = info->var.yres - image->height - tmp; in fb_rotate_logo()
423 static void fb_do_show_logo(struct fb_info *info, struct fb_image *image, in fb_do_show_logo() argument
430 x < num && image->dx + image->width <= info->var.xres; in fb_do_show_logo()
432 info->fbops->fb_imageblit(info, image); in fb_do_show_logo()
437 info->fbops->fb_imageblit(info, image); in fb_do_show_logo()
442 x < num && image->dy + image->height <= info->var.yres; in fb_do_show_logo()
444 info->fbops->fb_imageblit(info, image); in fb_do_show_logo()
449 info->fbops->fb_imageblit(info, image); in fb_do_show_logo()
455 static int fb_show_logo_line(struct fb_info *info, int rotate, in fb_show_logo_line() argument
464 if (logo == NULL || info->state != FBINFO_STATE_RUNNING || in fb_show_logo_line()
465 info->flags & FBINFO_MODULE) in fb_show_logo_line()
472 fb_set_logocmap(info, logo); in fb_show_logo_line()
481 fb_set_logo_truepalette(info, logo, palette); in fb_show_logo_line()
483 fb_set_logo_directpalette(info, logo, palette); in fb_show_logo_line()
485 saved_pseudo_palette = info->pseudo_palette; in fb_show_logo_line()
486 info->pseudo_palette = palette; in fb_show_logo_line()
494 info->pseudo_palette = saved_pseudo_palette; in fb_show_logo_line()
498 fb_set_logo(info, logo, logo_new, fb_logo.depth); in fb_show_logo_line()
510 fb_rotate_logo(info, logo_rotate, &image, rotate); in fb_show_logo_line()
513 fb_do_show_logo(info, &image, rotate, n); in fb_show_logo_line()
517 info->pseudo_palette = saved_pseudo_palette; in fb_show_logo_line()
543 static int fb_prepare_extra_logos(struct fb_info *info, unsigned int height, in fb_prepare_extra_logos() argument
549 if (info->fix.visual != FB_VISUAL_TRUECOLOR) in fb_prepare_extra_logos()
567 static int fb_show_extra_logos(struct fb_info *info, int y, int rotate) in fb_show_extra_logos() argument
572 y += fb_show_logo_line(info, rotate, in fb_show_extra_logos()
580 static inline int fb_prepare_extra_logos(struct fb_info *info, in fb_prepare_extra_logos() argument
587 static inline int fb_show_extra_logos(struct fb_info *info, int y, int rotate) in fb_show_extra_logos() argument
595 int fb_prepare_logo(struct fb_info *info, int rotate) in fb_prepare_logo() argument
597 int depth = fb_get_color_depth(&info->var, &info->fix); in fb_prepare_logo()
602 if (info->flags & FBINFO_MISC_TILEBLITTING || in fb_prepare_logo()
603 info->flags & FBINFO_MODULE) in fb_prepare_logo()
606 if (info->fix.visual == FB_VISUAL_DIRECTCOLOR) { in fb_prepare_logo()
607 depth = info->var.blue.length; in fb_prepare_logo()
608 if (info->var.red.length < depth) in fb_prepare_logo()
609 depth = info->var.red.length; in fb_prepare_logo()
610 if (info->var.green.length < depth) in fb_prepare_logo()
611 depth = info->var.green.length; in fb_prepare_logo()
614 if (info->fix.visual == FB_VISUAL_STATIC_PSEUDOCOLOR && depth > 4) { in fb_prepare_logo()
627 yres = info->var.yres; in fb_prepare_logo()
629 yres = info->var.xres; in fb_prepare_logo()
646 switch (info->fix.visual) { in fb_prepare_logo()
660 return fb_prepare_extra_logos(info, fb_logo.logo->height, yres); in fb_prepare_logo()
663 int fb_show_logo(struct fb_info *info, int rotate) in fb_show_logo() argument
667 y = fb_show_logo_line(info, rotate, fb_logo.logo, 0, in fb_show_logo()
669 y = fb_show_extra_logos(info, y, rotate); in fb_show_logo()
674 int fb_prepare_logo(struct fb_info *info, int rotate) { return 0; } in fb_prepare_logo() argument
675 int fb_show_logo(struct fb_info *info, int rotate) { return 0; } in fb_show_logo() argument
739 struct fb_info *info = registered_fb[fbidx]; in file_fb_info() local
741 if (info != file->private_data) in file_fb_info()
742 info = NULL; in file_fb_info()
743 return info; in file_fb_info()
750 struct fb_info *info = file_fb_info(file); in fb_read() local
756 if (!info || ! info->screen_base) in fb_read()
759 if (info->state != FBINFO_STATE_RUNNING) in fb_read()
762 if (info->fbops->fb_read) in fb_read()
763 return info->fbops->fb_read(info, buf, count, ppos); in fb_read()
765 total_size = info->screen_size; in fb_read()
768 total_size = info->fix.smem_len; in fb_read()
784 src = (u8 __iomem *) (info->screen_base + p); in fb_read()
786 if (info->fbops->fb_sync) in fb_read()
787 info->fbops->fb_sync(info); in fb_read()
815 struct fb_info *info = file_fb_info(file); in fb_write() local
821 if (!info || !info->screen_base) in fb_write()
824 if (info->state != FBINFO_STATE_RUNNING) in fb_write()
827 if (info->fbops->fb_write) in fb_write()
828 return info->fbops->fb_write(info, buf, count, ppos); in fb_write()
830 total_size = info->screen_size; in fb_write()
833 total_size = info->fix.smem_len; in fb_write()
855 dst = (u8 __iomem *) (info->screen_base + p); in fb_write()
857 if (info->fbops->fb_sync) in fb_write()
858 info->fbops->fb_sync(info); in fb_write()
884 fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var) in fb_pan_display() argument
886 struct fb_fix_screeninfo *fix = &info->fix; in fb_pan_display()
887 unsigned int yres = info->var.yres; in fb_pan_display()
904 if (err || !info->fbops->fb_pan_display || in fb_pan_display()
905 var->yoffset > info->var.yres_virtual - yres || in fb_pan_display()
906 var->xoffset > info->var.xres_virtual - info->var.xres) in fb_pan_display()
909 if ((err = info->fbops->fb_pan_display(var, info))) in fb_pan_display()
911 info->var.xoffset = var->xoffset; in fb_pan_display()
912 info->var.yoffset = var->yoffset; in fb_pan_display()
914 info->var.vmode |= FB_VMODE_YWRAP; in fb_pan_display()
916 info->var.vmode &= ~FB_VMODE_YWRAP; in fb_pan_display()
921 static int fb_check_caps(struct fb_info *info, struct fb_var_screeninfo *var, in fb_check_caps() argument
931 event.info = info; in fb_check_caps()
934 info->fbops->fb_get_caps(info, &fbcaps, var); in fb_check_caps()
945 fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var) in fb_set_var() argument
947 int flags = info->flags; in fb_set_var()
954 fb_var_to_videomode(&mode2, &info->var); in fb_set_var()
961 event.info = info; in fb_set_var()
967 fb_delete_videomode(&mode1, &info->modelist); in fb_set_var()
975 memcmp(&info->var, var, sizeof(struct fb_var_screeninfo))) { in fb_set_var()
981 if ((info->fix.capabilities & FB_CAP_FOURCC) && in fb_set_var()
992 if (!info->fbops->fb_check_var) { in fb_set_var()
993 *var = info->var; in fb_set_var()
997 ret = info->fbops->fb_check_var(var, info); in fb_set_var()
1006 if (info->fbops->fb_get_caps) { in fb_set_var()
1007 ret = fb_check_caps(info, var, activate); in fb_set_var()
1013 old_var = info->var; in fb_set_var()
1014 info->var = *var; in fb_set_var()
1016 if (info->fbops->fb_set_par) { in fb_set_var()
1017 ret = info->fbops->fb_set_par(info); in fb_set_var()
1020 info->var = old_var; in fb_set_var()
1028 fb_pan_display(info, &info->var); in fb_set_var()
1029 fb_set_cmap(&info->cmap, info); in fb_set_var()
1030 fb_var_to_videomode(&mode, &info->var); in fb_set_var()
1032 if (info->modelist.prev && info->modelist.next && in fb_set_var()
1033 !list_empty(&info->modelist)) in fb_set_var()
1034 ret = fb_add_videomode(&mode, &info->modelist); in fb_set_var()
1042 info->flags &= ~FBINFO_MISC_USEREVENT; in fb_set_var()
1043 event.info = info; in fb_set_var()
1056 fb_blank(struct fb_info *info, int blank) in fb_blank() argument
1064 event.info = info; in fb_blank()
1069 if (info->fbops->fb_blank) in fb_blank()
1070 ret = info->fbops->fb_blank(blank, info); in fb_blank()
1087 static long do_fb_ioctl(struct fb_info *info, unsigned int cmd, in do_fb_ioctl() argument
1102 if (!lock_fb_info(info)) in do_fb_ioctl()
1104 var = info->var; in do_fb_ioctl()
1105 unlock_fb_info(info); in do_fb_ioctl()
1113 if (!lock_fb_info(info)) { in do_fb_ioctl()
1117 info->flags |= FBINFO_MISC_USEREVENT; in do_fb_ioctl()
1118 ret = fb_set_var(info, &var); in do_fb_ioctl()
1119 info->flags &= ~FBINFO_MISC_USEREVENT; in do_fb_ioctl()
1120 unlock_fb_info(info); in do_fb_ioctl()
1126 if (!lock_fb_info(info)) in do_fb_ioctl()
1128 fix = info->fix; in do_fb_ioctl()
1129 unlock_fb_info(info); in do_fb_ioctl()
1136 ret = fb_set_user_cmap(&cmap, info); in do_fb_ioctl()
1141 if (!lock_fb_info(info)) in do_fb_ioctl()
1143 cmap_from = info->cmap; in do_fb_ioctl()
1144 unlock_fb_info(info); in do_fb_ioctl()
1151 if (!lock_fb_info(info)) { in do_fb_ioctl()
1155 ret = fb_pan_display(info, &var); in do_fb_ioctl()
1156 unlock_fb_info(info); in do_fb_ioctl()
1171 if (!lock_fb_info(info)) in do_fb_ioctl()
1173 event.info = info; in do_fb_ioctl()
1175 unlock_fb_info(info); in do_fb_ioctl()
1193 if (!lock_fb_info(info)) { in do_fb_ioctl()
1197 event.info = info; in do_fb_ioctl()
1199 unlock_fb_info(info); in do_fb_ioctl()
1204 if (!lock_fb_info(info)) { in do_fb_ioctl()
1208 info->flags |= FBINFO_MISC_USEREVENT; in do_fb_ioctl()
1209 ret = fb_blank(info, arg); in do_fb_ioctl()
1210 info->flags &= ~FBINFO_MISC_USEREVENT; in do_fb_ioctl()
1211 unlock_fb_info(info); in do_fb_ioctl()
1215 if (!lock_fb_info(info)) in do_fb_ioctl()
1217 fb = info->fbops; in do_fb_ioctl()
1219 ret = fb->fb_ioctl(info, cmd, arg); in do_fb_ioctl()
1222 unlock_fb_info(info); in do_fb_ioctl()
1229 struct fb_info *info = file_fb_info(file); in fb_ioctl() local
1231 if (!info) in fb_ioctl()
1233 return do_fb_ioctl(info, cmd, arg); in fb_ioctl()
1263 static int fb_getput_cmap(struct fb_info *info, unsigned int cmd, in fb_getput_cmap() argument
1287 err = do_fb_ioctl(info, cmd, (unsigned long) cmap); in fb_getput_cmap()
1331 static int fb_get_fscreeninfo(struct fb_info *info, unsigned int cmd, in fb_get_fscreeninfo() argument
1343 err = do_fb_ioctl(info, cmd, (unsigned long) &fix); in fb_get_fscreeninfo()
1355 struct fb_info *info = file_fb_info(file); in fb_compat_ioctl() local
1359 if (!info) in fb_compat_ioctl()
1361 fb = info->fbops; in fb_compat_ioctl()
1370 ret = do_fb_ioctl(info, cmd, arg); in fb_compat_ioctl()
1374 ret = fb_get_fscreeninfo(info, cmd, arg); in fb_compat_ioctl()
1379 ret = fb_getput_cmap(info, cmd, arg); in fb_compat_ioctl()
1384 ret = fb->fb_compat_ioctl(info, cmd, arg); in fb_compat_ioctl()
1394 struct fb_info *info = file_fb_info(file); in fb_mmap() local
1400 if (!info) in fb_mmap()
1402 fb = info->fbops; in fb_mmap()
1405 mutex_lock(&info->mm_lock); in fb_mmap()
1408 res = fb->fb_mmap(info, vma); in fb_mmap()
1409 mutex_unlock(&info->mm_lock); in fb_mmap()
1417 start = info->fix.smem_start; in fb_mmap()
1418 len = info->fix.smem_len; in fb_mmap()
1421 if (info->var.accel_flags) { in fb_mmap()
1422 mutex_unlock(&info->mm_lock); in fb_mmap()
1427 start = info->fix.mmio_start; in fb_mmap()
1428 len = info->fix.mmio_len; in fb_mmap()
1430 mutex_unlock(&info->mm_lock); in fb_mmap()
1440 __acquires(&info->lock) in fb_open()
1441 __releases(&info->lock) in fb_open()
1444 struct fb_info *info; in fb_open() local
1447 info = get_fb_info(fbidx); in fb_open()
1448 if (!info) { in fb_open()
1450 info = get_fb_info(fbidx); in fb_open()
1451 if (!info) in fb_open()
1454 if (IS_ERR(info)) in fb_open()
1455 return PTR_ERR(info); in fb_open()
1457 mutex_lock(&info->lock); in fb_open()
1458 if (!try_module_get(info->fbops->owner)) { in fb_open()
1462 file->private_data = info; in fb_open()
1463 if (info->fbops->fb_open) { in fb_open()
1464 res = info->fbops->fb_open(info,1); in fb_open()
1466 module_put(info->fbops->owner); in fb_open()
1469 if (info->fbdefio) in fb_open()
1470 fb_deferred_io_open(info, inode, file); in fb_open()
1473 mutex_unlock(&info->lock); in fb_open()
1475 put_fb_info(info); in fb_open()
1481 __acquires(&info->lock) in fb_release()
1482 __releases(&info->lock) in fb_release()
1484 struct fb_info * const info = file->private_data; in fb_release() local
1486 mutex_lock(&info->lock); in fb_release()
1487 if (info->fbops->fb_release) in fb_release()
1488 info->fbops->fb_release(info,1); in fb_release()
1489 module_put(info->fbops->owner); in fb_release()
1490 mutex_unlock(&info->lock); in fb_release()
1491 put_fb_info(info); in fb_release()
1677 event.info = fb_info; in do_register_framebuffer()
1705 event.info = fb_info; in do_unregister_framebuffer()
1723 event.info = fb_info; in do_unregister_framebuffer()
1822 void fb_set_suspend(struct fb_info *info, int state) in fb_set_suspend() argument
1826 event.info = info; in fb_set_suspend()
1829 info->state = FBINFO_STATE_SUSPENDED; in fb_set_suspend()
1831 info->state = FBINFO_STATE_RUNNING; in fb_set_suspend()
1879 int fb_new_modelist(struct fb_info *info) in fb_new_modelist() argument
1882 struct fb_var_screeninfo var = info->var; in fb_new_modelist()
1888 list_for_each_safe(pos, n, &info->modelist) { in fb_new_modelist()
1893 err = fb_set_var(info, &var); in fb_new_modelist()
1903 if (!list_empty(&info->modelist)) { in fb_new_modelist()
1904 event.info = info; in fb_new_modelist()