blob: c389a64c87916ed4ff9d2afd37c74b0e418b3e65 [file] [log] [blame]
Patrick Williams92b42cb2022-09-03 06:53:57 -05001From 3566cf4ab79ca78acd69cfb87e74587394e5aeb2 Mon Sep 17 00:00:00 2001
Brad Bishopbec4ebc2022-08-03 09:55:16 -04002From: Rui Miguel Silva <rui.silva@linaro.org>
3Date: Wed, 8 Jan 2020 09:48:11 +0000
4Subject: [PATCH 2/2] board: arm: add corstone500 board
5
6Upstream-Status: Pending [Not submitted to upstream yet]
7Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
8
9Add support for the Arm corstone500 platform, with a cortex-a5
10chip, add the default configuration, initialization and
11makefile for this system.
12
13Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
14
15%% original patch: 0002-board-arm-add-corstone500-board.patch
Patrick Williams92b42cb2022-09-03 06:53:57 -050016
17Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Brad Bishopbec4ebc2022-08-03 09:55:16 -040018---
19 arch/arm/Kconfig | 10 +++
20 board/armltd/corstone500/Kconfig | 12 +++
21 board/armltd/corstone500/Makefile | 8 ++
22 board/armltd/corstone500/corstone500.c | 48 +++++++++++
23 configs/corstone500_defconfig | 40 +++++++++
24 include/configs/corstone500.h | 109 +++++++++++++++++++++++++
25 6 files changed, 227 insertions(+)
26 create mode 100644 board/armltd/corstone500/Kconfig
27 create mode 100644 board/armltd/corstone500/Makefile
28 create mode 100644 board/armltd/corstone500/corstone500.c
29 create mode 100644 configs/corstone500_defconfig
30 create mode 100644 include/configs/corstone500.h
31
32diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
Patrick Williams92b42cb2022-09-03 06:53:57 -050033index 9898c7d68e1b..8c60ed39712e 100644
Brad Bishopbec4ebc2022-08-03 09:55:16 -040034--- a/arch/arm/Kconfig
35+++ b/arch/arm/Kconfig
Patrick Williams92b42cb2022-09-03 06:53:57 -050036@@ -718,6 +718,15 @@ config ARCH_BCMSTB
Brad Bishopbec4ebc2022-08-03 09:55:16 -040037 This enables support for Broadcom ARM-based set-top box
38 chipsets, including the 7445 family of chips.
39
40+config TARGET_CORSTONE500
41+ bool "Support Corstone500"
42+ select CPU_V7A
43+ select SEMIHOSTING
44+ select PL01X_SERIAL
45+ help
46+ This enables support for Corstone500 ARM which is a
47+ Cortex-A5 system
48+
49 config TARGET_VEXPRESS_CA9X4
50 bool "Support vexpress_ca9x4"
51 select CPU_V7A
Patrick Williams92b42cb2022-09-03 06:53:57 -050052@@ -2299,6 +2308,7 @@ source "board/bosch/shc/Kconfig"
Brad Bishopbec4ebc2022-08-03 09:55:16 -040053 source "board/bosch/guardian/Kconfig"
54 source "board/Marvell/octeontx/Kconfig"
55 source "board/Marvell/octeontx2/Kconfig"
56+source "board/armltd/corstone500/Kconfig"
57 source "board/armltd/vexpress/Kconfig"
58 source "board/armltd/vexpress64/Kconfig"
59 source "board/cortina/presidio-asic/Kconfig"
60diff --git a/board/armltd/corstone500/Kconfig b/board/armltd/corstone500/Kconfig
61new file mode 100644
Patrick Williams92b42cb2022-09-03 06:53:57 -050062index 000000000000..8e689bd1fdc8
Brad Bishopbec4ebc2022-08-03 09:55:16 -040063--- /dev/null
64+++ b/board/armltd/corstone500/Kconfig
65@@ -0,0 +1,12 @@
66+if TARGET_CORSTONE500
67+
68+config SYS_BOARD
69+ default "corstone500"
70+
71+config SYS_VENDOR
72+ default "armltd"
73+
74+config SYS_CONFIG_NAME
75+ default "corstone500"
76+
77+endif
78diff --git a/board/armltd/corstone500/Makefile b/board/armltd/corstone500/Makefile
79new file mode 100644
Patrick Williams92b42cb2022-09-03 06:53:57 -050080index 000000000000..6598fdd3ae0d
Brad Bishopbec4ebc2022-08-03 09:55:16 -040081--- /dev/null
82+++ b/board/armltd/corstone500/Makefile
83@@ -0,0 +1,8 @@
84+# SPDX-License-Identifier: GPL-2.0+
85+#
86+# (C) Copyright 2022 ARM Limited
87+# (C) Copyright 2022 Linaro
88+# Rui Miguel Silva <rui.silva@linaro.org>
89+#
90+
91+obj-y := corstone500.o
92diff --git a/board/armltd/corstone500/corstone500.c b/board/armltd/corstone500/corstone500.c
93new file mode 100644
Patrick Williams92b42cb2022-09-03 06:53:57 -050094index 000000000000..e878f5c6a521
Brad Bishopbec4ebc2022-08-03 09:55:16 -040095--- /dev/null
96+++ b/board/armltd/corstone500/corstone500.c
97@@ -0,0 +1,48 @@
98+// SPDX-License-Identifier: GPL-2.0+
99+/*
100+ * (C) Copyright 2022 ARM Limited
101+ * (C) Copyright 2022 Linaro
102+ * Rui Miguel Silva <rui.silva@linaro.org>
103+ */
104+
105+#include <common.h>
106+#include <dm.h>
107+#include <dm/platform_data/serial_pl01x.h>
108+#include <malloc.h>
109+#include <asm/global_data.h>
110+
111+static const struct pl01x_serial_plat serial_platdata = {
112+ .base = V2M_UART0,
113+ .type = TYPE_PL011,
114+ .clock = CONFIG_PL011_CLOCK,
115+};
116+
117+U_BOOT_DRVINFO(corstone500_serials) = {
118+ .name = "serial_pl01x",
119+ .plat = &serial_platdata,
120+};
121+
122+int board_init(void)
123+{
124+ return 0;
125+}
126+
127+int dram_init(void)
128+{
129+ gd->ram_size = PHYS_SDRAM_1_SIZE;
130+
131+ return 0;
132+}
133+
134+int dram_init_banksize(void)
135+{
136+ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
137+ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
138+
139+ return 0;
140+}
141+
142+void reset_cpu(ulong addr)
143+{
144+}
145+
146diff --git a/configs/corstone500_defconfig b/configs/corstone500_defconfig
147new file mode 100644
Patrick Williams92b42cb2022-09-03 06:53:57 -0500148index 000000000000..d3161a4b40d8
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400149--- /dev/null
150+++ b/configs/corstone500_defconfig
151@@ -0,0 +1,40 @@
152+CONFIG_ARM=y
153+CONFIG_SKIP_LOWLEVEL_INIT=y
154+CONFIG_TARGET_CORSTONE500=y
155+CONFIG_SYS_TEXT_BASE=0x88000000
156+CONFIG_SYS_MALLOC_LEN=0x840000
157+CONFIG_SYS_MALLOC_F_LEN=0x2000
158+CONFIG_NR_DRAM_BANKS=1
159+CONFIG_SYS_MEMTEST_START=0x80000000
160+CONFIG_SYS_MEMTEST_END=0xff000000
161+CONFIG_ENV_SIZE=0x40000
162+CONFIG_IDENT_STRING=" corstone500 aarch32"
163+CONFIG_SYS_LOAD_ADDR=0x90000000
164+CONFIG_SUPPORT_RAW_INITRD=y
165+CONFIG_BOOTDELAY=1
166+CONFIG_USE_BOOTARGS=y
167+CONFIG_BOOTARGS="console=ttyAMA0 earlycon=pl011,0x1a200000 root=/dev/ram0 rw loglevel=9"
168+# CONFIG_DISPLAY_CPUINFO is not set
169+# CONFIG_DISPLAY_BOARDINFO is not set
170+CONFIG_HUSH_PARSER=y
171+CONFIG_SYS_PROMPT="corstone500# "
172+# CONFIG_CMD_CONSOLE is not set
173+CONFIG_CMD_BOOTZ=y
174+# CONFIG_CMD_XIMG is not set
175+# CONFIG_CMD_EDITENV is not set
176+# CONFIG_CMD_ENV_EXISTS is not set
177+CONFIG_CMD_MEMTEST=y
178+CONFIG_CMD_ARMFLASH=y
179+# CONFIG_CMD_LOADS is not set
180+# CONFIG_CMD_ITEST is not set
181+# CONFIG_CMD_SETEXPR is not set
182+CONFIG_CMD_DHCP=y
183+# CONFIG_CMD_NFS is not set
184+CONFIG_CMD_MII=y
185+CONFIG_CMD_PING=y
186+CONFIG_CMD_CACHE=y
187+CONFIG_CMD_FAT=y
188+CONFIG_DM=y
189+CONFIG_MTD_NOR_FLASH=y
190+CONFIG_DM_SERIAL=y
191+CONFIG_OF_LIBFDT=y
192diff --git a/include/configs/corstone500.h b/include/configs/corstone500.h
193new file mode 100644
Patrick Williams92b42cb2022-09-03 06:53:57 -0500194index 000000000000..93c397d2f515
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400195--- /dev/null
196+++ b/include/configs/corstone500.h
197@@ -0,0 +1,109 @@
198+/* SPDX-License-Identifier: GPL-2.0+ */
199+/*
200+ * (C) Copyright 2022 ARM Limited
201+ * (C) Copyright 2022 Linaro
202+ * Rui Miguel Silva <rui.silva@linaro.org>
203+ *
204+ * Configuration for Cortex-A5 Corstone500. Parts were derived from other ARM
205+ * configurations.
206+ */
207+
208+#ifndef __CORSTONE500_H
209+#define __CORSTONE500_H
210+
211+#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0x03f00000)
212+
213+/* Generic Timer Definitions */
214+#define CONFIG_SYS_HZ_CLOCK 7500000
215+#define CONFIG_SYS_HZ 1000
216+#define COUNTER_FREQUENCY CONFIG_SYS_HZ_CLOCK
217+
218+#ifdef CONFIG_CORSTONE500_MEMORY_MAP_EXTENDED
219+#define V2M_SRAM0 0x00010000
220+#define V2M_SRAM1 0x02200000
221+#define V2M_QSPI 0x0a800000
222+#else
223+#define V2M_SRAM0 0x00000000
224+#define V2M_SRAM1 0x02000000
225+#define V2M_QSPI 0x08000000
226+#endif
227+
228+#define V2M_DEBUG 0x10000000
229+#define V2M_BASE_PERIPH 0x1a000000
230+#define V2M_A5_PERIPH 0x1c000000
231+#define V2M_L2CC_PERIPH 0x1c010000
232+
233+#define V2M_MASTER_EXPANSION0 0x40000000
234+#define V2M_MASTER_EXPANSION1 0x60000000
235+
236+#define V2M_BASE 0x80000000
237+
238+#define V2M_PERIPH_OFFSET(x) (x << 16)
239+
240+#define V2M_SYSID (V2M_BASE_PERIPH)
241+#define V2M_SYCTL (V2M_BASE_PERIPH + V2M_PERIPH_OFFSET(1))
242+#define V2M_COUNTER_CTL (V2M_BASE_PERIPH + V2M_PERIPH_OFFSET(2))
243+#define V2M_COUNTER_READ (V2M_BASE_PERIPH + V2M_PERIPH_OFFSET(3))
244+#define V2M_TIMER_CTL (V2M_BASE_PERIPH + V2M_PERIPH_OFFSET(4))
245+#define V2M_TIMER0 (V2M_BASE_PERIPH + V2M_PERIPH_OFFSET(5))
246+
247+#define V2M_WATCHDOG_CTL (V2M_BASE_PERIPH + V2M_PERIPH_OFFSET(16))
248+#define V2M_WATCHDOG_REFRESH (V2M_BASE_PERIPH + V2M_PERIPH_OFFSET(17))
249+
250+#define V2M_UART0 (V2M_BASE_PERIPH + V2M_PERIPH_OFFSET(32))
251+#define V2M_UART1 (V2M_BASE_PERIPH + V2M_PERIPH_OFFSET(33))
252+
253+#define V2M_RTC (V2M_BASE_PERIPH + V2M_PERIPH_OFFSET(34))
254+#define V2M_TRNG (V2M_BASE_PERIPH + V2M_PERIPH_OFFSET(35))
255+
256+/* PL011 Serial Configuration */
257+#define CONFIG_CONS_INDEX 0
258+#define CONFIG_PL011_CLOCK 7500000
259+
260+/* Physical Memory Map */
261+#define PHYS_SDRAM_1 (V2M_BASE)
262+
263+/* Top 16MB reserved for secure world use */
264+#define DRAM_SEC_SIZE 0x01000000
265+#define PHYS_SDRAM_1_SIZE (0x80000000 - DRAM_SEC_SIZE)
266+
267+/* Miscellaneous configurable options */
268+#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
269+
270+#define CONFIG_SYS_MMIO_TIMER
271+
272+#define CONFIG_EXTRA_ENV_SETTINGS \
273+ "kernel_name=Image\0" \
274+ "kernel_addr=0x80f00000\0" \
275+ "initrd_name=ramdisk.img\0" \
276+ "initrd_addr=0x84000000\0" \
277+ "fdt_name=devtree.dtb\0" \
278+ "fdt_addr=0x83000000\0" \
279+ "fdt_high=0xffffffff\0" \
280+ "initrd_high=0xffffffff\0"
281+
282+#define CONFIG_BOOTCOMMAND "echo copy to RAM...; " \
283+ "cp.b 0x80100000 $kernel_addr 0xb00000; " \
284+ "cp.b 0x80d00000 $initrd_addr 0x800000; " \
285+ "bootz $kernel_addr $initrd_addr:0x800000 $fdt_addr"
286+
287+/* Monitor Command Prompt */
288+#define CONFIG_SYS_CBSIZE 512 /* Console I/O Buffer Size */
289+#define CONFIG_SYS_MAXARGS 64 /* max command args */
290+
291+#define CONFIG_SYS_FLASH_BASE 0x80000000
292+/* 256 x 256KiB sectors */
293+#define CONFIG_SYS_MAX_FLASH_SECT 256
294+/* Store environment at top of flash */
295+#define CONFIG_ENV_ADDR 0x0a7c0000
296+#define CONFIG_ENV_SECT_SIZE 0x0040000
297+
298+#define CONFIG_SYS_FLASH_CFI 1
299+#define CONFIG_FLASH_CFI_DRIVER 1
300+#define CONFIG_SYS_FLASH_CFI_WIDTH FLASH_CFI_32BIT
301+#define CONFIG_SYS_MAX_FLASH_BANKS 1
302+
303+#define CONFIG_SYS_FLASH_EMPTY_INFO /* flinfo indicates empty blocks */
304+#define FLASH_MAX_SECTOR_SI 0x00040000
305+#define CONFIG_ENV_IS_IN_FLASH 1
306+#endif
307--
Patrick Williams92b42cb2022-09-03 06:53:57 -05003082.37.1
Brad Bishopbec4ebc2022-08-03 09:55:16 -0400309