blob: 90eb468e4c4338f55b02dd85290f21a58b9421c6 [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/*
Nobuhiro Iwamatsu80403952016-04-01 03:51:33 +09003 * board/renesas/rcar-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
Hai Pham9046b5f2023-02-28 22:22:03 +010021#ifdef CONFIG_RCAR_64
Marek Vasut276a1d82019-05-19 23:25:16 +020022
23DECLARE_GLOBAL_DATA_PTR;
24
Marek Vasutda8646a2020-04-11 20:50:24 +020025int dram_init(void)
Marek Vasut276a1d82019-05-19 23:25:16 +020026{
Marek Vasut1d60fee2024-12-21 22:46:36 +010027 int ret = fdtdec_setup_mem_size_base();
28
29 if (current_el() == 3 && gd->ram_base == 0x48000000) {
30 /*
31 * If this U-Boot runs in EL3, make the bottom 128 MiB
32 * available for loading of follow up firmware blobs.
33 */
34 gd->ram_base -= 0x8000000;
35 gd->ram_size += 0x8000000;
36 }
37
38 return ret;
Marek Vasutda8646a2020-04-11 20:50:24 +020039}
Marek Vasut276a1d82019-05-19 23:25:16 +020040
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 Vasut276a1d82019-05-19 23:25:16 +020063 return 0;
64}
Marek Vasutce528522021-04-03 16:58:49 +020065
Marek Vasut9c6ad452023-05-31 20:33:04 +020066int __weak board_init(void)
67{
68 return 0;
69}
Marek Vasut78cea932023-05-31 20:10:28 +020070
Marek Vasut276a1d82019-05-19 23:25:16 +020071#endif