Commit 6b59e03e0237a40a2305ea385defdfd92000978b

Authored by Haavard Skinnemoen
Committed by Anatolij Gustschin
1 parent 6f93d2b8fc

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>

Showing 8 changed files with 178 additions and 79 deletions Side-by-side Diff

board/atmel/at91cap9adk/at91cap9adk.c
... ... @@ -326,6 +326,35 @@
326 326  
327 327 gd->fb_base = 0;
328 328 }
  329 +
  330 +#ifdef CONFIG_LCD_INFO
  331 +#include <nand.h>
  332 +#include <version.h>
  333 +
  334 +void lcd_show_board_info(void)
  335 +{
  336 + ulong dram_size, nand_size;
  337 + int i;
  338 + char temp[32];
  339 +
  340 + lcd_printf ("%s\n", U_BOOT_VERSION);
  341 + lcd_printf ("(C) 2008 ATMEL Corp\n");
  342 + lcd_printf ("at91support@atmel.com\n");
  343 + lcd_printf ("%s CPU at %s MHz\n",
  344 + AT91_CPU_NAME,
  345 + strmhz(temp, AT91_MAIN_CLOCK));
  346 +
  347 + dram_size = 0;
  348 + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
  349 + dram_size += gd->bd->bi_dram[i].size;
  350 + nand_size = 0;
  351 + for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
  352 + nand_size += nand_info[i].size;
  353 + lcd_printf (" %ld MB SDRAM, %ld MB NAND\n",
  354 + dram_size >> 20,
  355 + nand_size >> 20 );
  356 +}
  357 +#endif /* CONFIG_LCD_INFO */
329 358 #endif
330 359  
331 360 int board_init(void)
board/atmel/at91sam9261ek/at91sam9261ek.c
... ... @@ -209,6 +209,35 @@
209 209  
210 210 gd->fb_base = AT91SAM9261_SRAM_BASE;
211 211 }
  212 +
  213 +#ifdef CONFIG_LCD_INFO
  214 +#include <nand.h>
  215 +#include <version.h>
  216 +
  217 +void lcd_show_board_info(void)
  218 +{
  219 + ulong dram_size, nand_size;
  220 + int i;
  221 + char temp[32];
  222 +
  223 + lcd_printf ("%s\n", U_BOOT_VERSION);
  224 + lcd_printf ("(C) 2008 ATMEL Corp\n");
  225 + lcd_printf ("at91support@atmel.com\n");
  226 + lcd_printf ("%s CPU at %s MHz\n",
  227 + AT91_CPU_NAME,
  228 + strmhz(temp, AT91_MAIN_CLOCK));
  229 +
  230 + dram_size = 0;
  231 + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
  232 + dram_size += gd->bd->bi_dram[i].size;
  233 + nand_size = 0;
  234 + for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
  235 + nand_size += nand_info[i].size;
  236 + lcd_printf (" %ld MB SDRAM, %ld MB NAND\n",
  237 + dram_size >> 20,
  238 + nand_size >> 20 );
  239 +}
  240 +#endif /* CONFIG_LCD_INFO */
212 241 #endif
213 242  
214 243 int board_init(void)
board/atmel/at91sam9263ek/at91sam9263ek.c
... ... @@ -260,6 +260,35 @@
260 260  
261 261 gd->fb_base = AT91SAM9263_SRAM0_BASE;
262 262 }
  263 +
  264 +#ifdef CONFIG_LCD_INFO
  265 +#include <nand.h>
  266 +#include <version.h>
  267 +
  268 +void lcd_show_board_info(void)
  269 +{
  270 + ulong dram_size, nand_size;
  271 + int i;
  272 + char temp[32];
  273 +
  274 + lcd_printf ("%s\n", U_BOOT_VERSION);
  275 + lcd_printf ("(C) 2008 ATMEL Corp\n");
  276 + lcd_printf ("at91support@atmel.com\n");
  277 + lcd_printf ("%s CPU at %s MHz\n",
  278 + AT91_CPU_NAME,
  279 + strmhz(temp, AT91_MAIN_CLOCK));
  280 +
  281 + dram_size = 0;
  282 + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
  283 + dram_size += gd->bd->bi_dram[i].size;
  284 + nand_size = 0;
  285 + for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
  286 + nand_size += nand_info[i].size;
  287 + lcd_printf (" %ld MB SDRAM, %ld MB NAND\n",
  288 + dram_size >> 20,
  289 + nand_size >> 20 );
  290 +}
  291 +#endif /* CONFIG_LCD_INFO */
