This board is similar to SUV31, but the FPGA is reset concept is quite
different.

Signed-off-by: Holger Brunck <holger.bru...@ch.abb.com>
CC: Valentin Longchamp <valentin.longch...@ch.abb.com>
CC: Stefan Roese <s...@denx.de>
---
 board/keymile/km_arm/Kconfig       | 12 +++++++
 board/keymile/km_arm/MAINTAINERS   |  1 +
 board/keymile/km_arm/fpga_config.c | 15 ++++++--
 configs/kmsuse2_defconfig          | 58 ++++++++++++++++++++++++++++++
 include/configs/km_kirkwood.h      |  8 +++++
 scripts/config_whitelist.txt       |  1 +
 6 files changed, 93 insertions(+), 2 deletions(-)
 create mode 100644 configs/kmsuse2_defconfig

diff --git a/board/keymile/km_arm/Kconfig b/board/keymile/km_arm/Kconfig
index be6b162815..4b21db8573 100644
--- a/board/keymile/km_arm/Kconfig
+++ b/board/keymile/km_arm/Kconfig
@@ -7,6 +7,18 @@ config KM_FPGA_CONFIG
        help
          Include capability to change FPGA configuration.
 
+config KM_FPGA_FORCE_CONFIG
+       bool "FPGA reconfiguration"
+       default n
+       help
+         If yes we force to reconfigure the FPGA always
+
+config KM_FPGA_NO_RESET
+       bool "FPGA skip reset"
+       default n
+       help
+         If yes we skip triggering a reset of the FPGA
+
 config KM_ENV_IS_IN_SPI_NOR
        bool "Environment in SPI NOR"
        default n
diff --git a/board/keymile/km_arm/MAINTAINERS b/board/keymile/km_arm/MAINTAINERS
index 17926017c3..538f90f48b 100644
--- a/board/keymile/km_arm/MAINTAINERS
+++ b/board/keymile/km_arm/MAINTAINERS
@@ -9,4 +9,5 @@ F:      configs/km_kirkwood_pci_defconfig
 F:     configs/kmcoge5un_defconfig
 F:     configs/kmnusa_defconfig
 F:     configs/kmsugp1_defconfig
+F:     configs/kmsuse2_defconfig
 F:     configs/kmsuv31_defconfig
diff --git a/board/keymile/km_arm/fpga_config.c 
b/board/keymile/km_arm/fpga_config.c
index 051e167fd5..99bea009fa 100644
--- a/board/keymile/km_arm/fpga_config.c
+++ b/board/keymile/km_arm/fpga_config.c
@@ -82,6 +82,7 @@ static int boco_set_bits(u8 reg, u8 flags)
 #define FPGA_INIT_B    0x10
 #define FPGA_DONE      0x20
 
+#ifndef CONFIG_KM_FPGA_FORCE_CONFIG
 static int fpga_done(void)
 {
        int ret = 0;
@@ -100,13 +101,16 @@ static int fpga_done(void)
 
        return regval & FPGA_DONE ? 1 : 0;
 }
+#endif /* CONFIG_KM_FPGA_FORCE_CONFIG */
 
-int skip;
+static int skip;
 
 int trigger_fpga_config(void)
 {
        int ret = 0;
 
+       skip = 0;
+#ifndef CONFIG_KM_FPGA_FORCE_CONFIG
        /* if the FPGA is already configured, we do not want to
         * reconfigure it */
        skip = 0;
@@ -115,6 +119,7 @@ int trigger_fpga_config(void)
                skip = 1;
                return 0;
        }
+#endif /* CONFIG_KM_FPGA_FORCE_CONFIG */
 
        if (check_boco2()) {
                /* we have a BOCO2, this has to be triggered here */
@@ -188,7 +193,13 @@ int wait_for_fpga_config(void)
        return 0;
 }
 
-#if defined(KM_PCIE_RESET_MPP7)
+#if defined(CONFIG_KM_FPGA_NO_RESET)
+int fpga_reset(void)
+{
+       /* no dedicated reset pin for FPGA */
+       return 0;
+}
+#elif defined(KM_PCIE_RESET_MPP7)
 
 #define KM_PEX_RST_GPIO_PIN    7
 int fpga_reset(void)
