summaryrefslogtreecommitdiffstats
path: root/board/freescale/mpc8610hpcd
diff options
context:
space:
mode:
authorTimur Tabi <timur@freescale.com>2010-08-31 19:56:43 -0500
committerAnatolij Gustschin <agust@denx.de>2010-09-21 22:46:02 +0200
commite69e520f9d235bb7d96296081fdfc09b9fee8c46 (patch)
treea690ae6920bf6794df239403e0100bec599bc916 /board/freescale/mpc8610hpcd
parent68f6618bcd0f06b5558c66ceb607b14f5f46ba03 (diff)
downloadblackbird-obmc-uboot-e69e520f9d235bb7d96296081fdfc09b9fee8c46.tar.gz
blackbird-obmc-uboot-e69e520f9d235bb7d96296081fdfc09b9fee8c46.zip
fsl: refactor MPC8610 and MPC5121 DIU code to use existing bitmap and logo features
The Freescale MPC8610 and MPC5121 DIU code had re-implement two features that already existed in U-Boot: bitmap drawing and top-of-screen logo (CONFIG_VIDEO_LOGO). So delete the 8610-specific code and use the built-in features instead. Signed-off-by: Timur Tabi <timur@freescale.com>
Diffstat (limited to 'board/freescale/mpc8610hpcd')
-rw-r--r--board/freescale/mpc8610hpcd/mpc8610hpcd.c6
-rw-r--r--board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c78
2 files changed, 22 insertions, 62 deletions
diff --git a/board/freescale/mpc8610hpcd/mpc8610hpcd.c b/board/freescale/mpc8610hpcd/mpc8610hpcd.c
index 6578f58dbf..f67f3e3c56 100644
--- a/board/freescale/mpc8610hpcd/mpc8610hpcd.c
+++ b/board/freescale/mpc8610hpcd/mpc8610hpcd.c
@@ -36,7 +36,7 @@
void sdram_init(void);
phys_size_t fixed_sdram(void);
-void mpc8610hpcd_diu_init(void);
+int mpc8610hpcd_diu_init(void);
/* called before any console output */
@@ -84,10 +84,6 @@ int misc_init_r(void)
i2c_read(0x38, 0x0A, 1, &tmp_val, sizeof(tmp_val));
debug("DVI Encoder Read: 0x%02lx\n",tmp_val);
-#ifdef CONFIG_FSL_DIU_FB
- mpc8610hpcd_diu_init();
-#endif
-
return 0;
}
diff --git a/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c b/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c
index 781a7c8745..960c8eda7d 100644
--- a/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c
+++ b/board/freescale/mpc8610hpcd/mpc8610hpcd_diu.c
@@ -36,8 +36,6 @@
#include <video_fb.h>
#endif
-extern unsigned int FSL_Logo_BMP[];
-
static int xres, yres;
void diu_set_pixel_clock(unsigned int pixclock)
@@ -61,7 +59,7 @@ void diu_set_pixel_clock(unsigned int pixclock)
debug("DIU: Modified value of CLKDVDR = 0x%08x\n", *guts_clkdvdr);
}
-void mpc8610hpcd_diu_init(void)
+int mpc8610hpcd_diu_init(void)
{
char *monitor_port;
int gamma_fix;
@@ -106,79 +104,45 @@ void mpc8610hpcd_diu_init(void)
out_8(pixis_base + PIXIS_BRDCFG0, tmp_val | 0x08);
}
- fsl_diu_init(xres, pixel_format, gamma_fix,
- (unsigned char *)FSL_Logo_BMP);
+ return fsl_diu_init(xres, pixel_format, gamma_fix);
}
-int mpc8610diu_init_show_bmp(cmd_tbl_t *cmdtp,
- int flag, int argc, char * const argv[])
-{
- unsigned int addr;
-
- if (argc < 2)
- return cmd_usage(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();
- fsl_diu_display_bmp((unsigned char *)addr, 0, 0, 0);
- }
-
- return 0;
-}
-
-U_BOOT_CMD(
- diufb, CONFIG_SYS_MAXARGS, 1, mpc8610diu_init_show_bmp,
- "Init or Display BMP file",
- "init\n - initialize DIU\n"
- "addr\n - display bmp at address 'addr'"
-);
-
-
#if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE)
/*
* The Graphic Device
*/
-GraphicDevice ctfb;
+static GraphicDevice ctfb;
+
void *video_hw_init(void)
{
- GraphicDevice *pGD = (GraphicDevice *) &ctfb;
struct fb_info *info;
- mpc8610hpcd_diu_init();
+ if (mpc8610hpcd_diu_init() < 0)
+ return NULL;
/* fill in Graphic device struct */
- sprintf(pGD->modeIdent,
- "%dx%dx%d %ldkHz %ldHz",
- xres, yres, 32, 64, 60);
+ sprintf(ctfb.modeIdent, "%ix%ix%i %ikHz %iHz", 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;
+ ctfb.frameAdrs = (unsigned int)fsl_fb_open(&info);
+ ctfb.winSizeX = xres;
+ ctfb.winSizeY = yres;
+ ctfb.plnSizeX = ctfb.winSizeX;
+ ctfb.plnSizeY = ctfb.winSizeY;
- pGD->gdfBytesPP = 4;
- pGD->gdfIndex = GDF_32BIT_X888RGB;
+ ctfb.gdfBytesPP = 4;
+ ctfb.gdfIndex = GDF_32BIT_X888RGB;
- pGD->isaBase = 0;
- pGD->pciBase = 0;
- pGD->memSize = info->screen_size - info->logo_size;
+ ctfb.isaBase = 0;
+ ctfb.pciBase = 0;
+ ctfb.memSize = info->screen_size;
/* Cursor Start Address */
- pGD->dprBase = 0;
- pGD->vprBase = 0;
- pGD->cprBase = 0;
+ ctfb.dprBase = 0;
+ ctfb.vprBase = 0;
+ ctfb.cprBase = 0;
- return (void *)pGD;
+ return &ctfb;
}
#endif /* defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE) */
OpenPOWER on IntegriCloud