263 292 #endif
264 293  
265 294 int board_init(void)
board/atmel/at91sam9rlek/at91sam9rlek.c
... ... @@ -181,6 +181,35 @@
181 181  
182 182 gd->fb_base = 0;
183 183 }
  184 +
  185 +#ifdef CONFIG_LCD_INFO
  186 +#include <nand.h>
  187 +#include <version.h>
  188 +
  189 +void lcd_show_board_info(void)
  190 +{
  191 + ulong dram_size, nand_size;
  192 + int i;
  193 + char temp[32];
  194 +
  195 + lcd_printf ("%s\n", U_BOOT_VERSION);
  196 + lcd_printf ("(C) 2008 ATMEL Corp\n");
  197 + lcd_printf ("at91support@atmel.com\n");
  198 + lcd_printf ("%s CPU at %s MHz\n",
  199 + AT91_CPU_NAME,
  200 + strmhz(temp, AT91_MAIN_CLOCK));
  201 +
  202 + dram_size = 0;
  203 + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
  204 + dram_size += gd->bd->bi_dram[i].size;
  205 + nand_size = 0;
  206 + for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
  207 + nand_size += nand_info[i].size;
  208 + lcd_printf (" %ld MB SDRAM, %ld MB NAND\n",
  209 + dram_size >> 20,
  210 + nand_size >> 20 );
  211 +}
  212 +#endif /* CONFIG_LCD_INFO */
184 213 #endif
185 214  
186 215  
... ... @@ -759,6 +759,35 @@
759 759 }
760 760 #endif /* CONFIG_PREBOOT */
761 761  
  762 +#ifdef CONFIG_LCD_INFO
  763 +#include <lcd.h>
  764 +#include <version.h>
  765 +
  766 +void lcd_show_board_info(void)
  767 +{
  768 + char temp[32];
  769 +
  770 + lcd_printf ("%s (%s - %s)\n", U_BOOT_VERSION, __DATE__, __TIME__);
  771 + lcd_printf ("(C) 2008 DENX Software Engineering GmbH\n");
  772 + lcd_printf (" Wolfgang DENK, wd@denx.de\n");
  773 +#ifdef CONFIG_LCD_INFO_BELOW_LOGO
  774 + lcd_printf ("MPC823 CPU at %s MHz\n",
  775 + strmhz(temp, gd->cpu_clk));
  776 + lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 3,
  777 + info, strlen(info));
  778 + lcd_printf (" %ld MB RAM, %ld MB Flash\n",
  779 + gd->ram_size >> 20,
  780 + gd->bd->bi_flashsize >> 20 );
  781 +#else
  782 + /* leave one blank line */
  783 + lcd_printf ("\nMPC823 CPU at %s MHz, %ld MB RAM, %ld MB Flash\n",
  784 + strmhz(temp, gd->cpu_clk),
  785 + gd->ram_size >> 20,
  786 + gd->bd->bi_flashsize >> 20 );
  787 +#endif /* CONFIG_LCD_INFO_BELOW_LOGO */
  788 +}
  789 +#endif /* CONFIG_LCD_INFO */
  790 +
762 791 /*---------------Board Special Commands: PIC read/write ---------------*/
763 792  
764 793 #if defined(CONFIG_CMD_BSP)
board/tqc/tqm8xx/tqm8xx.c
... ... @@ -568,6 +568,32 @@
568 568 }
569 569 # endif
570 570  
  571 +#ifdef CONFIG_LCD_INFO
  572 +#include <lcd.h>
  573 +
  574 +void lcd_show_board_info(void)
  575 +{
  576 + lcd_printf ("%s (%s - %s)\n", U_BOOT_VERSION, __DATE__, __TIME__);
  577 + lcd_printf ("(C) 2008 DENX Software Engineering GmbH\n");
  578 + lcd_printf (" Wolfgang DENK, wd@denx.de\n");
  579 +#ifdef CONFIG_LCD_INFO_BELOW_LOGO
  580 + lcd_printf ("MPC823 CPU at %s MHz\n",
  581 + strmhz(temp, gd->cpu_clk));
  582 + lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 3,
  583 + info, strlen(info));
  584 + lcd_printf (" %ld MB RAM, %ld MB Flash\n",
  585 + gd->ram_size >> 20,
  586 + gd->bd->bi_flashsize >> 20 );
  587 +#else
  588 + /* leave one blank line */
  589 + lcd_printf ("\nMPC823 CPU at %s MHz, %ld MB RAM, %ld MB Flash\n",
  590 + strmhz(temp, gd->cpu_clk),
  591 + gd->ram_size >> 20,
  592 + gd->bd->bi_flashsize >> 20 );
  593 +#endif /* CONFIG_LCD_INFO_BELOW_LOGO */
  594 +}
  595 +#endif /* CONFIG_LCD_INFO */
  596 +
