diff options
| author | Donghwa Lee <dh09.lee@samsung.com> | 2012-05-09 19:23:46 +0000 | 
|---|---|---|
| committer | Anatolij Gustschin <agust@denx.de> | 2012-05-25 09:15:10 +0200 | 
| commit | 90464971f999032fec077bc081b578131b2a3319 (patch) | |
| tree | c9ac1ec56baf43ac913eeb3734b216dd8f6132f5 | |
| parent | 5a4c59be8968ed332faedfaa534b4469fb4db3c4 (diff) | |
| download | olio-uboot-2014.01-90464971f999032fec077bc081b578131b2a3319.tar.xz olio-uboot-2014.01-90464971f999032fec077bc081b578131b2a3319.zip | |
EXYNOS: display 32bpp bitmap TIZEN logo
This patch supports drawing 32bpp bitmap TIZEN logo in exynos fb.
"tizen_hd_logo.h" data is compressed from trats_logo.bmp to
trats_logo.bmp.gz by gzip and converted to tizen_hd_logo.h header file
format by some application. The logo data is decompressed in the exynos
fb driver by bmp_display().
Signed-off-by: Donghwa Lee <dh09.lee@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Minkyu Kang <mk7.kang@samsung.com>
Signed-off-by: Anatolij Gustschin <agust@denx.de>
| -rw-r--r-- | board/samsung/trats/trats.c | 8 | ||||
| -rw-r--r-- | drivers/video/exynos_fb.c | 19 | ||||
| -rw-r--r-- | drivers/video/exynos_fb.h | 7 | ||||
| -rw-r--r-- | drivers/video/exynos_fimd.c | 2 | ||||
| -rw-r--r-- | include/configs/trats.h | 6 | ||||
| -rw-r--r-- | include/lcd.h | 13 | 
6 files changed, 46 insertions, 9 deletions
| diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c index 25f5cafc4..a0eec75bc 100644 --- a/board/samsung/trats/trats.c +++ b/board/samsung/trats/trats.c @@ -37,6 +37,7 @@  #include <pmic.h>  #include <usb/s3c_udc.h>  #include <max8997_pmic.h> +#include <libtizen.h>  #include "setup.h" @@ -496,6 +497,13 @@ void init_panel_info(vidinfo_t *vid)  	vid->reset_delay = 0;  	vid->interface_mode = FIMD_RGB_INTERFACE;  	vid->mipi_enabled = 1; +	vid->logo_on	= 1, +	vid->resolution	= HD_RESOLUTION, +	vid->rgb_mode	= MODE_RGB_P, + +#ifdef CONFIG_TIZEN +	get_tizen_logo_info(vid); +#endif  	if (hwrevision(2))  		mipi_lcd_device.reverse_panel = 1; diff --git a/drivers/video/exynos_fb.c b/drivers/video/exynos_fb.c index a1cf44964..92be4ead3 100644 --- a/drivers/video/exynos_fb.c +++ b/drivers/video/exynos_fb.c @@ -67,6 +67,18 @@ static void exynos_lcd_init(vidinfo_t *vid)  	exynos_fimd_lcd_init(vid);  } +static void draw_logo(void) +{ +	int x, y; +	ulong addr; + +	x = ((panel_width - panel_info.logo_width) >> 1); +	y = ((panel_height - panel_info.logo_height) >> 1) - 4; + +	addr = panel_info.logo_addr; +	bmp_display(addr, x, y); +} +  static void lcd_panel_on(vidinfo_t *vid)  {  	udelay(vid->init_delay); @@ -118,6 +130,13 @@ void lcd_ctrl_init(void *lcdbase)  void lcd_enable(void)  { +	if (panel_info.logo_on) { +		memset(lcd_base, 0, panel_width * panel_height * +				(NBITS(panel_info.vl_bpix) >> 3)); + +		draw_logo(); +	} +  	lcd_panel_on(&panel_info);  } diff --git a/drivers/video/exynos_fb.h b/drivers/video/exynos_fb.h index 66f5da6d4..4ff2efd2b 100644 --- a/drivers/video/exynos_fb.h +++ b/drivers/video/exynos_fb.h @@ -27,13 +27,6 @@  #define MAX_CLOCK	(86 * 1000000) -enum exynos_fb_rgb_mode_t { -	MODE_RGB_P = 0, -	MODE_BGR_P = 1, -	MODE_RGB_S = 2, -	MODE_BGR_S = 3, -}; -  enum exynos_cpu_auto_cmd_rate {  	DISABLE_AUTO_FRM,  	PER_TWO_FRM, diff --git a/drivers/video/exynos_fimd.c b/drivers/video/exynos_fimd.c index 6416b90fc..f07568acc 100644 --- a/drivers/video/exynos_fimd.c +++ b/drivers/video/exynos_fimd.c @@ -273,7 +273,7 @@ void exynos_fimd_lcd_init(vidinfo_t *vid)  	/* store panel info to global variable */  	pvid = vid; -	rgb_mode = MODE_RGB_P; +	rgb_mode = vid->rgb_mode;  	if (vid->interface_mode == FIMD_RGB_INTERFACE) {  		cfg |= EXYNOS_VIDCON0_VIDOUT_RGB; diff --git a/include/configs/trats.h b/include/configs/trats.h index ef6510e67..5e38de2bc 100644 --- a/include/configs/trats.h +++ b/include/configs/trats.h @@ -34,6 +34,7 @@  #define CONFIG_S5P		/* which is in a S5P Family */  #define CONFIG_EXYNOS4210	/* which is in a EXYNOS4210 */  #define CONFIG_TRATS		/* working with TRATS */ +#define CONFIG_TIZEN		/* TIZEN lib */  #include <asm/arch/cpu.h>	/* get chip and board defs */ @@ -217,9 +218,12 @@  /* LCD */  #define CONFIG_EXYNOS_FB  #define CONFIG_LCD +#define CONFIG_CMD_BMP +#define CONFIG_BMP_32BPP  #define CONFIG_FB_ADDR		0x52504000  #define CONFIG_S6E8AX0  #define CONFIG_EXYNOS_MIPI_DSIM -#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE	(1280 * 720 * 4) +#define CONFIG_VIDEO_BMP_GZIP +#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE ((500 * 120 * 4) + (1 << 12))  #endif	/* __CONFIG_H */ diff --git a/include/lcd.h b/include/lcd.h index a10d8d026..ee47247d8 100644 --- a/include/lcd.h +++ b/include/lcd.h @@ -191,6 +191,13 @@ enum {  	FIMD_CPU_INTERFACE = 2,  }; +enum exynos_fb_rgb_mode_t { +	MODE_RGB_P = 0, +	MODE_BGR_P = 1, +	MODE_RGB_S = 2, +	MODE_BGR_S = 3, +}; +  typedef struct vidinfo {  	ushort vl_col;		/* Number of columns (i.e. 640) */  	ushort vl_row;		/* Number of rows (i.e. 480) */ @@ -236,6 +243,12 @@ typedef struct vidinfo {  	unsigned int wr_setup;  	unsigned int wr_act;  	unsigned int wr_hold; +	unsigned int logo_on; +	unsigned int logo_width; +	unsigned int logo_height; +	unsigned long logo_addr; +	unsigned int rgb_mode; +	unsigned int resolution;  	/* parent clock name(MPLL, EPLL or VPLL) */  	unsigned int pclk_name; |