diff options
| author | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2008-09-01 16:21:22 +0200 | 
|---|---|---|
| committer | Anatolij Gustschin <agust@denx.de> | 2008-10-27 09:53:58 +0100 | 
| commit | 6b59e03e0237a40a2305ea385defdfd92000978b (patch) | |
| tree | 70f3078e9568171678634959995355a198907806 | |
| parent | 6f93d2b8fca504200a5758f7c6dd2d6852900765 (diff) | |
| download | olio-uboot-2014.01-6b59e03e0237a40a2305ea385defdfd92000978b.tar.xz olio-uboot-2014.01-6b59e03e0237a40a2305ea385defdfd92000978b.zip | |
lcd: Let the board code show board-specific info
The information displayed when CONFIG_LCD_INFO is set is inherently
board-specific, so it should be done by the board code. The current code
dealing with this only handles two cases, and is already a horrible mess
of #ifdeffery.
Yes, this duplicates some code, but it also allows boards to print more
board-specific information; this used to be very difficult.
Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
Signed-off-by: Anatolij Gustschin <agust@denx.de>
| -rw-r--r-- | board/atmel/at91cap9adk/at91cap9adk.c | 29 | ||||
| -rw-r--r-- | board/atmel/at91sam9261ek/at91sam9261ek.c | 29 | ||||
| -rw-r--r-- | board/atmel/at91sam9263ek/at91sam9263ek.c | 29 | ||||
| -rw-r--r-- | board/atmel/at91sam9rlek/at91sam9rlek.c | 29 | ||||
| -rw-r--r-- | board/lwmon/lwmon.c | 29 | ||||
| -rw-r--r-- | board/tqc/tqm8xx/tqm8xx.c | 26 | ||||
| -rw-r--r-- | common/lcd.c | 84 | ||||
| -rw-r--r-- | include/lcd.h | 2 | 
8 files changed, 178 insertions, 79 deletions
| diff --git a/board/atmel/at91cap9adk/at91cap9adk.c b/board/atmel/at91cap9adk/at91cap9adk.c index 544c932f2..a1a9238f6 100644 --- a/board/atmel/at91cap9adk/at91cap9adk.c +++ b/board/atmel/at91cap9adk/at91cap9adk.c @@ -326,6 +326,35 @@ static void at91cap9_lcd_hw_init(void)  	gd->fb_base = 0;  } + +#ifdef CONFIG_LCD_INFO +#include <nand.h> +#include <version.h> + +void lcd_show_board_info(void) +{ +	ulong dram_size, nand_size; +	int i; +	char temp[32]; + +	lcd_printf ("%s\n", U_BOOT_VERSION); +	lcd_printf ("(C) 2008 ATMEL Corp\n"); +	lcd_printf ("at91support@atmel.com\n"); +	lcd_printf ("%s CPU at %s MHz\n", +		AT91_CPU_NAME, +		strmhz(temp, AT91_MAIN_CLOCK)); + +	dram_size = 0; +	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) +		dram_size += gd->bd->bi_dram[i].size; +	nand_size = 0; +	for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++) +		nand_size += nand_info[i].size; +	lcd_printf ("  %ld MB SDRAM, %ld MB NAND\n", +		dram_size >> 20, +		nand_size >> 20 ); +} +#endif /* CONFIG_LCD_INFO */  #endif  int board_init(void) diff --git a/board/atmel/at91sam9261ek/at91sam9261ek.c b/board/atmel/at91sam9261ek/at91sam9261ek.c index 76f56d6ae..70f1db93f 100644 --- a/board/atmel/at91sam9261ek/at91sam9261ek.c +++ b/board/atmel/at91sam9261ek/at91sam9261ek.c @@ -209,6 +209,35 @@ static void at91sam9261ek_lcd_hw_init(void)  	gd->fb_base = AT91SAM9261_SRAM_BASE;  } + +#ifdef CONFIG_LCD_INFO +#include <nand.h> +#include <version.h> + +void lcd_show_board_info(void) +{ +	ulong dram_size, nand_size; +	int i; +	char temp[32]; + +	lcd_printf ("%s\n", U_BOOT_VERSION); +	lcd_printf ("(C) 2008 ATMEL Corp\n"); +	lcd_printf ("at91support@atmel.com\n"); +	lcd_printf ("%s CPU at %s MHz\n", +		AT91_CPU_NAME, +		strmhz(temp, AT91_MAIN_CLOCK)); + +	dram_size = 0; +	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) +		dram_size += gd->bd->bi_dram[i].size; +	nand_size = 0; +	for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++) +		nand_size += nand_info[i].size; +	lcd_printf ("  %ld MB SDRAM, %ld MB NAND\n", +		dram_size >> 20, +		nand_size >> 20 ); +} +#endif /* CONFIG_LCD_INFO */  #endif  int board_init(void) diff --git a/board/atmel/at91sam9263ek/at91sam9263ek.c b/board/atmel/at91sam9263ek/at91sam9263ek.c index dd513b9e1..63f95e718 100644 --- a/board/atmel/at91sam9263ek/at91sam9263ek.c +++ b/board/atmel/at91sam9263ek/at91sam9263ek.c @@ -260,6 +260,35 @@ static void at91sam9263ek_lcd_hw_init(void)  	gd->fb_base = AT91SAM9263_SRAM0_BASE;  } + +#ifdef CONFIG_LCD_INFO +#include <nand.h> +#include <version.h> + +void lcd_show_board_info(void) +{ +	ulong dram_size, nand_size; +	int i; +	char temp[32]; + +	lcd_printf ("%s\n", U_BOOT_VERSION); +	lcd_printf ("(C) 2008 ATMEL Corp\n"); +	lcd_printf ("at91support@atmel.com\n"); +	lcd_printf ("%s CPU at %s MHz\n", +		AT91_CPU_NAME, +		strmhz(temp, AT91_MAIN_CLOCK)); + +	dram_size = 0; +	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) +		dram_size += gd->bd->bi_dram[i].size; +	nand_size = 0; +	for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++) +		nand_size += nand_info[i].size; +	lcd_printf ("  %ld MB SDRAM, %ld MB NAND\n", +		dram_size >> 20, +		nand_size >> 20 ); +} +#endif /* CONFIG_LCD_INFO */  #endif  int board_init(void) diff --git a/board/atmel/at91sam9rlek/at91sam9rlek.c b/board/atmel/at91sam9rlek/at91sam9rlek.c index 7bf1f439b..37e371ff2 100644 --- a/board/atmel/at91sam9rlek/at91sam9rlek.c +++ b/board/atmel/at91sam9rlek/at91sam9rlek.c @@ -181,6 +181,35 @@ static void at91sam9rlek_lcd_hw_init(void)  	gd->fb_base = 0;  } + +#ifdef CONFIG_LCD_INFO +#include <nand.h> +#include <version.h> + +void lcd_show_board_info(void) +{ +	ulong dram_size, nand_size; +	int i; +	char temp[32]; + +	lcd_printf ("%s\n", U_BOOT_VERSION); +	lcd_printf ("(C) 2008 ATMEL Corp\n"); +	lcd_printf ("at91support@atmel.com\n"); +	lcd_printf ("%s CPU at %s MHz\n", +		AT91_CPU_NAME, +		strmhz(temp, AT91_MAIN_CLOCK)); + +	dram_size = 0; +	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) +		dram_size += gd->bd->bi_dram[i].size; +	nand_size = 0; +	for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++) +		nand_size += nand_info[i].size; +	lcd_printf ("  %ld MB SDRAM, %ld MB NAND\n", +		dram_size >> 20, +		nand_size >> 20 ); +} +#endif /* CONFIG_LCD_INFO */  #endif diff --git a/board/lwmon/lwmon.c b/board/lwmon/lwmon.c index aadd2540e..9e572463d 100644 --- a/board/lwmon/lwmon.c +++ b/board/lwmon/lwmon.c @@ -759,6 +759,35 @@ static uchar *key_match (uchar *kbd_data)  }  #endif /* CONFIG_PREBOOT */ +#ifdef CONFIG_LCD_INFO +#include <lcd.h> +#include <version.h> + +void lcd_show_board_info(void) +{ +	char temp[32]; + +	lcd_printf ("%s (%s - %s)\n", U_BOOT_VERSION, __DATE__, __TIME__); +	lcd_printf ("(C) 2008 DENX Software Engineering GmbH\n"); +	lcd_printf ("    Wolfgang DENK, wd@denx.de\n"); +#ifdef CONFIG_LCD_INFO_BELOW_LOGO +	lcd_printf ("MPC823 CPU at %s MHz\n", +		strmhz(temp, gd->cpu_clk)); +	lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 3, +					info, strlen(info)); +	lcd_printf ("  %ld MB RAM, %ld MB Flash\n", +		gd->ram_size >> 20, +		gd->bd->bi_flashsize >> 20 ); +#else +	/* leave one blank line */ +	lcd_printf ("\nMPC823 CPU at %s MHz, %ld MB RAM, %ld MB Flash\n", +		strmhz(temp, gd->cpu_clk), +		gd->ram_size >> 20, +		gd->bd->bi_flashsize >> 20 ); +#endif /* CONFIG_LCD_INFO_BELOW_LOGO */ +} +#endif /* CONFIG_LCD_INFO */ +  /*---------------Board Special Commands: PIC read/write ---------------*/  #if defined(CONFIG_CMD_BSP) diff --git a/board/tqc/tqm8xx/tqm8xx.c b/board/tqc/tqm8xx/tqm8xx.c index 9a0f3a0ff..928afed66 100644 --- a/board/tqc/tqm8xx/tqm8xx.c +++ b/board/tqc/tqm8xx/tqm8xx.c @@ -568,6 +568,32 @@ void ide_led (uchar led, uchar status)  }  # endif +#ifdef CONFIG_LCD_INFO +#include <lcd.h> + +void lcd_show_board_info(void) +{ +	lcd_printf ("%s (%s - %s)\n", U_BOOT_VERSION, __DATE__, __TIME__); +	lcd_printf ("(C) 2008 DENX Software Engineering GmbH\n"); +	lcd_printf ("    Wolfgang DENK, wd@denx.de\n"); +#ifdef CONFIG_LCD_INFO_BELOW_LOGO +	lcd_printf ("MPC823 CPU at %s MHz\n", +		strmhz(temp, gd->cpu_clk)); +	lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 3, +					info, strlen(info)); +	lcd_printf ("  %ld MB RAM, %ld MB Flash\n", +		gd->ram_size >> 20, +		gd->bd->bi_flashsize >> 20 ); +#else +	/* leave one blank line */ +	lcd_printf ("\nMPC823 CPU at %s MHz, %ld MB RAM, %ld MB Flash\n", +		strmhz(temp, gd->cpu_clk), +		gd->ram_size >> 20, +		gd->bd->bi_flashsize >> 20 ); +#endif /* CONFIG_LCD_INFO_BELOW_LOGO */ +} +#endif /* CONFIG_LCD_INFO */ +  /* ---------------------------------------------------------------------------- */  /* TK885D specific initializaion						*/  /* ---------------------------------------------------------------------------- */ diff --git a/common/lcd.c b/common/lcd.c index 813c8d827..31bb190dd 100644 --- a/common/lcd.c +++ b/common/lcd.c @@ -52,7 +52,6 @@  #if defined(CONFIG_ATMEL_LCD)  #include <atmel_lcdc.h> -#include <nand.h>  #endif  /************************************************************************/ @@ -762,15 +761,6 @@ extern bmp_image_t *gunzip_bmp(unsigned long addr, unsigned long *lenp);  static void *lcd_logo (void)  { -#ifdef CONFIG_LCD_INFO -	char info[80]; -	char temp[32]; -#ifdef CONFIG_ATMEL_LCD -	int i; -	ulong dram_size, nand_size; -#endif -#endif /* CONFIG_LCD_INFO */ -  #ifdef CONFIG_SPLASH_SCREEN  	char *s;  	ulong addr; @@ -800,75 +790,11 @@ static void *lcd_logo (void)  	bitmap_plot (0, 0);  #endif /* CONFIG_LCD_LOGO */ -#ifdef CONFIG_MPC823 -# ifdef CONFIG_LCD_INFO -	sprintf (info, "%s (%s - %s) ", U_BOOT_VERSION, __DATE__, __TIME__); -	lcd_drawchars (LCD_INFO_X, LCD_INFO_Y, (uchar *)info, strlen(info)); - -	sprintf (info, "(C) 2008 DENX Software Engineering GmbH"); -	lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT, -					(uchar *)info, strlen(info)); - -	sprintf (info, "    Wolfgang DENK, wd@denx.de"); -	lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 2, -					(uchar *)info, strlen(info)); -#  ifdef CONFIG_LCD_INFO_BELOW_LOGO -	sprintf (info, "MPC823 CPU at %s MHz", -		strmhz(temp, gd->cpu_clk)); -	lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 3, -					info, strlen(info)); -	sprintf (info, "  %ld MB RAM, %ld MB Flash", -		gd->ram_size >> 20, -		gd->bd->bi_flashsize >> 20 ); -	lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 4, -					info, strlen(info)); -#  else -	/* leave one blank line */ - -	sprintf (info, "MPC823 CPU at %s MHz, %ld MB RAM, %ld MB Flash", -		strmhz(temp, gd->cpu_clk), -		gd->ram_size >> 20, -		gd->bd->bi_flashsize >> 20 ); -	lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 4, -					(uchar *)info, strlen(info)); - -#  endif /* CONFIG_LCD_INFO_BELOW_LOGO */ -# endif /* CONFIG_LCD_INFO */ -#endif /* CONFIG_MPC823 */ - -#ifdef CONFIG_ATMEL_LCD -# ifdef CONFIG_LCD_INFO -	sprintf (info, "%s", U_BOOT_VERSION); -	lcd_drawchars (LCD_INFO_X, LCD_INFO_Y, (uchar *)info, strlen(info)); - -	sprintf (info, "(C) 2008 ATMEL Corp"); -	lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT, -					(uchar *)info, strlen(info)); - -	sprintf (info, "at91support@atmel.com"); -	lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 2, -					(uchar *)info, strlen(info)); - -	sprintf (info, "%s CPU at %s MHz", -		AT91_CPU_NAME, -		strmhz(temp, AT91_MAIN_CLOCK)); -	lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 3, -					(uchar *)info, strlen(info)); - -	dram_size = 0; -	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) -		dram_size += gd->bd->bi_dram[i].size; -	nand_size = 0; -	for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++) -		nand_size += nand_info[i].size; -	sprintf (info, "  %ld MB SDRAM, %ld MB NAND", -		dram_size >> 20, -		nand_size >> 20 ); -	lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 4, -					(uchar *)info, strlen(info)); -# endif /* CONFIG_LCD_INFO */ -#endif /* CONFIG_ATMEL_LCD */ - +#ifdef CONFIG_LCD_INFO +	console_col = LCD_INFO_X / VIDEO_FONT_WIDTH; +	console_row = LCD_INFO_Y / VIDEO_FONT_HEIGHT; +	lcd_show_board_info(); +#endif /* CONFIG_LCD_INFO */  #if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)  	return ((void *)((ulong)lcd_base + BMP_LOGO_HEIGHT * lcd_line_length)); diff --git a/include/lcd.h b/include/lcd.h index 15affb85c..512221e9c 100644 --- a/include/lcd.h +++ b/include/lcd.h @@ -197,6 +197,8 @@ void	lcd_putc	(const char c);  void	lcd_puts	(const char *s);  void	lcd_printf	(const char *fmt, ...); +/* Allow boards to customize the information displayed */ +void lcd_show_board_info(void);  /************************************************************************/  /* ** BITMAP DISPLAY SUPPORT						*/ |