Commit 6b59e03e0237a40a2305ea385defdfd92000978b
Committed by
Anatolij Gustschin
1 parent
6f93d2b8fc
Exists in
master
and in
54 other branches
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 |
board/lwmon/lwmon.c
... | ... | @@ -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 | /* ---------------------------------------------------------------------------- */ |
common/lcd.c
... | ... | @@ -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)); |
include/lcd.h
... | ... | @@ -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 */ |