diff options
Diffstat (limited to 'drivers/video/cfb_console.c')
| -rw-r--r-- | drivers/video/cfb_console.c | 37 | 
1 files changed, 36 insertions, 1 deletions
| diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c index 96ef8f9c2..fd2885573 100644 --- a/drivers/video/cfb_console.c +++ b/drivers/video/cfb_console.c @@ -197,7 +197,6 @@  #include <linux/types.h>  #include <stdio_dev.h>  #include <video_font.h> -#include <video_font_data.h>  #if defined(CONFIG_CMD_DATE)  #include <rtc.h> @@ -431,6 +430,16 @@ static const int video_font_draw_table32[16][4] = {  	{0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff}  }; +/* + * Implement a weak default function for boards that optionally + * need to skip the cfb initialization. + */ +__weak int board_cfb_skip(void) +{ +	/* As default, don't skip cfb init */ +	return 0; +} +  static void video_drawchars(int xx, int yy, unsigned char *s, int count)  {  	u8 *cdat, *dest, *dest0; @@ -452,6 +461,10 @@ static void video_drawchars(int xx, int yy, unsigned char *s, int count)  				((u32 *) dest)[0] =  					(video_font_draw_table8[bits >> 4] &  					 eorx) ^ bgx; + +				if (VIDEO_FONT_WIDTH == 4) +					continue; +  				((u32 *) dest)[1] =  					(video_font_draw_table8[bits & 15] &  					 eorx) ^ bgx; @@ -477,6 +490,10 @@ static void video_drawchars(int xx, int yy, unsigned char *s, int count)  					SHORTSWAP32((video_font_draw_table15  						     [bits >> 4 & 3] & eorx) ^  						    bgx); + +				if (VIDEO_FONT_WIDTH == 4) +					continue; +  				((u32 *) dest)[2] =  					SHORTSWAP32((video_font_draw_table15  						     [bits >> 2 & 3] & eorx) ^ @@ -507,6 +524,10 @@ static void video_drawchars(int xx, int yy, unsigned char *s, int count)  					SHORTSWAP32((video_font_draw_table16  						     [bits >> 4 & 3] & eorx) ^  						    bgx); + +				if (VIDEO_FONT_WIDTH == 4) +					continue; +  				((u32 *) dest)[2] =  					SHORTSWAP32((video_font_draw_table16  						     [bits >> 2 & 3] & eorx) ^ @@ -541,6 +562,11 @@ static void video_drawchars(int xx, int yy, unsigned char *s, int count)  				((u32 *) dest)[3] =  					SWAP32((video_font_draw_table32  						[bits >> 4][3] & eorx) ^ bgx); + + +				if (VIDEO_FONT_WIDTH == 4) +					continue; +  				((u32 *) dest)[4] =  					SWAP32((video_font_draw_table32  						[bits & 15][0] & eorx) ^ bgx); @@ -576,6 +602,10 @@ static void video_drawchars(int xx, int yy, unsigned char *s, int count)  				((u32 *) dest)[2] =  					(video_font_draw_table24[bits >> 4][2]  					 & eorx) ^ bgx; + +				if (VIDEO_FONT_WIDTH == 4) +					continue; +  				((u32 *) dest)[3] =  					(video_font_draw_table24[bits & 15][0]  					 & eorx) ^ bgx; @@ -1996,6 +2026,8 @@ static void *video_logo(void)  		return video_fb_address + video_logo_height * VIDEO_LINE_LEN;  	}  #endif +	if (board_cfb_skip()) +		return 0;  	sprintf(info, " %s", version_string); @@ -2205,6 +2237,9 @@ int drv_video_init(void)  	/* Init video chip - returns with framebuffer cleared */  	skip_dev_init = (video_init() == -1); +	if (board_cfb_skip()) +		return 0; +  #if !defined(CONFIG_VGA_AS_SINGLE_DEVICE)  	debug("KBD: Keyboard init ...\n");  	skip_dev_init |= (VIDEO_KBD_INIT_FCT == -1); |