571 597 /* ---------------------------------------------------------------------------- */
572 598 /* TK885D specific initializaion */
573 599 /* ---------------------------------------------------------------------------- */
... ... @@ -52,7 +52,6 @@
52 52  
53 53 #if defined(CONFIG_ATMEL_LCD)
54 54 #include <atmel_lcdc.h>
55   -#include <nand.h>
56 55 #endif
57 56  
58 57 /************************************************************************/
... ... @@ -762,15 +761,6 @@
762 761  
763 762 static void *lcd_logo (void)
764 763 {
765   -#ifdef CONFIG_LCD_INFO
766   - char info[80];
767   - char temp[32];
768   -#ifdef CONFIG_ATMEL_LCD
769   - int i;
770   - ulong dram_size, nand_size;
771   -#endif
772   -#endif /* CONFIG_LCD_INFO */
773   -
774 764 #ifdef CONFIG_SPLASH_SCREEN
775 765 char *s;
776 766 ulong addr;
... ... @@ -800,75 +790,11 @@
800 790 bitmap_plot (0, 0);
801 791 #endif /* CONFIG_LCD_LOGO */
802 792  
803   -#ifdef CONFIG_MPC823
804   -# ifdef CONFIG_LCD_INFO
805   - sprintf (info, "%s (%s - %s) ", U_BOOT_VERSION, __DATE__, __TIME__);
806   - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y, (uchar *)info, strlen(info));
807   -
808   - sprintf (info, "(C) 2008 DENX Software Engineering GmbH");
809   - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT,
810   - (uchar *)info, strlen(info));
811   -
812   - sprintf (info, " Wolfgang DENK, wd@denx.de");
813   - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 2,
814   - (uchar *)info, strlen(info));
815   -# ifdef CONFIG_LCD_INFO_BELOW_LOGO
816   - sprintf (info, "MPC823 CPU at %s MHz",
817   - strmhz(temp, gd->cpu_clk));
818   - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 3,
819   - info, strlen(info));
820   - sprintf (info, " %ld MB RAM, %ld MB Flash",
821   - gd->ram_size >> 20,
822   - gd->bd->bi_flashsize >> 20 );
823   - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 4,
824   - info, strlen(info));
825   -# else
826   - /* leave one blank line */
827   -
828   - sprintf (info, "MPC823 CPU at %s MHz, %ld MB RAM, %ld MB Flash",
829   - strmhz(temp, gd->cpu_clk),
830   - gd->ram_size >> 20,
831   - gd->bd->bi_flashsize >> 20 );
832   - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 4,
833   - (uchar *)info, strlen(info));
834   -
835   -# endif /* CONFIG_LCD_INFO_BELOW_LOGO */
836   -# endif /* CONFIG_LCD_INFO */
837   -#endif /* CONFIG_MPC823 */
838   -
839   -#ifdef CONFIG_ATMEL_LCD
840   -# ifdef CONFIG_LCD_INFO
841   - sprintf (info, "%s", U_BOOT_VERSION);
842   - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y, (uchar *)info, strlen(info));
843   -
844   - sprintf (info, "(C) 2008 ATMEL Corp");
845   - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT,
846   - (uchar *)info, strlen(info));
847   -
848   - sprintf (info, "at91support@atmel.com");
849   - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 2,
850   - (uchar *)info, strlen(info));
851   -
852   - sprintf (info, "%s CPU at %s MHz",
853   - AT91_CPU_NAME,
854   - strmhz(temp, AT91_MAIN_CLOCK));
855   - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 3,
856   - (uchar *)info, strlen(info));
857   -
858   - dram_size = 0;
859   - for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
860   - dram_size += gd->bd->bi_dram[i].size;
861   - nand_size = 0;
862   - for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
863   - nand_size += nand_info[i].size;
864   - sprintf (info, " %ld MB SDRAM, %ld MB NAND",
865   - dram_size >> 20,
866   - nand_size >> 20 );
867   - lcd_drawchars (LCD_INFO_X, LCD_INFO_Y + VIDEO_FONT_HEIGHT * 4,
868   - (uchar *)info, strlen(info));
869   -# endif /* CONFIG_LCD_INFO */
870   -#endif /* CONFIG_ATMEL_LCD */
871   -
  793 +#ifdef CONFIG_LCD_INFO
  794 + console_col = LCD_INFO_X / VIDEO_FONT_WIDTH;
  795 + console_row = LCD_INFO_Y / VIDEO_FONT_HEIGHT;
  796 + lcd_show_board_info();
  797 +#endif /* CONFIG_LCD_INFO */
872 798  
873 799 #if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)
874 800 return ((void *)((ulong)lcd_base + BMP_LOGO_HEIGHT * lcd_line_length));
... ... @@ -197,6 +197,8 @@
197 197 void lcd_puts (const char *s);
198 198 void lcd_printf (const char *fmt, ...);
199 199  
  200 +/* Allow boards to customize the information displayed */
  201 +void lcd_show_board_info(void);
200 202  
201 203 /************************************************************************/
202 204 /* ** BITMAP DISPLAY SUPPORT */