summaryrefslogtreecommitdiff
path: root/arch/arm/mach-histb
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-histb')
-rw-r--r--arch/arm/mach-histb/Kconfig39
-rw-r--r--arch/arm/mach-histb/Makefile4
-rw-r--r--arch/arm/mach-histb/board_common.c31
-rw-r--r--arch/arm/mach-histb/sysmap-histb.c31
4 files changed, 105 insertions, 0 deletions
diff --git a/arch/arm/mach-histb/Kconfig b/arch/arm/mach-histb/Kconfig
new file mode 100644
index 00000000000..012dbfe8bc6
--- /dev/null
+++ b/arch/arm/mach-histb/Kconfig
@@ -0,0 +1,39 @@
+if ARCH_HISTB
+
+choice
+ prompt "Select a HiSTB SoC"
+
+config ARCH_HI3798MV2X
+ bool "Hi3798M V2XX series SoC"
+ select ARM64
+ help
+ Support for Hi3798MV2XX series SoCs.
+
+endchoice
+
+if ARCH_HI3798MV2X
+
+choice
+ prompt "Select a Hi3798M V2XX based board"
+
+config TARGET_HC2910_2AGHD05
+ bool "Skyworth HC2910 with board label 2AGHD05"
+ help
+ Support for Skyworth HC2910 with board label 2AGHD05. This board features:
+ - Hisilicon Hi3798MV200 SoC (4xCortex-A53, Mali MP-450)
+ - 2GiB DRAM
+ - 8GiB eMMC, uSD slot
+ - Wifi and Bluetooth module
+ - 1x USB 2.0, 1x USB 3.0 host port
+ - HDMI
+ - SCI
+ - 3 LED - power, Wifi, Lock(?)
+ - 1x Fast Ethernet Controller, 1x GBe Ethernet Controller
+
+endchoice
+
+endif
+
+source "board/skyworth/hc2910-2aghd05/Kconfig"
+
+endif
diff --git a/arch/arm/mach-histb/Makefile b/arch/arm/mach-histb/Makefile
new file mode 100644
index 00000000000..7975c0f2a03
--- /dev/null
+++ b/arch/arm/mach-histb/Makefile
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0+
+
+obj-y += sysmap-histb.o
+obj-y += board_common.o
diff --git a/arch/arm/mach-histb/board_common.c b/arch/arm/mach-histb/board_common.c
new file mode 100644
index 00000000000..a26c2066e02
--- /dev/null
+++ b/arch/arm/mach-histb/board_common.c
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Board init file for all histb boards
+ *
+ * (C) Copyright 2023 Yang Xiwen <forbidden405@outlook.com>
+ */
+
+#include <common.h>
+#include <fdtdec.h>
+#include <init.h>
+#include <asm/system.h>
+
+int __weak board_init(void)
+{
+ return 0;
+}
+
+int __weak dram_init_banksize(void)
+{
+ return fdtdec_setup_memory_banksize();
+}
+
+int __weak dram_init(void)
+{
+ return fdtdec_setup_mem_size_base();
+}
+
+void __weak reset_cpu(void)
+{
+ psci_system_reset();
+}
diff --git a/arch/arm/mach-histb/sysmap-histb.c b/arch/arm/mach-histb/sysmap-histb.c
new file mode 100644
index 00000000000..83a2bb94179
--- /dev/null
+++ b/arch/arm/mach-histb/sysmap-histb.c
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Hisilicon HiSTB memory map
+ *
+ * (C) Copyright 2023 Yang Xiwen <forbidden405@outlook.com>
+ */
+
+#include <common.h>
+#include <asm/armv8/mmu.h>
+
+static struct mm_region histb_mem_map[] = {
+ {
+ .virt = 0x0UL, /* DRAM */
+ .phys = 0x0UL,
+ .size = 0x80000000UL,
+ .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
+ PTE_BLOCK_INNER_SHARE
+ }, {
+ .virt = 0x80000000UL, /* Peripheral block */
+ .phys = 0x80000000UL,
+ .size = 0x80000000UL,
+ .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
+ PTE_BLOCK_NON_SHARE |
+ PTE_BLOCK_PXN | PTE_BLOCK_UXN
+ }, {
+ /* Terminator */
+ 0,
+ }
+};
+
+struct mm_region *mem_map = histb_mem_map;