blob: bcb037924948b92908ae049562022c626e315f15 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0
Nobuhiro Iwamatsua5413442014-12-02 16:52:20 +09002/*
Marek Vasut31c81e02025-01-29 18:04:26 +01003 * board/renesas/common/common.c
Nobuhiro Iwamatsua5413442014-12-02 16:52:20 +09004 *
5 * Copyright (C) 2013 Renesas Electronics Corporation
6 * Copyright (C) 2013 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
Nobuhiro Iwamatsu4dc515a2016-04-01 03:51:34 +09007 * Copyright (C) 2015 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Nobuhiro Iwamatsua5413442014-12-02 16:52:20 +09008 */
9
Marek Vasut45eaf052019-07-09 01:46:35 +020010#include <dm.h>
Geert Uytterhoevenaf90acf2022-03-29 14:19:08 +020011#include <fdt_support.h>
Marek Vasut78cea932023-05-31 20:10:28 +020012#include <hang.h>
Simon Glass97589732020-05-10 11:40:02 -060013#include <init.h>
Simon Glass3ba929a2020-10-30 21:38:53 -060014#include <asm/global_data.h>
Marek Vasut78cea932023-05-31 20:10:28 +020015#include <asm/io.h>
Marek Vasut45eaf052019-07-09 01:46:35 +020016#include <dm/uclass-internal.h>
Marek Vasut97a070b2024-02-27 17:05:54 +010017#include <asm/arch/renesas.h>
Marek Vasut1d60fee2024-12-21 22:46:36 +010018#include <asm/system.h>
Simon Glass2dc9c342020-05-10 11:40:01 -060019#include <linux/libfdt.h>
Marek Vasut276a1d82019-05-19 23:25:16 +020020
Marek Vasut276a1d82019-05-19 23:25:16 +020021DECLARE_GLOBAL_DATA_PTR;
22
Marek Vasutda8646a2020-04-11 20:50:24 +020023int dram_init(void)
Marek Vasut276a1d82019-05-19 23:25:16 +020024{
Marek Vasut1d60fee2024-12-21 22:46:36 +010025 int ret = fdtdec_setup_mem_size_base();
26
27 if (current_el() == 3 && gd->ram_base == 0x48000000) {
28 /*
29 * If this U-Boot runs in EL3, make the bottom 128 MiB
30 * available for loading of follow up firmware blobs.
31 */
32 gd->ram_base -= 0x8000000;
33 gd->ram_size += 0x8000000;
34 }
35
36 return ret;
Marek Vasutda8646a2020-04-11 20:50:24 +020037}
Marek Vasut276a1d82019-05-19 23:25:16 +020038
Marek Vasutc0c87f62025-05-31 00:03:39 +020039__weak void renesas_dram_init_banksize(void) { }
40
Marek Vasutda8646a2020-04-11 20:50:24 +020041int dram_init_banksize(void)
42{
Marek Vasut1d60fee2024-12-21 22:46:36 +010043 int bank;
44
Michal Simekc7ac6ac2020-07-10 13:16:48 +020045 fdtdec_setup_memory_banksize();
Marek Vasut276a1d82019-05-19 23:25:16 +020046
Marek Vasut1d60fee2024-12-21 22:46:36 +010047 if (current_el() != 3)
48 return 0;
49
50 for (bank = 0; bank < CONFIG_NR_DRAM_BANKS; bank++) {
51 if (gd->bd->bi_dram[bank].start != 0x48000000)
52 continue;
53
54 /*
55 * If this U-Boot runs in EL3, make the bottom 128 MiB
56 * available for loading of follow up firmware blobs.
57 */
58 gd->bd->bi_dram[bank].start -= 0x8000000;
59 gd->bd->bi_dram[bank].size += 0x8000000;
60 break;
61 }
62
Marek Vasutc0c87f62025-05-31 00:03:39 +020063 renesas_dram_init_banksize();
64
Marek Vasut276a1d82019-05-19 23:25:16 +020065 return 0;
66}
Marek Vasutce528522021-04-03 16:58:49 +020067
Marek Vasut9c6ad452023-05-31 20:33:04 +020068int __weak board_init(void)
69{
70 return 0;
71}
Marek Vasutbc794002025-01-29 18:04:33 +010072
73int __weak board_early_init_f(void)
74{
75 return 0;
76}