From: Aivils S. <ai...@us...> - 2003-12-05 12:11:28
|
Update of /cvsroot/linuxconsole/ruby/ruby-2.6/drivers/video In directory sc8-pr-cvs1:/tmp/cvs-serv2176/ruby-2.6/drivers/video Modified Files: fbmem.c Log Message: recognize modular fbcon though Index: fbmem.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/ruby-2.6/drivers/video/fbmem.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- fbmem.c 14 Oct 2003 08:32:10 -0000 1.1 +++ fbmem.c 5 Dec 2003 12:11:21 -0000 1.2 @@ -42,6 +42,7 @@ #include <asm/pgtable.h> #include <linux/fb.h> +#include <linux/vt_kern.h> #ifdef CONFIG_FRAMEBUFFER_CONSOLE #include "console/fbcon.h" @@ -960,6 +961,37 @@ return fb_set_cmap(&cmap, 1, info); } +int fbcon_in_use; +DECLARE_MUTEX(fbcon_sem); + +int +fb_resize_vt(struct fb_info *info) +{ + struct vt_struct *vt = info->display_fg; + struct vc_data *vc; + int i; + + down(&fbcon_sem); + if(!fbcon_in_use || !vt) + return -ENODEV; + + vc = vt->default_mode; + vc->vc_cols = info->var.xres/vc->vc_font.width; + vc->vc_rows = info->var.yres/vc->vc_font.height; + for(i = 0; i < vt->vc_count; i++) + vc_resize(vt->vc_cons[i], vc->vc_cols, vc->vc_rows); + up(&fbcon_sem); + return 0; +} + +void +fb_console_active(int active) +{ + down(&fbcon_sem); + fbcon_in_use = active; + up(&fbcon_sem); +} + static int fb_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) @@ -986,9 +1018,7 @@ return -EFAULT; i = fb_set_var(info, &var); if (i) return i; -#ifdef CONFIG_FRAMEBUFFER_CONSOLE - fbcon_resize_all(info); -#endif + fb_resize_vt(info); if (copy_to_user((void *) arg, &var, sizeof(var))) return -EFAULT; return 0; @@ -1390,5 +1420,6 @@ EXPORT_SYMBOL(fb_get_buffer_offset); EXPORT_SYMBOL(move_buf_unaligned); EXPORT_SYMBOL(move_buf_aligned); +EXPORT_SYMBOL(fb_console_active); MODULE_LICENSE("GPL"); |