diff options
author | Samuel Holland <samuel@sholland.org> | 2017-08-12 04:07:39 -0500 |
---|---|---|
committer | Andre Przywara <andre.przywara@arm.com> | 2018-06-15 11:45:24 +0100 |
commit | 58032586f88980c03969e47bcc9a84b5abc788e2 (patch) | |
tree | f196bb59d71318ded15a75febbc0d654277d5ae1 /plat/allwinner/common/include | |
parent | 498161a504bdeeb21ea0647422ce484c79664e1b (diff) | |
download | trusted-firmware-a-58032586f88980c03969e47bcc9a84b5abc788e2.tar.gz |
allwinner: Introduce basic platform support
This platform supports Allwinner's SoCs with ARMv8 cores. So far they
all sport a single cluster of Cortex-A53 cores.
"sunxi" is the original code name used for this platform, and since it
appears in the Linux kernel and in U-Boot as well, we use it here as a
short file name prefix and for identifiers.
This port includes BL31 support only. U-Boot's SPL takes the role of the
primary loader, also doing the DRAM initialization. It then loads the
rest of the firmware, namely ATF and U-Boot (BL33), then hands execution
over to ATF.
This commit includes the basic platform code shared across all SoCs.
There is no platform.mk yet.
[Andre: moved files into proper directories, supported RESET_TO_BL31,
various clean ups and simplifications ]
Signed-off-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Diffstat (limited to 'plat/allwinner/common/include')
-rw-r--r-- | plat/allwinner/common/include/plat_macros.S | 27 | ||||
-rw-r--r-- | plat/allwinner/common/include/platform_def.h | 45 | ||||
-rw-r--r-- | plat/allwinner/common/include/sunxi_def.h | 17 |
3 files changed, 89 insertions, 0 deletions
diff --git a/plat/allwinner/common/include/plat_macros.S b/plat/allwinner/common/include/plat_macros.S new file mode 100644 index 0000000000..6ee4597f2f --- /dev/null +++ b/plat/allwinner/common/include/plat_macros.S @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __PLAT_MACROS_S__ +#define __PLAT_MACROS_S__ + +#include <arm_macros.S> +#include <sunxi_mmap.h> + + /* --------------------------------------------- + * The below required platform porting macro + * prints out relevant GIC and CCI registers + * whenever an unhandled exception is taken in + * BL31. + * Clobbers: x0 - x10, x16, x17, sp + * --------------------------------------------- + */ + .macro plat_crash_print_regs + mov_imm x17, SUNXI_GICC_BASE + mov_imm x16, SUNXI_GICD_BASE + arm_print_gic_regs + .endm + +#endif /* __PLAT_MACROS_S__ */ diff --git a/plat/allwinner/common/include/platform_def.h b/plat/allwinner/common/include/platform_def.h new file mode 100644 index 0000000000..ca7db2f241 --- /dev/null +++ b/plat/allwinner/common/include/platform_def.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __PLATFORM_DEF_H__ +#define __PLATFORM_DEF_H__ + +#include <common_def.h> +#include <sunxi_mmap.h> +#include <tbbr/tbbr_img_def.h> + +#define BL31_BASE SUNXI_SRAM_A2_BASE +#define BL31_LIMIT (SUNXI_SRAM_A2_BASE + SUNXI_SRAM_A2_SIZE) + +/* The traditional U-Boot load address is 160MB into DRAM, so at 0x4a000000 */ +#define PLAT_SUNXI_NS_IMAGE_OFFSET (SUNXI_DRAM_BASE + (160U << 20)) + +#define CACHE_WRITEBACK_SHIFT 6 +#define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT) + +#define MAX_MMAP_REGIONS (4 + PLATFORM_MMAP_REGIONS) +#define MAX_XLAT_TABLES 2 + +#define PLAT_MAX_PWR_LVL_STATES 2 +#define PLAT_MAX_RET_STATE 1 +#define PLAT_MAX_OFF_STATE 2 + +#define PLAT_MAX_PWR_LVL 2 +#define PLAT_NUM_PWR_DOMAINS (1 + \ + PLATFORM_CLUSTER_COUNT + \ + PLATFORM_CORE_COUNT) + +#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32) +#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32) + +#define PLATFORM_CLUSTER_COUNT 1 +#define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER_COUNT * \ + PLATFORM_MAX_CPUS_PER_CLUSTER) +#define PLATFORM_MAX_CPUS_PER_CLUSTER 4 +#define PLATFORM_MMAP_REGIONS 4 +#define PLATFORM_STACK_SIZE (0x1000 / PLATFORM_CORE_COUNT) + +#endif /* __PLATFORM_DEF_H__ */ diff --git a/plat/allwinner/common/include/sunxi_def.h b/plat/allwinner/common/include/sunxi_def.h new file mode 100644 index 0000000000..e68fbe4630 --- /dev/null +++ b/plat/allwinner/common/include/sunxi_def.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __SUNXI_DEF_H__ +#define __SUNXI_DEF_H__ + +/* Clock configuration */ +#define SUNXI_OSC24M_CLK_IN_HZ 24000000 + +/* UART configuration */ +#define SUNXI_UART0_BAUDRATE 115200 +#define SUNXI_UART0_CLK_IN_HZ SUNXI_OSC24M_CLK_IN_HZ + +#endif /* __SUNXI_DEF_H__ */ |