From: Nick Hawkins <[email protected]>

Add basic support for the HPE GXP SoC. Reset the EHCI controller at
boot.

Signed-off-by: Nick Hawkins <[email protected]>

---

v2:
 *Removed n for GXP_ECC as n is default.
 *Fix indentation in Kconfig file
 *Removed common.h and used necessary headers only.
 *Removed use of CONFIG_SYS_SDRAM_SIZE and used SZ_ constants instead
 *Moved ifdef's from gxp.h commit to this file.
---
 board/hpe/gxp/Kconfig     | 46 ++++++++++++++++++++++++
 board/hpe/gxp/Makefile    |  1 +
 board/hpe/gxp/gxp_board.c | 75 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 122 insertions(+)
 create mode 100644 board/hpe/gxp/Kconfig
 create mode 100644 board/hpe/gxp/Makefile
 create mode 100644 board/hpe/gxp/gxp_board.c

diff --git a/board/hpe/gxp/Kconfig b/board/hpe/gxp/Kconfig
new file mode 100644
index 0000000000..5b154a3f6e
--- /dev/null
+++ b/board/hpe/gxp/Kconfig
@@ -0,0 +1,46 @@
+choice
+       prompt "SoC select"
+
+config TARGET_GXP
+       bool "GXP"
+       select DM
+       select SOC_GXP
+       imply CMD_DM
+
+config TARGET_GXP2
+       bool "GXP2"
+       select DM
+       select SOC_GXP
+       select GXP_ECC
+       imply CMD_DM
+
+endchoice
+
+choice
+       prompt "GXP VROM size"
+       default GXP_VROM_64MB
+       optional
+
+config GXP_VROM_64MB
+       bool "64MB"
+
+config GXP_VROM_32MB
+       bool "32MB"
+endchoice
+
+config GXP_ECC
+       bool "Enable memory ECC protected"
+       help
+         Use half of memory to enable ECC protected
+
+config SYS_BOARD
+       default "gxp"
+
+config SYS_VENDOR
+       default "hpe"
+
+config SYS_CONFIG_NAME
+       default "gxp"
+
+config SYS_TEXT_BASE
+       default 0x50000000
diff --git a/board/hpe/gxp/Makefile b/board/hpe/gxp/Makefile
new file mode 100644
index 0000000000..775d6bf849
--- /dev/null
+++ b/board/hpe/gxp/Makefile
@@ -0,0 +1 @@
+obj-y += gxp_board.o
diff --git a/board/hpe/gxp/gxp_board.c b/board/hpe/gxp/gxp_board.c
new file mode 100644
index 0000000000..d94d9b8a19
--- /dev/null
+++ b/board/hpe/gxp/gxp_board.c
@@ -0,0 +1,75 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * GXP timer driver
+ *
+ * (C) Copyright 2022 Hewlett Packard Enterprise Development LP.
+ * Author: Nick Hawkins <[email protected]>
+ * Author: Jean-Marie Verdun <[email protected]>
+ */
+
+#include <linux/sizes.h>
+#include <asm/io.h>
+#include <dm.h>
+#include <dm/uclass.h>
+#include <ram.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define ECHI_CMD 0xcefe0010
+
+int board_init(void)
+{
+       writel(0x00080002, ECHI_CMD);
+
+       return 0;
+}
+
+int dram_init(void)
+{
+       if (IS_ENABLED(CONFIG_TARGET_GXP)) {
+               if (IS_ENABLED(CONFIG_GXP_ECC)) {
+                       /* 0x0f800000 */
+                       gd->ram_size = SZ_128M + SZ_64M + SZ_32M + SZ_16M + 
SZ_8M;
+               } else {
+                       /* 0x1f000000 */
+                       gd->ram_size = SZ_256M + SZ_128M + SZ_64M + SZ_32M + 
SZ_16M;
+               }
+
+               if (IS_ENABLED(CONFIG_GXP_VROM_64MB)) {
+                       if (IS_ENABLED(CONFIG_GXP_ECC)) {
+                               /* 0x0c000000 */
+                               gd->ram_size = SZ_128M + SZ_64M;
+                       } else {
+                               /* 0x18000000 */
+                               gd->ram_size = SZ_256M + SZ_128M;
+                       }
+               }
+
+               if (IS_ENABLED(CONFIG_GXP_VROM_32MB)) {
+                       if (IS_ENABLED(CONFIG_GXP_ECC)) {
+                               /* 0x0e000000 */
+                               gd->ram_size = SZ_128M + SZ_64M + SZ_32M;
+                       } else {
+                               /* 0x1c000000 */
+                               gd->ram_size = SZ_256M + SZ_128M + SZ_64M;
+                       }
+               }
+       }
+
+       if (IS_ENABLED(CONFIG_TARGET_GXP2)) {
+               /* 0x1b200000 */
+               gd->ram_size = SZ_256M + SZ_128M + SZ_32M + SZ_16M + SZ_2M;
+               if (IS_ENABLED(CONFIG_GXP_VROM_64MB)) {
+                       /* 0x14000000 */
+                       gd->ram_size = SZ_256M + SZ_64M;
+               }
+
+               if (IS_ENABLED(CONFIG_GXP_VROM_32MB)) {
+                       /* 0x18000000 */
+                       gd->ram_size = SZ_256M + SZ_128M;
+               }
+       }
+
+       return 0;
+}
+
-- 
2.17.1

Reply via email to