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 
dram_init(void)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 
3212308b12SSiva 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 
dram_init_banksize(void)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 
get_board_rev(void)45ed09a554Srev13@wp.pl u32 get_board_rev(void)
46ed09a554Srev13@wp.pl {
47ed09a554Srev13@wp.pl 	return 0;
48ed09a554Srev13@wp.pl }
49ed09a554Srev13@wp.pl 
board_early_init_f(void)50ed09a554Srev13@wp.pl int board_early_init_f(void)
51ed09a554Srev13@wp.pl {
52ed09a554Srev13@wp.pl 	return 0;
53ed09a554Srev13@wp.pl }
54ed09a554Srev13@wp.pl 
board_init(void)55ed09a554Srev13@wp.pl int board_init(void)
56ed09a554Srev13@wp.pl {
57*725e09b8SPatrice Chotard 	gd->bd->bi_boot_params = gd->bd->bi_dram[0].start + 0x100;
58ed09a554Srev13@wp.pl 
59ed09a554Srev13@wp.pl 	return 0;
60ed09a554Srev13@wp.pl }
61089fddfdSAntonio Borneo 
62089fddfdSAntonio Borneo #ifdef CONFIG_MISC_INIT_R
misc_init_r(void)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