ARM: hpe: Introduce the HPE GXP architecture
authorNick Hawkins <nick.hawkins@hpe.com>
Mon, 16 May 2022 16:33:39 +0000 (11:33 -0500)
committerArnd Bergmann <arnd@arndb.de>
Wed, 18 May 2022 12:05:53 +0000 (14:05 +0200)
The GXP is the HPE BMC SoC that is used in the majority
of current generation HPE servers. Traditionally the asic will
last multiple generations of server before being replaced.

Info about SoC:

HPE GXP is the name of the HPE Soc. This SoC is used to implement many BMC
features at HPE. It supports ARMv7 architecture based on the Cortex A9
core. It is capable of using an AXI bus to whicha memory controller is
attached. It has multiple SPI interfaces to connect boot flash and BIOS
flash. It uses a 10/100/1000 MAC for network connectivity. It has multiple
i2c engines to drive connectivity with a host infrastructure. There
currently are no public specifications but this process is being worked.

Previously there was a requirement to reset the EHCI controller for the
asic to boot. This functionality has been moved to the u-boot
bootloader.

Signed-off-by: Nick Hawkins <nick.hawkins@hpe.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/mach-hpe/Kconfig [new file with mode: 0644]
arch/arm/mach-hpe/Makefile [new file with mode: 0644]
arch/arm/mach-hpe/gxp.c [new file with mode: 0644]

index 2e8091e..13f77ee 100644 (file)
@@ -620,6 +620,8 @@ source "arch/arm/mach-highbank/Kconfig"
 
 source "arch/arm/mach-hisi/Kconfig"
 
+source "arch/arm/mach-hpe/Kconfig"
+
 source "arch/arm/mach-imx/Kconfig"
 
 source "arch/arm/mach-integrator/Kconfig"
index a2391b8..97a8902 100644 (file)
@@ -179,6 +179,7 @@ machine-$(CONFIG_ARCH_FOOTBRIDGE)   += footbridge
 machine-$(CONFIG_ARCH_GEMINI)          += gemini
 machine-$(CONFIG_ARCH_HIGHBANK)                += highbank
 machine-$(CONFIG_ARCH_HISI)            += hisi
+machine-$(CONFIG_ARCH_HPE)             += hpe
 machine-$(CONFIG_ARCH_INTEGRATOR)      += integrator
 machine-$(CONFIG_ARCH_IOP32X)          += iop32x
 machine-$(CONFIG_ARCH_IXP4XX)          += ixp4xx
diff --git a/arch/arm/mach-hpe/Kconfig b/arch/arm/mach-hpe/Kconfig
new file mode 100644 (file)
index 0000000..3372bbf
--- /dev/null
@@ -0,0 +1,23 @@
+menuconfig ARCH_HPE
+       bool "HPE SoC support"
+       depends on ARCH_MULTI_V7
+       help
+         This enables support for HPE ARM based BMC chips.
+if ARCH_HPE
+
+config ARCH_HPE_GXP
+       bool "HPE GXP SoC"
+       depends on ARCH_MULTI_V7
+       select ARM_VIC
+       select GENERIC_IRQ_CHIP
+       select CLKSRC_MMIO
+       help
+         HPE GXP is the name of the HPE Soc. This SoC is used to implement many
+         BMC features at HPE. It supports ARMv7 architecture based on the Cortex
+         A9 core. It is capable of using an AXI bus to which a memory controller
+         is attached. It has multiple SPI interfaces to connect boot flash and
+         BIOS flash. It uses a 10/100/1000 MAC for network connectivity. It
+         has multiple i2c engines to drive connectivity with a host
+         infrastructure.
+
+endif
diff --git a/arch/arm/mach-hpe/Makefile b/arch/arm/mach-hpe/Makefile
new file mode 100644 (file)
index 0000000..8b0a912
--- /dev/null
@@ -0,0 +1 @@
+obj-$(CONFIG_ARCH_HPE_GXP) += gxp.o
diff --git a/arch/arm/mach-hpe/gxp.c b/arch/arm/mach-hpe/gxp.c
new file mode 100644 (file)
index 0000000..ef33413
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright (C) 2022 Hewlett-Packard Enterprise Development Company, L.P. */
+
+#include <linux/of_platform.h>
+#include <asm/mach/arch.h>
+
+static const char * const gxp_board_dt_compat[] = {
+       "hpe,gxp",
+       NULL,
+};
+
+DT_MACHINE_START(GXP_DT, "HPE GXP")
+       .dt_compat      = gxp_board_dt_compat,
+       .l2c_aux_val = 0,
+       .l2c_aux_mask = ~0,
+MACHINE_END