8610: Add console frame buffer support to FSL 8610 DIU driver.
PATCH 1/1 8610: Add console frame buffer support to FSL 8610 DIU driver.
From: York Sun <[email protected]>
Add cfb console support to FSL 8610 DIU driver. Inspect board version from PIXIS to obtain correct pixel format.
Use #define CONFIG_VIDEO in config file to enable fb console.
To switch monitor, set monitor variable to 0 - DVI, 1 - Single link LVDS, 2 - Double link LVDS followed by "diufb init".
Preserve logo bitmap at the top of the fb console.
Signed-off-by York Sun <[email protected]>
Signed-off-by Jon Loeliger <[email protected]>
--- board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c | 78 ++++++++++++++++++++++++- include/configs/MPC8610HPCD.h | 20 +++++- 2 files changed, 91 insertions(+), 7 deletions(-)
board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c +75 -3
@@ -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 */
include/configs/MPC8610HPCD.h +16 -4
@@ -22,6 +22,15 @@#define CONFIG_LINUX_RESET_VEC 0x100/* Reset vector used by Linux */ #define CONFIG_FSL_DIU_FB 1/* FSL DIU */ + +/* video */ +#undef CONFIG_VIDEO + +#if defined(CONFIG_VIDEO ) +#define CONFIG_CFB_CONSOLE +#define CONFIG_VGA_AS_SINGLE_DEVICE +#endif +#ifdef RUN_DIAG #define CFG_DIAG_ADDR 0xff800000#endif
@@ -314,15 +323,17 @@#define CONFIG_EEPRO100 #define CONFIG_TULIP -#if 0 /* TODO */ /************************************************************ * USB support ************************************************************/ -#define CONFIG_USB_OHCI 1 +#define CONFIG_PCI_OHCI 1 +#define CONFIG_USB_OHCI_NEW 1#define CONFIG_USB_KEYBOARD 1#define CFG_DEVICE_DEREGISTER -#define CFG_USB_INTERRUPT_POLL 1 -#endif +#define CFG_USB_EVENT_POLL 1 +#define CFG_USB_OHCI_SLOT_NAME "ohci_pci" +#define CFG_USB_OHCI_MAX_ROOT_PORTS 15 +#define CFG_OHCI_SWAP_REG_ACCESS 1#if !defined(CONFIG_PCI_PNP )#define PCI_ENET0_IOADDR 0xe0000000
@@ -472,6 +483,7 @@#define CONFIG_CMD_PCI #define CONFIG_CMD_SCSI #define CONFIG_CMD_EXT2 +#define CONFIG_CMD_USB #endif
Signature · 1 line
1.5.3