[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