1 // SPDX-License-Identifier: GPL-2.0+ 2 /* 3 * Copyright (C) 2017 Microchip 4 * Wenyou Yang <wenyou.yang@microchip.com> 5 */ 6 7 #include <common.h> 8 #include <atmel_lcd.h> 9 #include <dm.h> 10 #include <nand.h> 11 #include <version.h> 12 #include <video.h> 13 #include <video_console.h> 14 #include <asm/io.h> 15 #include <asm/arch/clk.h> 16 17 DECLARE_GLOBAL_DATA_PTR; 18 19 int at91_video_show_board_info(void) 20 { 21 struct vidconsole_priv *priv; 22 ulong dram_size, nand_size; 23 int i; 24 u32 len = 0; 25 char buf[255]; 26 char *corp = "2017 Microchip Technology Inc.\n"; 27 char temp[32]; 28 struct udevice *dev, *con; 29 const char *s; 30 vidinfo_t logo_info; 31 int ret; 32 33 len += sprintf(&buf[len], "%s\n", U_BOOT_VERSION); 34 memcpy(&buf[len], corp, strlen(corp)); 35 len += strlen(corp); 36 len += sprintf(&buf[len], "%s CPU at %s MHz\n", get_cpu_name(), 37 strmhz(temp, get_cpu_clk_rate())); 38 39 dram_size = 0; 40 for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) 41 dram_size += gd->bd->bi_dram[i].size; 42 43 nand_size = 0; 44 #ifdef CONFIG_NAND_ATMEL 45 for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++) 46 nand_size += get_nand_dev_by_index(i)->size; 47 #endif 48 49 len += sprintf(&buf[len], "%ld MB SDRAM, %ld MB NAND\n", 50 dram_size >> 20, nand_size >> 20); 51 52 ret = uclass_get_device(UCLASS_VIDEO, 0, &dev); 53 if (ret) 54 return ret; 55 56 microchip_logo_info(&logo_info); 57 ret = video_bmp_display(dev, logo_info.logo_addr, 58 logo_info.logo_x_offset, 59 logo_info.logo_y_offset, false); 60 if (ret) 61 return ret; 62 63 ret = uclass_get_device(UCLASS_VIDEO_CONSOLE, 0, &con); 64 if (ret) 65 return ret; 66 67 priv = dev_get_uclass_priv(con); 68 vidconsole_position_cursor(con, 0, (logo_info.logo_height + 69 priv->y_charsize - 1) / priv->y_charsize); 70 for (s = buf, i = 0; i < len; s++, i++) 71 vidconsole_put_char(con, *s); 72 73 return 0; 74 } 75