blob: 3d90218faa611d40bddcdcc9708937ca45c48af0 [file] [log] [blame]
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +01001/*
2 * (C) Copyright 2011, 2012, 2013
3 * Yuri Tikhonov, Emcraft Systems, yur@emcraft.com
4 * Alexander Potashev, Emcraft Systems, aspotashev@emcraft.com
5 * Vladimir Khusainov, Emcraft Systems, vlad@emcraft.com
6 * Pavel Boldin, Emcraft Systems, paboldin@emcraft.com
7 *
8 * (C) Copyright 2015
Kamil Lulko75d48a62015-12-01 09:08:19 +01009 * Kamil Lulko, <kamil.lulko@gmail.com>
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +010010 *
11 * SPDX-License-Identifier: GPL-2.0+
12 */
13
14#include <common.h>
Simon Glass11c89f32017-05-17 17:18:03 -060015#include <dm.h>
Patrice Chotardf3a701a2017-12-12 09:49:39 +010016
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +010017#include <asm/io.h>
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +010018#include <asm/arch/stm32.h>
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +010019
20DECLARE_GLOBAL_DATA_PTR;
21
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +010022int dram_init(void)
23{
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +010024 int rv;
Patrice Chotardb59d10f2017-12-12 09:49:34 +010025 struct udevice *dev;
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +010026
Patrice Chotardb59d10f2017-12-12 09:49:34 +010027 rv = uclass_get_device(UCLASS_RAM, 0, &dev);
28 if (rv) {
29 debug("DRAM init failed: %d\n", rv);
30 return rv;
31 }
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +010032
Patrice Chotardb59d10f2017-12-12 09:49:34 +010033 if (fdtdec_setup_memory_size() != 0)
34 rv = -EINVAL;
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +010035
Patrice Chotardb59d10f2017-12-12 09:49:34 +010036 return rv;
37}
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +010038
Patrice Chotardb59d10f2017-12-12 09:49:34 +010039int dram_init_banksize(void)
40{
41 fdtdec_setup_memory_banksize();
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +010042
Patrice Chotardb59d10f2017-12-12 09:49:34 +010043 return 0;
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +010044}
45
46u32 get_board_rev(void)
47{
48 return 0;
49}
50
51int board_early_init_f(void)
52{
rev13@wp.pl6b5e5a92015-03-01 12:44:42 +010053 return 0;
54}
55
56int board_init(void)
57{
58 gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
59
60 return 0;
61}
Antonio Borneo989e8b22015-07-19 22:19:46 +080062
63#ifdef CONFIG_MISC_INIT_R
64int misc_init_r(void)
65{
66 char serialno[25];
67 uint32_t u_id_low, u_id_mid, u_id_high;
68
Simon Glass64b723f2017-08-03 12:22:12 -060069 if (!env_get("serial#")) {
Antonio Borneo989e8b22015-07-19 22:19:46 +080070 u_id_low = readl(&STM32_U_ID->u_id_low);
71 u_id_mid = readl(&STM32_U_ID->u_id_mid);
72 u_id_high = readl(&STM32_U_ID->u_id_high);
73 sprintf(serialno, "%08x%08x%08x",
74 u_id_high, u_id_mid, u_id_low);
Simon Glass6a38e412017-08-03 12:22:09 -060075 env_set("serial#", serialno);
Antonio Borneo989e8b22015-07-19 22:19:46 +080076 }
77
78 return 0;
79}
80#endif