@ -32,40 +32,55 @@
# include "../common/pixis.h"
# include "../common/fsl_diu_fb.h"
# if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE)
# include <devices.h>
# include <video_fb.h>
# endif
extern unsigned int FSL_Logo_BMP [ ] ;
static int xres , yres ;
void mpc8610hpcd_diu_init ( void )
{
char * monitor_port ;
int xres , gamma_fix ;
int gamma_fix ;
unsigned int pixel_format ;
unsigned char tmp_val ;
unsigned char pixis_arch ;
tmp_val = in8 ( PIXIS_BASE + PIXIS_BRDCFG0 ) ;
monitor_port = getenv ( " monitor " ) ;
pixis_arch = in8 ( PIXIS_BASE + PIXIS_VER ) ;
monitor_port = getenv ( " monitor " ) ;
if ( ! strncmp ( monitor_port , " 0 " , 1 ) ) { /* 0 - DVI */
xres = 1280 ;
pixel_format = 0x88882317 ;
yres = 1024 ;
if ( pixis_arch = = 0x01 )
pixel_format = 0x88882317 ;
else
pixel_format = 0x88883316 ;
gamma_fix = 0 ;
out8 ( PIXIS_BASE + PIXIS_BRDCFG0 , tmp_val | 0x08 ) ;
} else if ( ! strncmp ( monitor_port , " 1 " , 1 ) ) { /* 1 - Single link LVDS */
xres = 1024 ;
yres = 768 ;
pixel_format = 0x88883316 ;
gamma_fix = 0 ;
out8 ( PIXIS_BASE + PIXIS_BRDCFG0 , ( tmp_val & 0xf7 ) | 0x10 ) ;
} else if ( ! strncmp ( monitor_port , " 2 " , 1 ) ) { /* 2 - Double link LVDS */
xres = 1280 ;
yres = 1024 ;
pixel_format = 0x88883316 ;
gamma_fix = 1 ;
out8 ( PIXIS_BASE + PIXIS_BRDCFG0 , tmp_val & 0xe7 ) ;
} else { /* DVI */
xres = 1280 ;
yres = 1024 ;
pixel_format = 0x88882317 ;
gamma_fix = 0 ;
out8 ( PIXIS_BASE + PIXIS_BRDCFG0 , tmp_val | 0x08 ) ;
@ -86,7 +101,12 @@ int mpc8610diu_init_show_bmp(cmd_tbl_t *cmdtp,
}
if ( ! strncmp ( argv [ 1 ] , " init " , 4 ) ) {
# if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE)
fsl_diu_clear_screen ( ) ;
drv_video_init ( ) ;
# else
mpc8610hpcd_diu_init ( ) ;
# endif
} else {
addr = simple_strtoul ( argv [ 1 ] , NULL , 16 ) ;
fsl_diu_clear_screen ( ) ;
@ -102,4 +122,56 @@ U_BOOT_CMD(
" init \n - initialize DIU \n "
" addr \n - display bmp at address 'addr' \n "
) ;
# if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE)
/*
* The Graphic Device
*/
GraphicDevice ctfb ;
void * video_hw_init ( void )
{
GraphicDevice * pGD = ( GraphicDevice * ) & ctfb ;
struct fb_info * info ;
mpc8610hpcd_diu_init ( ) ;
/* fill in Graphic device struct */
sprintf ( pGD - > modeIdent ,
" %dx%dx%d %ldkHz %ldHz " ,
xres , yres , 32 , 64 , 60 ) ;
pGD - > frameAdrs = ( unsigned int ) fsl_fb_open ( & info ) ;
pGD - > winSizeX = xres ;
pGD - > winSizeY = yres - info - > logo_height ;
pGD - > plnSizeX = pGD - > winSizeX ;
pGD - > plnSizeY = pGD - > winSizeY ;
pGD - > gdfBytesPP = 4 ;
pGD - > gdfIndex = GDF_32BIT_X888RGB ;
pGD - > isaBase = 0 ;
pGD - > pciBase = 0 ;
pGD - > memSize = info - > screen_size - info - > logo_size ;
/* Cursor Start Address */
pGD - > dprBase = 0 ;
pGD - > vprBase = 0 ;
pGD - > cprBase = 0 ;
return ( void * ) pGD ;
}
void video_set_lut ( unsigned int index , /* color number */
unsigned char r , /* red */
unsigned char g , /* green */
unsigned char b /* blue */
)
{
return ;
}
# endif /* defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE) */
# endif /* CONFIG_FSL_DIU_FB */