diff --git a/configs/kmsuse2_defconfig b/configs/kmsuse2_defconfig
new file mode 100644
index 0000000000..e6726ebd0c
--- /dev/null
+++ b/configs/kmsuse2_defconfig
@@ -0,0 +1,58 @@
+CONFIG_ARM=y
+CONFIG_SYS_DCACHE_OFF=y
+CONFIG_ARCH_CPU_INIT=y
+CONFIG_KIRKWOOD=y
+CONFIG_SYS_TEXT_BASE=0x07d00000
+CONFIG_TARGET_KM_KIRKWOOD=y
+CONFIG_KM_FPGA_CONFIG=y
+CONFIG_KM_FPGA_FORCE_CONFIG=y
+CONFIG_KM_FPGA_NO_RESET=y
+CONFIG_KM_ENV_IS_IN_SPI_NOR=y
+CONFIG_ENV_SIZE=0x2000
+CONFIG_ENV_OFFSET=0xC0000
+CONFIG_ENV_SECT_SIZE=0x10000
+CONFIG_IDENT_STRING="\nABB SUSE2"
+CONFIG_SYS_EXTRA_OPTIONS="KM_SUSE2"
+CONFIG_MISC_INIT_R=y
+CONFIG_VERSION_VARIABLE=y
+# CONFIG_DISPLAY_BOARDINFO is not set
+CONFIG_HUSH_PARSER=y
+CONFIG_AUTOBOOT_KEYED=y
+CONFIG_AUTOBOOT_PROMPT="Hit <SPACE> key to stop autoboot in %2ds\n"
+CONFIG_AUTOBOOT_STOP_STR=" "
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_GREPENV=y
+CONFIG_CMD_EEPROM=y
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_I2C=y
+CONFIG_CMD_NAND=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
+CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
+CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:-(ubi0);"
+CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
+CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="kirkwood-km_kirkwood"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
+CONFIG_ENV_OFFSET_REDUND=0xD0000
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+CONFIG_BOOTCOUNT_LIMIT=y
+CONFIG_BOOTCOUNT_RAM=y
+CONFIG_BOOTCOUNT_BOOTLIMIT=3
+# CONFIG_MMC is not set
+CONFIG_MTD=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_SF_DEFAULT_SPEED=8100000
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_MVGBE=y
+CONFIG_MII=y
+CONFIG_SYS_NS16550=y
+CONFIG_SPI=y
+CONFIG_KIRKWOOD_SPI=y
+CONFIG_BCH=y
diff --git a/include/configs/km_kirkwood.h b/include/configs/km_kirkwood.h
index 064097a631..ea24964f54 100644
--- a/include/configs/km_kirkwood.h
+++ b/include/configs/km_kirkwood.h
@@ -65,6 +65,14 @@
 #define CONFIG_SYS_KWD_CONFIG $(CONFIG_BOARDDIR)/kwbimage_128M16_1.cfg
 #define CONFIG_KM_UBI_PART_BOOT_OPTS           ",2048"
 #define CONFIG_SYS_NAND_NO_SUBPAGE_WRITE
+
+/* KM_SUSE2 */
+#elif defined(CONFIG_KM_SUSE2)
+#define CONFIG_HOSTNAME                        "kmsuse2"
+#undef CONFIG_SYS_KWD_CONFIG
+#define CONFIG_SYS_KWD_CONFIG $(CONFIG_BOARDDIR)/kwbimage_128M16_1.cfg
+#define CONFIG_KM_UBI_PART_BOOT_OPTS           ",2048"
+#define CONFIG_SYS_NAND_NO_SUBPAGE_WRITE
 #else
 #error ("Board unsupported")
 #endif
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index cd154738a4..4524350403 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -943,6 +943,7 @@ CONFIG_KM_NEW_ENV
 CONFIG_KM_NUSA
 CONFIG_KM_ROOTFSSIZE
 CONFIG_KM_SUGP1
+CONFIG_KM_SUSE2
 CONFIG_KM_SUV31
 CONFIG_KM_UBI_LINUX_MTD
 CONFIG_KM_UBI_PARTITION_NAME_APP
-- 
2.24.0.rc1

Reply via email to