Lines Matching defs:info

189 static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
193 static void fbcon_modechanged(struct fb_info *info);
194 static void fbcon_set_all_vcs(struct fb_info *info);
199 static inline void fbcon_set_rotation(struct fb_info *info)
201 struct fbcon_ops *ops = info->fbcon_par;
203 if (!(info->flags & FBINFO_MISC_TILEBLITTING) &&
210 static void fbcon_rotate(struct fb_info *info, u32 rotate)
212 struct fbcon_ops *ops= info->fbcon_par;
220 if (info == fb_info) {
228 fbcon_modechanged(info);
232 static void fbcon_rotate_all(struct fb_info *info, u32 rotate)
234 struct fbcon_ops *ops = info->fbcon_par;
245 fbcon_info_from_console(i) != info)
252 fbcon_set_all_vcs(info);
255 static inline void fbcon_set_rotation(struct fb_info *info)
257 struct fbcon_ops *ops = info->fbcon_par;
262 static void fbcon_rotate(struct fb_info *info, u32 rotate)
267 static void fbcon_rotate_all(struct fb_info *info, u32 rotate)
273 static int fbcon_get_rotate(struct fb_info *info)
275 struct fbcon_ops *ops = info->fbcon_par;
280 static bool fbcon_skip_panic(struct fb_info *info)
286 return (info->skip_panic && unlikely(oops_in_progress));
288 return (info->skip_panic && unlikely(atomic_read(&panic_cpu) != PANIC_CPU_INVALID));
292 static inline bool fbcon_is_active(struct vc_data *vc, struct fb_info *info)
294 struct fbcon_ops *ops = info->fbcon_par;
296 return info->state == FBINFO_STATE_RUNNING &&
297 vc->vc_mode == KD_TEXT && !ops->graphics && !fbcon_skip_panic(info);
300 static int get_color(struct vc_data *vc, struct fb_info *info,
303 int depth = fb_get_color_depth(&info->var, &info->fix);
319 int col = mono_col(info);
321 int fg = (info->fix.visual != FB_VISUAL_MONO01) ? col : 0;
322 int bg = (info->fix.visual != FB_VISUAL_MONO01) ? 0 : col;
367 static int get_fg_color(struct vc_data *vc, struct fb_info *info, u16 c)
369 return get_color(vc, info, c, true);
372 static int get_bg_color(struct vc_data *vc, struct fb_info *info, u16 c)
374 return get_color(vc, info, c, false);
380 struct fb_info *info;
394 info = ops->info;
400 fbcon_info_from_console(vc->vc_num) != info ||
408 ops->cursor(vc, info, enable,
409 get_fg_color(vc, info, c),
410 get_bg_color(vc, info, c));
417 static void fbcon_add_cursor_work(struct fb_info *info)
419 struct fbcon_ops *ops = info->fbcon_par;
426 static void fbcon_del_cursor_work(struct fb_info *info)
428 struct fbcon_ops *ops = info->fbcon_par;
580 static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
586 static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
590 struct fbcon_ops *ops = info->fbcon_par;
595 if (info->fbops->owner) {
604 if (fb_get_color_depth(&info->var, &info->fix) == 1)
606 logo_height = fb_prepare_logo(info, ops->rotate);
676 static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
678 struct fbcon_ops *ops = info->fbcon_par;
682 if ((info->flags & FBINFO_MISC_TILEBLITTING))
683 fbcon_set_tileops(vc, info);
685 fbcon_set_rotation(info);
690 static int fbcon_invalid_charcount(struct fb_info *info, unsigned charcount)
694 if (info->flags & FBINFO_MISC_TILEBLITTING &&
695 info->tileops->fb_get_tilemax(info) < charcount)
701 static void set_blitting_type(struct vc_data *vc, struct fb_info *info)
703 struct fbcon_ops *ops = info->fbcon_par;
705 info->flags &= ~FBINFO_MISC_TILEBLITTING;
707 fbcon_set_rotation(info);
711 static int fbcon_invalid_charcount(struct fb_info *info, unsigned charcount)
718 static void fbcon_release(struct fb_info *info)
720 lock_fb_info(info);
721 if (info->fbops->fb_release)
722 info->fbops->fb_release(info, 0);
723 unlock_fb_info(info);
725 module_put(info->fbops->owner);
727 if (info->fbcon_par) {
728 struct fbcon_ops *ops = info->fbcon_par;
730 fbcon_del_cursor_work(info);
735 kfree(info->fbcon_par);
736 info->fbcon_par = NULL;
740 static int fbcon_open(struct fb_info *info)
744 if (!try_module_get(info->fbops->owner))
747 lock_fb_info(info);
748 if (info->fbops->fb_open &&
749 info->fbops->fb_open(info, 0)) {
750 unlock_fb_info(info);
751 module_put(info->fbops->owner);
754 unlock_fb_info(info);
758 fbcon_release(info);
763 ops->info = info;
764 info->fbcon_par = ops;
770 static int con2fb_acquire_newinfo(struct vc_data *vc, struct fb_info *info,
775 err = fbcon_open(info);
780 set_blitting_type(vc, info);
809 static void con2fb_init_display(struct vc_data *vc, struct fb_info *info,
812 struct fbcon_ops *ops = info->fbcon_par;
817 if (info->fbops->fb_set_par && !ops->initialized) {
818 ret = info->fbops->fb_set_par(info);
828 fbcon_set_disp(info, &info->var, unit);
859 struct fb_info *info = fbcon_registered_fb[newidx];
868 if (!info)
880 err = con2fb_acquire_newinfo(vc, info, unit);
884 fbcon_add_cursor_work(info);
886 set_blitting_type(vc, info);
896 con2fb_release_oldinfo(vc, oldinfo, info);
902 con2fb_init_display(vc, info, unit, show_logo);
916 struct fb_info *info)
931 disp->mode = fb_match_mode(var, &info->modelist);
963 struct fb_info *info = NULL;
977 info = fbcon_registered_fb[info_idx];
978 if (!info)
981 if (fbcon_open(info))
984 ops = info->fbcon_par;
991 p->con_rotate = info->fbcon_rotate_hint;
995 set_blitting_type(vc, info);
1000 font = get_default_font(info->var.xres,
1001 info->var.yres,
1002 info->pixmap.blit_x,
1003 info->pixmap.blit_y);
1010 cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
1011 rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
1016 pr_debug("mode: %s\n", info->fix.id);
1017 pr_debug("visual: %d\n", info->fix.visual);
1018 pr_debug("res: %dx%d-%d\n", info->var.xres,
1019 info->var.yres,
1020 info->var.bits_per_pixel);
1022 fbcon_add_cursor_work(info);
1028 struct fb_info *info;
1042 info = fbcon_info_from_console(vc->vc_num);
1048 (info->fix.type == FB_TYPE_TEXT))
1051 if (var_to_display(p, &info->var, info))
1054 if (!info->fbcon_par)
1055 con2fb_acquire_newinfo(vc, info, vc->vc_num);
1077 font = get_default_font(info->var.xres,
1078 info->var.yres,
1079 info->pixmap.blit_x,
1080 info->pixmap.blit_y);
1088 vc->vc_can_do_color = (fb_get_color_depth(&info->var, &info->fix)!=1);
1103 ops = info->fbcon_par;
1108 p->con_rotate = info->fbcon_rotate_hint;
1112 set_blitting_type(vc, info);
1116 new_cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
1117 new_rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
1129 if (info->fbops->fb_set_par && !ops->initialized) {
1130 ret = info->fbops->fb_set_par(info);
1144 if ((info->flags & FBINFO_HWACCEL_COPYAREA) &&
1145 !(info->flags & FBINFO_HWACCEL_DISABLED))
1163 fbcon_prepare_logo(vc, info, cols, rows, new_cols, new_rows);
1165 if (ops->rotate_font && ops->rotate_font(info, vc)) {
1167 set_blitting_type(vc, info);
1185 struct fb_info *info;
1190 info = fbcon_registered_fb[i];
1200 fbcon_release(info);
1207 struct fb_info *info;
1217 info = fbcon_registered_fb[idx];
1219 if (!info)
1222 ops = info->fbcon_par;
1228 fbcon_del_cursor_work(info);
1276 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
1277 struct fbcon_ops *ops = info->fbcon_par;
1282 if (!fbcon_is_active(vc, info))
1299 fg = get_color(vc, info, vc->vc_video_erase_char, 1);
1300 bg = get_color(vc, info, vc->vc_video_erase_char, 0);
1306 ops->clear(vc, info, real_y(p, sy), sx, b, width, fg, bg);
1307 ops->clear(vc, info, real_y(p, sy + b), sx, height - b,
1310 ops->clear(vc, info, real_y(p, sy), sx, height, width, fg, bg);
1322 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
1324 struct fbcon_ops *ops = info->fbcon_par;
1326 if (fbcon_is_active(vc, info))
1327 ops->putcs(vc, info, s, count, real_y(p, ypos), xpos,
1328 get_fg_color(vc, info, scr_readw(s)),
1329 get_bg_color(vc, info, scr_readw(s)));
1334 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
1335 struct fbcon_ops *ops = info->fbcon_par;
1337 if (fbcon_is_active(vc, info))
1338 ops->clear_margins(vc, info, margin_color, bottom_only);
1343 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
1344 struct fbcon_ops *ops = info->fbcon_par;
1349 if (!fbcon_is_active(vc, info) || vc->vc_deccm != 1)
1353 fbcon_del_cursor_work(info);
1355 fbcon_add_cursor_work(info);
1362 ops->cursor(vc, info, enable,
1363 get_fg_color(vc, info, c),
1364 get_bg_color(vc, info, c));
1371 static void fbcon_set_disp(struct fb_info *info, struct fb_var_screeninfo *var,
1377 struct fbcon_ops *ops = info->fbcon_par;
1383 if (var_to_display(p, var, info))
1406 info->var.activate = var->activate;
1407 var->yoffset = info->var.yoffset;
1408 var->xoffset = info->var.xoffset;
1409 fb_set_var(info, var);
1410 ops->var = info->var;
1411 vc->vc_can_do_color = (fb_get_color_depth(&info->var, &info->fix)!=1);
1426 cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
1427 rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
1438 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
1439 struct fbcon_ops *ops = info->fbcon_par;
1448 ops->update_start(info);
1457 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
1458 struct fbcon_ops *ops = info->fbcon_par;
1467 ops->update_start(info);
1476 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
1478 struct fbcon_ops *ops = info->fbcon_par;
1482 ops->bmove(vc, info, p->vrows - vc->vc_rows,
1490 ops->update_start(info);
1500 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
1501 struct fbcon_ops *ops = info->fbcon_par;
1514 ops->update_start(info);
1524 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
1526 struct fbcon_ops *ops = info->fbcon_par;
1530 ops->bmove(vc, info, 0, 0, p->vrows - vc->vc_rows,
1538 ops->update_start(info);
1548 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
1549 struct fbcon_ops *ops = info->fbcon_par;
1562 ops->update_start(info);
1604 static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
1611 struct fbcon_ops *ops = info->fbcon_par;
1624 ops->bmove(vc, info, line + ycount, x,
1640 ops->bmove(vc, info, line + ycount, x, line, x, 1,
1711 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
1712 struct fbcon_ops *ops = info->fbcon_par;
1746 ops->bmove(vc, info, real_y(p, sy), sx, real_y(p, dy), dx,
1753 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
1756 if (!fbcon_is_active(vc, info))
1776 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
1778 int scroll_partial = info->flags & FBINFO_PARTIAL_PAN_OK;
1780 if (!fbcon_is_active(vc, info))
1797 fbcon_redraw_blit(vc, info, p, t, b - t - count,
1817 } else if (info->flags & FBINFO_READS_FAST)
1858 } else if (info->flags & FBINFO_READS_FAST)
1885 fbcon_redraw_blit(vc, info, p, b - 1, b - t - count,
1905 } else if (info->flags & FBINFO_READS_FAST)
1927 } else if (info->flags & FBINFO_READS_FAST)
1970 struct fb_info *info,
1974 struct fbcon_ops *ops = info->fbcon_par;
1975 int cap = info->flags;
1977 int ypan = FBCON_SWAP(ops->rotate, info->fix.ypanstep,
1978 info->fix.xpanstep);
1979 int ywrap = FBCON_SWAP(ops->rotate, info->fix.ywrapstep, t);
1980 int yres = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
1981 int vyres = FBCON_SWAP(ops->rotate, info->var.yres_virtual,
1982 info->var.xres_virtual);
2012 struct fb_info *info,
2015 struct fbcon_ops *ops = info->fbcon_par;
2017 int yres = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
2018 int vyres = FBCON_SWAP(ops->rotate, info->var.yres_virtual,
2019 info->var.xres_virtual);
2028 updatescrollmode_accel(p, info, vc);
2037 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
2038 struct fbcon_ops *ops = info->fbcon_par;
2040 struct fb_var_screeninfo var = info->var;
2069 x_diff = info->var.xres - var.xres;
2070 y_diff = info->var.yres - var.yres;
2076 mode = fb_find_best_mode(&var, &info->modelist);
2089 fb_set_var(info, &var);
2091 var_to_display(p, &info->var, info);
2092 ops->var = info->var;
2094 updatescrollmode(p, info, vc);
2100 struct fb_info *info, *old_info = NULL;
2106 info = fbcon_info_from_console(vc->vc_num);
2107 ops = info->fbcon_par;
2123 * update all info->currcon. Perhaps, we can place this
2127 * info->currcon = vc->vc_num;
2144 info->var.activate = var.activate;
2145 var.vmode |= info->var.vmode & ~FB_VMODE_MASK;
2146 fb_set_var(info, &var);
2147 ops->var = info->var;
2149 if (old_info != NULL && (old_info != info ||
2150 info->flags & FBINFO_MISC_ALWAYS_SETPAR)) {
2151 if (info->fbops->fb_set_par) {
2152 ret = info->fbops->fb_set_par(info);
2160 if (old_info != info)
2164 if (!fbcon_is_active(vc, info) ||
2166 fbcon_del_cursor_work(info);
2168 fbcon_add_cursor_work(info);
2170 set_blitting_type(vc, info);
2173 if (ops->rotate_font && ops->rotate_font(info, vc)) {
2175 set_blitting_type(vc, info);
2178 vc->vc_can_do_color = (fb_get_color_depth(&info->var, &info->fix)!=1);
2184 updatescrollmode(p, info, vc);
2204 if (fbcon_is_active(vc, info)) {
2206 ops->update_start(info);
2215 fb_show_logo(info, ops->rotate);
2225 static void fbcon_generic_blank(struct vc_data *vc, struct fb_info *info,
2243 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
2244 struct fbcon_ops *ops = info->fbcon_par;
2247 struct fb_var_screeninfo var = info->var;
2254 fb_set_var(info, &var);
2256 ops->var = info->var;
2260 if (fbcon_is_active(vc, info)) {
2266 if (fb_blank(info, blank))
2267 fbcon_generic_blank(vc, info, blank);
2274 if (mode_switch || !fbcon_is_active(vc, info) ||
2276 fbcon_del_cursor_work(info);
2278 fbcon_add_cursor_work(info);
2285 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
2286 struct fbcon_ops *ops = info->fbcon_par;
2290 if (info->fbops->fb_debug_enter)
2291 info->fbops->fb_debug_enter(info);
2297 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
2298 struct fbcon_ops *ops = info->fbcon_par;
2301 if (info->fbops->fb_debug_leave)
2302 info->fbops->fb_debug_leave(info);
2434 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
2435 struct fbcon_ops *ops = info->fbcon_par;
2461 cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
2462 rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
2503 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
2518 if (w > FBCON_SWAP(info->var.rotate, info->var.xres, info->var.yres) ||
2519 h > FBCON_SWAP(info->var.rotate, info->var.yres, info->var.xres))
2526 if (!test_bit(font->width - 1, info->pixmap.blit_x) ||
2527 !test_bit(font->height - 1, info->pixmap.blit_y))
2531 if (fbcon_invalid_charcount(info, charcount))
2576 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
2580 f = get_default_font(info->var.xres, info->var.yres,
2581 info->pixmap.blit_x, info->pixmap.blit_y);
2600 struct fb_info *info = fbcon_info_from_console(vc->vc_num);
2604 if (!fbcon_is_active(vc, info))
2610 depth = fb_get_color_depth(&info->var, &info->fix);
2630 fb_set_cmap(&palette_cmap, info);
2651 void fbcon_suspended(struct fb_info *info)
2654 struct fbcon_ops *ops = info->fbcon_par;
2664 void fbcon_resumed(struct fb_info *info)
2667 struct fbcon_ops *ops = info->fbcon_par;
2676 static void fbcon_modechanged(struct fb_info *info)
2678 struct fbcon_ops *ops = info->fbcon_par;
2687 fbcon_info_from_console(ops->currcon) != info)
2691 set_blitting_type(vc, info);
2694 var_to_display(p, &info->var, info);
2695 cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
2696 rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
2700 updatescrollmode(p, info, vc);
2704 if (fbcon_is_active(vc, info)) {
2706 ops->update_start(info);
2714 static void fbcon_set_all_vcs(struct fb_info *info)
2716 struct fbcon_ops *ops = info->fbcon_par;
2727 fbcon_info_from_console(i) != info)
2736 set_blitting_type(vc, info);
2737 var_to_display(p, &info->var, info);
2738 cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
2739 rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
2746 fbcon_modechanged(info);
2750 void fbcon_update_vcs(struct fb_info *info, bool all)
2753 fbcon_set_all_vcs(info);
2755 fbcon_modechanged(info);
2760 int fbcon_modechange_possible(struct fb_info *info, struct fb_var_screeninfo *var)
2762 struct fbcon_ops *ops = info->fbcon_par;
2775 fbcon_info_from_console(i) != info)
2787 int fbcon_mode_deleted(struct fb_info *info,
2800 if (fb_info != info)
2828 void fbcon_fb_unbind(struct fb_info *info)
2831 int idx = info->node;
2854 struct fb_info *info = fbcon_registered_fb[idx];
2867 info, NULL);
2877 void fbcon_fb_unregistered(struct fb_info *info)
2883 fbcon_registered_fb[info->node] = NULL;
2891 idx = info->node;
2921 void fbcon_remap_all(struct fb_info *info)
2923 int i, idx = info->node;
2947 static void fbcon_select_primary(struct fb_info *info)
2950 video_is_primary_device(info->device)) {
2954 info->fix.id, info->node);
2955 primary_device = info->node;
2962 "fb%i, to tty %i-%i\n", info->node,
2970 static inline void fbcon_select_primary(struct fb_info *info)
2982 static int do_fb_registered(struct fb_info *info)
2988 fbcon_registered_fb[info->node] = info;
2991 idx = info->node;
2992 fbcon_select_primary(info);
3019 int fbcon_fb_registered(struct fb_info *info)
3028 ret = do_fb_registered(info);
3038 void fbcon_fb_blanked(struct fb_info *info, int blank)
3040 struct fbcon_ops *ops = info->fbcon_par;
3048 fbcon_info_from_console(ops->currcon) != info)
3060 void fbcon_new_modelist(struct fb_info *info)
3068 if (fbcon_info_from_console(i) != info)
3075 &info->modelist);
3077 fbcon_set_disp(info, &var, vc->vc_num);
3081 void fbcon_get_requirement(struct fb_info *info,
3092 info->node == con2fb_map[i]) {
3104 info->node == con2fb_map[fg_console]) {
3184 struct fb_info *info;
3194 info = fbcon_registered_fb[idx];
3196 fbcon_rotate(info, rotate);
3206 struct fb_info *info;
3216 info = fbcon_registered_fb[idx];
3218 fbcon_rotate_all(info, rotate);
3227 struct fb_info *info;
3236 info = fbcon_registered_fb[idx];
3237 rotate = fbcon_get_rotate(info);
3246 struct fb_info *info;
3256 info = fbcon_registered_fb[idx];
3257 ops = info->fbcon_par;
3272 struct fb_info *info;
3283 info = fbcon_registered_fb[idx];
3285 if (!info->fbcon_par)
3292 fbcon_add_cursor_work(info);
3295 fbcon_del_cursor_work(info);