Patrick Williams | 92b42cb | 2022-09-03 06:53:57 -0500 | [diff] [blame^] | 1 | From 3566cf4ab79ca78acd69cfb87e74587394e5aeb2 Mon Sep 17 00:00:00 2001 |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 2 | From: Rui Miguel Silva <rui.silva@linaro.org> |
| 3 | Date: Wed, 8 Jan 2020 09:48:11 +0000 |
| 4 | Subject: [PATCH 2/2] board: arm: add corstone500 board |
| 5 | |
| 6 | Upstream-Status: Pending [Not submitted to upstream yet] |
| 7 | Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> |
| 8 | |
| 9 | Add support for the Arm corstone500 platform, with a cortex-a5 |
| 10 | chip, add the default configuration, initialization and |
| 11 | makefile for this system. |
| 12 | |
| 13 | Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> |
| 14 | |
| 15 | %% original patch: 0002-board-arm-add-corstone500-board.patch |
Patrick Williams | 92b42cb | 2022-09-03 06:53:57 -0500 | [diff] [blame^] | 16 | |
| 17 | Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 18 | --- |
| 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 | |
| 32 | diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig |
Patrick Williams | 92b42cb | 2022-09-03 06:53:57 -0500 | [diff] [blame^] | 33 | index 9898c7d68e1b..8c60ed39712e 100644 |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 34 | --- a/arch/arm/Kconfig |
| 35 | +++ b/arch/arm/Kconfig |
Patrick Williams | 92b42cb | 2022-09-03 06:53:57 -0500 | [diff] [blame^] | 36 | @@ -718,6 +718,15 @@ config ARCH_BCMSTB |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 37 | 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 Williams | 92b42cb | 2022-09-03 06:53:57 -0500 | [diff] [blame^] | 52 | @@ -2299,6 +2308,7 @@ source "board/bosch/shc/Kconfig" |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 53 | 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" |
| 60 | diff --git a/board/armltd/corstone500/Kconfig b/board/armltd/corstone500/Kconfig |
| 61 | new file mode 100644 |
Patrick Williams | 92b42cb | 2022-09-03 06:53:57 -0500 | [diff] [blame^] | 62 | index 000000000000..8e689bd1fdc8 |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 63 | --- /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 |
| 78 | diff --git a/board/armltd/corstone500/Makefile b/board/armltd/corstone500/Makefile |
| 79 | new file mode 100644 |
Patrick Williams | 92b42cb | 2022-09-03 06:53:57 -0500 | [diff] [blame^] | 80 | index 000000000000..6598fdd3ae0d |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 81 | --- /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 |
| 92 | diff --git a/board/armltd/corstone500/corstone500.c b/board/armltd/corstone500/corstone500.c |
| 93 | new file mode 100644 |
Patrick Williams | 92b42cb | 2022-09-03 06:53:57 -0500 | [diff] [blame^] | 94 | index 000000000000..e878f5c6a521 |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 95 | --- /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 | + |
| 146 | diff --git a/configs/corstone500_defconfig b/configs/corstone500_defconfig |
| 147 | new file mode 100644 |
Patrick Williams | 92b42cb | 2022-09-03 06:53:57 -0500 | [diff] [blame^] | 148 | index 000000000000..d3161a4b40d8 |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 149 | --- /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 |
| 192 | diff --git a/include/configs/corstone500.h b/include/configs/corstone500.h |
| 193 | new file mode 100644 |
Patrick Williams | 92b42cb | 2022-09-03 06:53:57 -0500 | [diff] [blame^] | 194 | index 000000000000..93c397d2f515 |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 195 | --- /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 Williams | 92b42cb | 2022-09-03 06:53:57 -0500 | [diff] [blame^] | 308 | 2.37.1 |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 309 | |