aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/tfrc.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/tfrc.h')
0 files changed, 0 insertions, 0 deletions
-mac'>wip-mcrit-mac The LITMUS^RT kernel.Bjoern Brandenburg
aboutsummaryrefslogblamecommitdiffstats
path: root/drivers/video/console/vgacon.c
blob: cc4bbbe44aca6b4672568f5ee36d27bdc1b17222 (plain) (tree)


































                                                                              

                         

                         








                            
                              






                                 

                       












                                                                           
                                                                          















                                                                        


                                                                        
                                           












                                                                                                   





                                                

                                                              
 
















                                                     












































                                                                          





                                                                  






















                                                                   




                                                         
 
                                                                                          











































                                                                          
                                    













































                                                                        

                             




                                                   










                                                                     
 

                                                                 

                                          













































                                                                           
                                       




                                        
                                                              








                                                 
                                                  


                                                  

                            
                                                   




                                                                              

                            

                                                            

                             

                                               


                                                
                                                                     
                                                                     
                                                                            
                                                         
                                               




                                                                      
                                                                            
                                                                      
                                                                            
                                                        
                                               












                                                                 
                                                                     

                              
                                               
 
                                                            
                                                                           
                                                                                      





                                                                           
                                                                                       












                                                                           
                                                        




























                                                                            
                                                                            
                                                        
                                               






                                                                

                                                                  




























                                                                    

                                                                        



                                                                           
 
                                                                  
                                     





                                            






                                                    




                                                                       
                                              







                                                                              


                                                  

                                            







                                                          
 



                                                                              

 

                                            

                                                                 

                                                     
         


                                     




                                                                      
                                                                          



                               


                                                             












                                                                        


                                                    





































                                                                         








                                                                  



                                    
                                                          
                                         
                                                        





                                                      


                                  

                                 

                       
                                                               



                                                                




































                                                                           



                                                                        









                                                                  




                                                            
                                                                   


                                            

                                                 


                                                              
 

                                        
 

                                                          
 

                                        
 

                                                
 













                                                                





                                                    




                                                                
 



                                                                

                                                 


                 

                                           

                                               
                                                                          
                                  






                                                                 



                                                                  
                          
                                                                          

                                                                      


                                                             
                                                                            
                                                  
                                                                   

         
                                               






                                                                     
                                                













































































































































                                                                                                        
                                                 








































































                                                                                
                                                             





                                                      
                                                             































































































                                                                                






























































                                                                                         
                                           

























                                                                                        

                                                   















                                                                        
                                    



                                                    
                                                                       








                            
                                                               
                                                                
 

                                                                              
                              


                                                                 





                                                             




















                                                                                             

                                             
         
 
                                                                   

                                             

                                                                          
                                                                                                         







                                                                  
                                                                        

                         


                                                               
                                 


                                       
                                                      








                                                                          
                                                                    











                                                                           
                                                                           



































                                                            
                                    








                                                  
/*
 *  linux/drivers/video/vgacon.c -- Low level VGA based console driver
 *
 *	Created 28 Sep 1997 by Geert Uytterhoeven
 *
 *	Rewritten by Martin Mares <mj@ucw.cz>, July 1998
 *
 *  This file is based on the old console.c, vga.c and vesa_blank.c drivers.
 *
 *	Copyright (C) 1991, 1992  Linus Torvalds
 *			    1995  Jay Estabrook
 *
 *	User definable mapping table and font loading by Eugene G. Crosser,
 *	<crosser@average.org>
 *
 *	Improved loadable font/UTF-8 support by H. Peter Anvin
 *	Feb-Sep 1995 <peter.anvin@linux.org>
 *
 *	Colour palette handling, by Simon Tatham
 *	17-Jun-95 <sgt20@cam.ac.uk>
 *
 *	if 512 char mode is already enabled don't re-enable it,
 *	because it causes screen to flicker, by Mitja Horvat
 *	5-May-96 <mitja.horvat@guest.arnes.si>
 *
 *	Use 2 outw instead of 4 outb_p to reduce erroneous text
 *	flashing on RHS of screen during heavy console scrolling .
 *	Oct 1996, Paul Gortmaker.
 *
 *
 *  This file is subject to the terms and conditions of the GNU General Public
 *  License.  See the file COPYING in the main directory of this archive for
 *  more details.
 */

#include <linux/module.h>
#include <linux/types.h>
#include <linux/fs.h>
#include <linux/kernel.h>
#include <linux/console.h>
#include <linux/string.h>
#include <linux/kd.h>
#include <linux/slab.h>
#include <linux/vt_kern.h>
#include <linux/selection.h>
#include <linux/spinlock.h>
#include <linux/ioport.h>
#include <linux/init.h>
#include <linux/screen_info.h>
#include <linux/smp_lock.h>
#include <video/vga.h>
#include <asm/io.h>

