183d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 2ed09a554Srev13@wp.pl /* 3ed09a554Srev13@wp.pl * (C) Copyright 2011, 2012, 2013 4ed09a554Srev13@wp.pl * Yuri Tikhonov, Emcraft Systems, yur@emcraft.com 5ed09a554Srev13@wp.pl * Alexander Potashev, Emcraft Systems, aspotashev@emcraft.com 6ed09a554Srev13@wp.pl * Vladimir Khusainov, Emcraft Systems, vlad@emcraft.com 7ed09a554Srev13@wp.pl * Pavel Boldin, Emcraft Systems, paboldin@emcraft.com 8ed09a554Srev13@wp.pl * 9ed09a554Srev13@wp.pl * (C) Copyright 2015 1066562414SKamil Lulko * Kamil Lulko, <kamil.lulko@gmail.com> 11ed09a554Srev13@wp.pl */ 12ed09a554Srev13@wp.pl 13ed09a554Srev13@wp.pl #include <common.h> 149d922450SSimon Glass #include <dm.h> 154a56fd48SPatrice Chotard 16ed09a554Srev13@wp.pl #include <asm/io.h> 17ed09a554Srev13@wp.pl #include <asm/arch/stm32.h> 18ed09a554Srev13@wp.pl 19ed09a554Srev13@wp.pl DECLARE_GLOBAL_DATA_PTR; 20ed09a554Srev13@wp.pl 21ed09a554Srev13@wp.pl int dram_init(void) 22ed09a554Srev13@wp.pl { 23ed09a554Srev13@wp.pl int rv; 247fd65ef5SPatrice Chotard struct udevice *dev; 25ed09a554Srev13@wp.pl 267fd65ef5SPatrice Chotard rv = uclass_get_device(UCLASS_RAM, 0, &dev); 277fd65ef5SPatrice Chotard if (rv) { 287fd65ef5SPatrice Chotard debug("DRAM init failed: %d\n", rv); 297fd65ef5SPatrice Chotard return rv; 307fd65ef5SPatrice Chotard } 31ed09a554Srev13@wp.pl 32*12308b12SSiva Durga Prasad Paladugu if (fdtdec_setup_mem_size_base() != 0) 337fd65ef5SPatrice Chotard rv = -EINVAL; 34ed09a554Srev13@wp.pl 35ed09a554Srev13@wp.pl return rv; 36ed09a554Srev13@wp.pl } 37ed09a554Srev13@wp.pl 387fd65ef5SPatrice Chotard int dram_init_banksize(void) 397fd65ef5SPatrice Chotard { 407fd65ef5SPatrice Chotard fdtdec_setup_memory_banksize(); 417fd65ef5SPatrice Chotard 427fd65ef5SPatrice Chotard return 0; 437fd65ef5SPatrice Chotard } 447fd65ef5SPatrice Chotard 45ed09a554Srev13@wp.pl u32 get_board_rev(void) 46ed09a554Srev13@wp.pl { 47ed09a554Srev13@wp.pl return 0; 48ed09a554Srev13@wp.pl } 49ed09a554Srev13@wp.pl 50ed09a554Srev13@wp.pl int board_early_init_f(void) 51ed09a554Srev13@wp.pl { 52ed09a554Srev13@wp.pl return 0; 53ed09a554Srev13@wp.pl } 54ed09a554Srev13@wp.pl 55ed09a554Srev13@wp.pl int board_init(void) 56ed09a554Srev13@wp.pl { 57ed09a554Srev13@wp.pl gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; 58ed09a554Srev13@wp.pl 59ed09a554Srev13@wp.pl return 0; 60ed09a554Srev13@wp.pl } 61089fddfdSAntonio Borneo 62089fddfdSAntonio Borneo #ifdef CONFIG_MISC_INIT_R 63089fddfdSAntonio Borneo int misc_init_r(void) 64089fddfdSAntonio Borneo { 65089fddfdSAntonio Borneo char serialno[25]; 66089fddfdSAntonio Borneo uint32_t u_id_low, u_id_mid, u_id_high; 67089fddfdSAntonio Borneo 6800caae6dSSimon Glass if (!env_get("serial#")) { 69089fddfdSAntonio Borneo u_id_low = readl(&STM32_U_ID->u_id_low); 70089fddfdSAntonio Borneo u_id_mid = readl(&STM32_U_ID->u_id_mid); 71089fddfdSAntonio Borneo u_id_high = readl(&STM32_U_ID->u_id_high); 72089fddfdSAntonio Borneo sprintf(serialno, "%08x%08x%08x", 73089fddfdSAntonio Borneo u_id_high, u_id_mid, u_id_low); 74382bee57SSimon Glass env_set("serial#", serialno); 75089fddfdSAntonio Borneo } 76089fddfdSAntonio Borneo 77089fddfdSAntonio Borneo return 0; 78089fddfdSAntonio Borneo } 79089fddfdSAntonio Borneo #endif 80