[PATCH 1/3] arm/km: add support for SUSE2
Stefan Roese
sr at denx.de
Tue Jan 14 09:01:06 CET 2020
Hi Holger,
On 13.01.20 15:34, Holger Brunck wrote:
> This board is similar to SUV31, but the FPGA is reset concept is quite
> different.
>
> Signed-off-by: Holger Brunck <holger.brunck at ch.abb.com>
> CC: Valentin Longchamp <valentin.longchamp at ch.abb.com>
> CC: Stefan Roese <sr at 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
>
I understand that the board is very similar to SUV31. Can't you add some
runtime detection of this board and use one U-Boot binary on both boards
instead?
Otherwise:
Reviewed-by: Stefan Roese <sr at denx.de>
Thanks,
Stefan
More information about the U-Boot
mailing list