diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index b758745f4a..cbecf09fa9 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -559,6 +559,14 @@ config TARGET_BCMNSP bool "Support bcmnsp" select CPU_V7 +config TARGET_BCMNS2 + bool "Support Broadcom Northstar2" + select ARM64 + help + Support for Broadcom Northstar 2 SoCs. NS2 is a quad-core 64-bit + ARMv8 Cortex-A57 processors targeting a broad range of networking + applications + config ARCH_EXYNOS bool "Samsung EXYNOS" select DM @@ -1237,6 +1245,7 @@ source "board/broadcom/bcm23550_w1d/Kconfig" source "board/broadcom/bcm28155_ap/Kconfig" source "board/broadcom/bcmcygnus/Kconfig" source "board/broadcom/bcmnsp/Kconfig" +source "board/broadcom/bcmns2/Kconfig" source "board/cavium/thunderx/Kconfig" source "board/cirrus/edb93xx/Kconfig" source "board/compulab/cm_t335/Kconfig" diff --git a/board/broadcom/bcm958712k/MAINTAINERS b/board/broadcom/bcm958712k/MAINTAINERS new file mode 100644 index 0000000000..024fb1447d --- /dev/null +++ b/board/broadcom/bcm958712k/MAINTAINERS @@ -0,0 +1,6 @@ +BCM958712K BOARD +M: Jon Mason +S: Maintained +F: board/broadcom/bcmns2/ +F: include/configs/bcm_northstar2.h +F: configs/bcm958712k_defconfig diff --git a/board/broadcom/bcmns2/Kconfig b/board/broadcom/bcmns2/Kconfig new file mode 100644 index 0000000000..3ac67249c4 --- /dev/null +++ b/board/broadcom/bcmns2/Kconfig @@ -0,0 +1,15 @@ +if TARGET_BCMNS2 + +config SYS_BOARD + default "bcmns2" + +config SYS_VENDOR + default "broadcom" + +config SYS_SOC + default "ns2" + +config SYS_CONFIG_NAME + default "bcm_northstar2" + +endif diff --git a/board/broadcom/bcmns2/Makefile b/board/broadcom/bcmns2/Makefile new file mode 100644 index 0000000000..f6ddd800b1 --- /dev/null +++ b/board/broadcom/bcmns2/Makefile @@ -0,0 +1,7 @@ +# +# Copyright 2016 Broadcom Ltd. +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y := northstar2.o diff --git a/board/broadcom/bcmns2/northstar2.c b/board/broadcom/bcmns2/northstar2.c new file mode 100644 index 0000000000..a64431d35e --- /dev/null +++ b/board/broadcom/bcmns2/northstar2.c @@ -0,0 +1,58 @@ +/* + * (C) Copyright 2016 Broadcom Ltd. + * + * SPDX-License-Identifier: GPL-2.0+ + */ +#include +#include +#include + +static struct mm_region ns2_mem_map[] = { + { + .virt = 0x0UL, + .phys = 0x0UL, + .size = 0x80000000UL, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, { + .virt = 0x80000000UL, + .phys = 0x80000000UL, + .size = 0xff80000000UL, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = ns2_mem_map; + +DECLARE_GLOBAL_DATA_PTR; + +int board_init(void) +{ + return 0; +} + +int dram_init(void) +{ + gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE, + PHYS_SDRAM_1_SIZE + PHYS_SDRAM_2_SIZE); + return 0; +} + +void dram_init_banksize(void) +{ + gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE; + gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE; + + gd->bd->bi_dram[1].start = CONFIG_SYS_SDRAM_BASE + PHYS_SDRAM_1_SIZE; + gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE; +} + +void reset_cpu(ulong addr) +{ + psci_system_reset(); +} diff --git a/configs/bcm958712k_defconfig b/configs/bcm958712k_defconfig new file mode 100644 index 0000000000..96e4bce972 --- /dev/null +++ b/configs/bcm958712k_defconfig @@ -0,0 +1,10 @@ +CONFIG_ARM=y +CONFIG_TARGET_BCMNS2=y +CONFIG_IDENT_STRING=" Broadcom Northstar 2" +CONFIG_DISTRO_DEFAULTS=y +CONFIG_BOOTDELAY=5 +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_SYS_PROMPT="u-boot> " +# CONFIG_CMD_IMLS is not set +CONFIG_SYS_NS16550=y +CONFIG_OF_LIBFDT=y diff --git a/include/configs/bcm_northstar2.h b/include/configs/bcm_northstar2.h new file mode 100644 index 0000000000..ec2ce3f926 --- /dev/null +++ b/include/configs/bcm_northstar2.h @@ -0,0 +1,55 @@ +/* + * Configuration for Broadcom NS2. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __BCM_NORTHSTAR2_H +#define __BCM_NORTHSTAR2_H + +#include + +#define CONFIG_HOSTNAME northstar2 + +/* Physical Memory Map */ +#define V2M_BASE 0x80000000 +#define PHYS_SDRAM_1 V2M_BASE + +#define CONFIG_NR_DRAM_BANKS 2 +#define PHYS_SDRAM_1_SIZE (4UL * SZ_1G) +#define PHYS_SDRAM_2_SIZE (4UL * SZ_1G) +#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1 + +/* define text_base for U-boot image */ +#define CONFIG_SYS_TEXT_BASE 0x85000000 +#define CONFIG_SYS_INIT_SP_ADDR (PHYS_SDRAM_1 + 0x7ff00) +#define CONFIG_SYS_LOAD_ADDR 0x90000000 +#define CONFIG_SYS_MALLOC_LEN SZ_16M + +/* Serial Configuration */ +#define CONFIG_SYS_NS16550_SERIAL +#define CONFIG_SYS_NS16550_REG_SIZE (-4) +#define CONFIG_SYS_NS16550_CLK 25000000 +#define CONFIG_SYS_NS16550_COM1 0x66100000 +#define CONFIG_SYS_NS16550_COM2 0x66110000 +#define CONFIG_SYS_NS16550_COM3 0x66120000 +#define CONFIG_SYS_NS16550_COM4 0x66130000 +#define CONFIG_CONS_INDEX 4 +#define CONFIG_BAUDRATE 115200 + +#define CONFIG_ENV_SIZE SZ_8K +#define CONFIG_ENV_IS_NOWHERE + +/* console configuration */ +#define CONFIG_SYS_CBSIZE SZ_1K +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ + sizeof(CONFIG_SYS_PROMPT) + 16) +#define CONFIG_SYS_MAXARGS 64 +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE + +/* version string, parser, etc */ +#define CONFIG_CMDLINE_EDITING +#define CONFIG_COMMAND_HISTORY +#define CONFIG_SYS_LONGHELP + +#endif /* __BCM_NORTHSTAR2_H */