static DEFINE_SPINLOCK(vga_lock);
static int cursor_size_lastfrom;
static int cursor_size_lastto;
static u32 vgacon_xres;
static u32 vgacon_yres;
static struct vgastate state;

#define BLANK 0x0020

#define CAN_LOAD_EGA_FONTS	/* undefine if the user must not do this */
#define CAN_LOAD_PALETTE	/* undefine if the user must not do this */

/* You really do _NOT_ want to define this, unless you have buggy
 * Trident VGA which will resize cursor when moving it between column
 * 15 & 16. If you define this and your VGA is OK, inverse bug will
 * appear.
 */
#undef TRIDENT_GLITCH
#define VGA_FONTWIDTH       8   /* VGA does not support fontwidths != 8 */
/*
 *  Interface used by the world
 */

static const char *vgacon_startup(void);
static void vgacon_init(struct vc_data *c, int init);
static void vgacon_deinit(struct vc_data *c);
static void vgacon_cursor(struct vc_data *c, int mode);
static int vgacon_switch(struct vc_data *c);
static int vgacon_blank(struct vc_data *c, int blank, int mode_switch);
static int vgacon_set_palette(struct vc_data *vc, unsigned char *table);
static int vgacon_scrolldelta(struct vc_data *c, int lines);
static int vgacon_set_origin(struct vc_data *c);
static void vgacon_save_screen(struct vc_data *c);
static int vgacon_scroll(struct vc_data *c, int t, int b, int dir,
			 int lines);
static void vgacon_invert_region(struct vc_data *c, u16 * p, int count);
static unsigned long vgacon_uni_pagedir[2];

/* Description of the hardware situation */
static int		vga_init_done		__read_mostly;
static unsigned long	vga_vram_base		__read_mostly;	/* Base of video memory */
static unsigned long	vga_vram_end		__read_mostly;	/* End of video memory */
static unsigned int	vga_vram_size		__read_mostly;	/* Size of video memory */
static u16		vga_video_port_reg	__read_mostly;	/* Video register select port */
static u16		vga_video_port_val	__read_mostly;	/* Video register value port */
static unsigned int	vga_video_num_columns;			/* Number of text columns */
static unsigned int	vga_video_num_lines;			/* Number of text lines */
static int		vga_can_do_color	__read_mostly;	/* Do we support colors? */
static unsigned int	vga_default_font_height __read_mostly;	/* Height of default screen font */
static unsigned char	vga_video_type		__read_mostly;	/* Card type */
static unsigned char	vga_hardscroll_enabled	__read_mostly;
static unsigned char	vga_hardscroll_user_enable __read_mostly = 1;
static unsigned char	vga_font_is_default = 1;
static int		vga_vesa_blanked;
static int 		vga_palette_blanked;
static int 		vga_is_gfx;
static int 		vga_512_chars;
static int 		vga_video_font_height;
static int 		vga_scan_lines		__read_mostly;
static unsigned int 	vga_rolled_over;

int vgacon_text_mode_force = 0;

bool vgacon_text_force(void)
{
	return vgacon_text_mode_force ? true : false;
}
EXPORT_SYMBOL(vgacon_text_force);

static int __init text_mode(char *str)
{
	vgacon_text_mode_force = 1;
	return 1;
}

/* force text mode - used by kernel modesetting */
__setup("nomodeset", text_mode);

static int __init no_scroll(char *str)
{
	/*
	 * Disabling scrollback is required for the Braillex ib80-piezo
	 * Braille reader made by F.H. Papenmeier (Germany).
	 * Use the "no-scroll" bootflag.
	 */
	vga_hardscroll_user_enable = vga_hardscroll_enabled = 0;
	return 1;
}

__setup("no-scroll", no_scroll);

/*
 * By replacing the four outb_p with two back to back outw, we can reduce
 * the window of opportunity to see text mislocated to the RHS of the
 * console during heavy scrolling activity. However there is the remote
 * possibility that some pre-dinosaur hardware won't like the back to back
 * I/O. Since the Xservers get away with it, we should be able to as well.
 */
static inline void write_vga(unsigned char reg, unsigned int val)
{
	unsigned int v1, v2;
	unsigned long flags;

	/*
	 * ddprintk might set the console position from interrupt
	 * handlers, thus the write has to be IRQ-atomic.
	 */
	spin_lock_irqsave(&vga_lock, flags);

#ifndef SLOW_VGA