blob: 69229ea3cb01f5262889cbe2c6e56e4ca4ee1a89 [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 Vasutda8646a2020-04-11 20:50:24 +020039int dram_init_banksize(void)
40{
Marek Vasut1d60fee2024-12-21 22:46:36 +010041 int bank;
42
Michal Simekc7ac6ac2020-07-10 13:16:48 +020043 fdtdec_setup_memory_banksize();
Marek Vasut276a1d82019-05-19 23:25:16 +020044
Marek Vasut1d60fee2024-12-21 22:46:36 +010045 if (current_el() != 3)
46 return 0;
47
48 for (bank = 0; bank < CONFIG_NR_DRAM_BANKS; bank++) {
49 if (gd->bd->bi_dram[bank].start != 0x48000000)
50 continue;
51
52 /*
53 * If this U-Boot runs in EL3, make the bottom 128 MiB
54 * available for loading of follow up firmware blobs.
55 */
56 gd->bd->bi_dram[bank].start -= 0x8000000;
57 gd->bd->bi_dram[bank].size += 0x8000000;
58 break;
59 }
60
Marek Vasut276a1d82019-05-19 23:25:16 +020061 return 0;
62}
Marek Vasutce528522021-04-03 16:58:49 +020063
Marek Vasut9c6ad452023-05-31 20:33:04 +020064int __weak board_init(void)
65{
66 return 0;
67}
Marek Vasutbc794002025-01-29 18:04:33 +010068
69int __weak board_early_init_f(void)
70{
71 return 0;
72}