@ -85,15 +85,13 @@
DECLARE_GLOBAL_DATA_PTR ;
ulong lcd_setmem ( ulong addr ) ;
static void lcd_drawchars ( ushort x , ushort y , uchar * str , int count ) ;
static inline void lcd_puts_xy ( ushort x , ushort y , uchar * s ) ;
static inline void lcd_putc_xy ( ushort x , ushort y , uchar c ) ;
static int lcd_init ( void * lcdbase ) ;
static void * lcd_logo ( void ) ;
static void * lcd_logo ( void ) ;
static int lcd_getbgcolor ( void ) ;
static void lcd_setfgcolor ( int color ) ;
@ -113,13 +111,6 @@ static void *lcd_base; /* Start of framebuffer memory */
static char lcd_flush_dcache ; /* 1 to flush dcache after each lcd update */
# ifdef NOT_USED_SO_FAR
static void lcd_getcolreg ( ushort regno ,
ushort * red , ushort * green , ushort * blue ) ;
static int lcd_getfgcolor ( void ) ;
# endif /* NOT_USED_SO_FAR */
/************************************************************************/
/* Flush LCD activity to the caches */
@ -158,7 +149,7 @@ static void console_scrollup(void)
/* Clear the last rows */
memset ( lcd_console_address + CONSOLE_SIZE - CONSOLE_ROW_SIZE * rows ,
COLOR_MASK ( lcd_color_bg ) ,
CONSOLE_ROW_SIZE * rows ) ;
CONSOLE_ROW_SIZE * rows ) ;
lcd_sync ( ) ;
console_row - = rows ;
@ -170,9 +161,8 @@ static inline void console_back(void)
{
if ( - - console_col < 0 ) {
console_col = CONSOLE_COLS - 1 ;
if ( - - console_row < 0 ) {
if ( - - console_row < 0 )
console_row = 0 ;
}
}
lcd_putc_xy ( console_col * VIDEO_FONT_WIDTH ,
@ -183,16 +173,13 @@ static inline void console_back(void)
static inline void console_newline ( void )
{
+ + console_row ;
console_col = 0 ;
/* Check if we need to scroll the terminal */
if ( console_row > = CONSOLE_ROWS ) {
/* Scroll everything up */
if ( + + console_row > = CONSOLE_ROWS )
console_scrollup ( ) ;
} else {
else
lcd_sync ( ) ;
}
}
/*----------------------------------------------------------------------*/
@ -244,9 +231,9 @@ void lcd_puts(const char *s)
return ;
}
while ( * s ) {
while ( * s )
lcd_putc ( * s + + ) ;
}
lcd_sync ( ) ;
}
@ -293,7 +280,7 @@ static void lcd_drawchars(ushort x, ushort y, uchar *str, int count)
# endif
# if LCD_BPP == LCD_MONOCHROME
uchar rest = * d & - ( 1 < < ( 8 - off ) ) ;
uchar rest = * d & - ( 1 < < ( 8 - off ) ) ;
uchar sym ;
# endif
for ( i = 0 ; i < count ; + + i ) {
@ -323,7 +310,7 @@ static void lcd_drawchars(ushort x, ushort y, uchar *str, int count)
# endif
}
# if LCD_BPP == LCD_MONOCHROME
* d = rest | ( * d & ( ( 1 < < ( 8 - off ) ) - 1 ) ) ;
* d = rest | ( * d & ( ( 1 < < ( 8 - off ) ) - 1 ) ) ;
# endif
}
}
@ -350,7 +337,7 @@ static inline void lcd_putc_xy(ushort x, ushort y, uchar c)
# define N_BLK_VERT 2
# define N_BLK_HOR 3
static int test_colors [ N_BLK_HOR * N_BLK_VERT ] = {
static int test_colors [ N_BLK_HOR * N_BLK_VERT ] = {
CONSOLE_COLOR_RED , CONSOLE_COLOR_GREEN , CONSOLE_COLOR_YELLOW ,
CONSOLE_COLOR_BLUE , CONSOLE_COLOR_MAGENTA , CONSOLE_COLOR_CYAN ,
} ;
@ -371,7 +358,7 @@ static void test_pattern(void)
for ( v = 0 ; v < v_max ; + + v ) {
uchar iy = v / v_step ;
for ( h = 0 ; h < h_max ; + + h ) {
uchar ix = N_BLK_HOR * iy + ( h / h_step ) ;
uchar ix = N_BLK_HOR * iy + h / h_step ;
* pix + + = test_colors [ ix ] ;
}
}
@ -389,12 +376,12 @@ int lcd_get_size(int *line_length)
return * line_length * panel_info . vl_row ;
}
int drv_lcd_init ( void )
int drv_lcd_init ( void )
{
struct stdio_dev lcddev ;
int rc ;
lcd_base = ( void * ) ( gd - > fb_base ) ;
lcd_base = ( void * ) gd - > fb_base ;
lcd_get_size ( & lcd_line_length ) ;
@ -409,7 +396,7 @@ int drv_lcd_init (void)
lcddev . putc = lcd_putc ; /* 'putc' function */
lcddev . puts = lcd_puts ; /* 'puts' function */
rc = stdio_register ( & lcddev ) ;
rc = stdio_register ( & lcddev ) ;
return ( rc = = 0 ) ? 1 : rc ;
}
@ -448,11 +435,11 @@ void lcd_clear(void)
/* set framebuffer to background color */
memset ( ( char * ) lcd_base ,
COLOR_MASK ( lcd_getbgcolor ( ) ) ,
lcd_line_length * panel_info . vl_row ) ;
lcd_line_length * panel_info . vl_row ) ;
# endif
/* Paint the logo and retrieve LCD base address */
debug ( " [LCD] Drawing the logo... \n " ) ;
lcd_console_address = lcd_logo ( ) ;
lcd_console_address = lcd_logo ( ) ;
console_col = 0 ;
console_row = 0 ;
@ -482,7 +469,7 @@ static int lcd_init(void *lcdbase)
lcd_ctrl_init ( lcdbase ) ;
lcd_is_enabled = 1 ;
lcd_clear ( ) ;
lcd_enable ( ) ;
lcd_enable ( ) ;
/* Initialize the console */
console_col = 0 ;
@ -523,7 +510,8 @@ ulong lcd_setmem(ulong addr)
/* Allocate pages for the frame buffer. */
addr - = size ;
debug ( " Reserving %ldk for LCD Framebuffer at: %08lx \n " , size > > 10 , addr ) ;
debug ( " Reserving %ldk for LCD Framebuffer at: %08lx \n " ,
size > > 10 , addr ) ;
return addr ;
}
@ -556,8 +544,6 @@ static int lcd_getbgcolor(void)
return lcd_color_bg ;
}
/*----------------------------------------------------------------------*/
/************************************************************************/
/* ** Chipset depending Bitmap / Logo stuff... */
/************************************************************************/
@ -574,13 +560,11 @@ static inline ushort *configuration_get_cmap(void)
return ( ushort * ) ( panel_info . mmio + ATMEL_LCDC_LUT ( 0 ) ) ;
# elif !defined(CONFIG_ATMEL_HLCD) && !defined(CONFIG_EXYNOS_FB)
return panel_info . cmap ;
# else
# if defined(CONFIG_LCD_LOGO)
# elif defined(CONFIG_LCD_LOGO)
return bmp_logo_palette ;
# else
return NULL ;
# endif
# endif
}
# ifdef CONFIG_LCD_LOGO
@ -653,7 +637,7 @@ void bitmap_plot(int x, int y)
for ( i = 0 ; i < BMP_LOGO_HEIGHT ; + + i ) {
memcpy ( fb , bmap , BMP_LOGO_WIDTH ) ;
bmap + = BMP_LOGO_WIDTH ;
fb + = panel_info . vl_col ;
fb + = panel_info . vl_col ;
}
}
else { /* true color mode */
@ -744,12 +728,11 @@ static void draw_encoded_bitmap(ushort **fbp, ushort c, int cnt)
* fb + + = c ;
cnt - - ;
}
( * fbp ) = fb ;
* fbp = fb ;
}
/*
* Do not call this function directly , must be called from
* lcd_display_bitmap .
* Do not call this function directly , must be called from lcd_display_bitmap .
*/
static void lcd_display_rle8_bitmap ( bmp_image_t * bmp , ushort * cmap , uchar * fb ,
int x_off , int y_off )
@ -876,8 +859,8 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
unsigned long pwidth = panel_info . vl_col ;
unsigned colors , bpix , bmp_bpix ;
if ( ! bmp | | ! ( ( bmp - > header . signature [ 0 ] = = ' B ' ) & &
( bmp - > header . signature [ 1 ] = = ' M ' ) ) ) {
if ( ! bmp | | ! ( bmp - > header . signature [ 0 ] = = ' B ' & &
bmp - > header . signature [ 1 ] = = ' M ' ) ) {
printf ( " Error: no valid bmp image at %lx \n " , bmp_image ) ;
return 1 ;
@ -890,7 +873,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
bpix = NBITS ( panel_info . vl_bpix ) ;
if ( ( bpix ! = 1 ) & & ( bpix ! = 8 ) & & ( bpix ! = 16 ) & & ( bpix ! = 32 ) ) {
if ( bpix ! = 1 & & bpix ! = 8 & & bpix ! = 16 & & bpix ! = 32 ) {
printf ( " Error: %d bit/pixel mode, but BMP has %d bit/pixel \n " ,
bpix , bmp_bpix ) ;
@ -958,7 +941,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
}
# endif
padded_width = ( width & 0x3 ) ? ( ( width & ~ 0x3 ) + 4 ) : ( width ) ;
padded_width = ( width & 0x3 ? ( width & ~ 0x3 ) + 4 : width ) ;
# ifdef CONFIG_SPLASH_SCREEN_ALIGN
splash_align_axis ( & x , pwidth , width ) ;
@ -970,7 +953,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
if ( ( y + height ) > panel_info . vl_row )
height = panel_info . vl_row - y ;
bmap = ( uchar * ) bmp + le32_to_cpu ( bmp - > header . data_offset ) ;
bmap = ( uchar * ) bmp + le32_to_cpu ( bmp - > header . data_offset ) ;
fb = ( uchar * ) ( lcd_base +
( y + height - 1 ) * lcd_line_length + x * bpix / 8 ) ;
@ -1005,7 +988,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
}
}
bmap + = ( padded_width - width ) ;
fb - = ( byte_width + lcd_line_length ) ;
fb - = byte_width + lcd_line_length ;
}
break ;
@ -1017,7 +1000,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
fb_put_word ( & fb , & bmap ) ;
bmap + = ( padded_width - width ) * 2 ;
fb - = ( width * 2 + lcd_line_length ) ;
fb - = width * 2 + lcd_line_length ;
}
break ;
# endif /* CONFIG_BMP_16BPP */
@ -1031,7 +1014,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
* ( fb + + ) = * ( bmap + + ) ;
* ( fb + + ) = * ( bmap + + ) ;
}
fb - = ( lcd_line_length + width * ( bpix / 8 ) ) ;
fb - = lcd_line_length + width * ( bpix / 8 ) ;
}
break ;
# endif /* CONFIG_BMP_32BPP */
@ -1106,7 +1089,7 @@ static void *lcd_logo(void)
return ( void * ) ( ( ulong ) lcd_base + BMP_LOGO_HEIGHT * lcd_line_length ) ;
# else
return ( void * ) lcd_base ;
# endif /* CONFIG_LCD_LOGO && !CONFIG_LCD_INFO_BELOW_LOGO */
# endif /* CONFIG_LCD_LOGO && !defined( CONFIG_LCD_INFO_BELOW_LOGO) */
}
# ifdef CONFIG_SPLASHIMAGE_GUARD
@ -1158,6 +1141,3 @@ int lcd_get_screen_columns(void)
{
return CONSOLE_COLS ;
}
/************************************************************************/
/************************************************************************/