[PATCH 1/1] Port to new board "VoCore2"

Stefan Roese sr at denx.de
Thu Dec 19 16:08:53 CET 2019


Hi Mauro,

On 19.12.19 12:40, MCon wrote:
> modified:   arch/mips/dts/Makefile
> 	Add support for creation of vocore2.dtb
> 	move creation of gardena-smart-gateway-mt7688.dtb and
> 		linkit-smart-7688.dtb to more specific setting.
> 
> new file:   arch/mips/dts/vocore2.dts
> modified:   arch/mips/mach-mtmips/Kconfig
> new file:   board/vonger/vocore2/Kconfig
> 	KConfig support for board VoCore2.
> 
> new file:   board/vonger/vocore2/Makefile
> new file:   board/vonger/vocore2/board.c
> 	Board initialization (largely copied from existing).
> 
> new file:   configs/vocore2_defconfig
> new file:   include/configs/vocore2.h
> 	Board settings (WIP).

This is a pretty uncommon commit text for a new board port. Please
don't add just a summary of which files are changed or added. Better
describe the newly added board with its supported (and perhaps not
yet supported) features. As an example, here the commit text for the
GARDENA board:

     The Gardena Smart-Gateway boards have a MT7688 SoC with 128 MiB of RAM
     and 8 MiB of flash (SPI NOR) and additional 128MiB SPI NAND storage.
     
     This patch also includes 2 targets. One is the target that can be
     programmed into the SPI NOR flash and a 2nd target "xxx-ram" is
     added to support loading and booting via an already running U-Boot
     version. This allows easy development and testing without the
     need to flash the image each time.

Just an example of course.

Please find some further review comments below inline.

> Signed-off-by: MCon <mc5686 at mclink.it>

Please use your name with the email address:

Signed-off-by: Mauro Condarelli <mc5686 at mclink.it>

> ---
> 
>   arch/mips/dts/Makefile        |  6 ++--
>   arch/mips/dts/vocore2.dts     | 62 +++++++++++++++++++++++++++++++++++
>   arch/mips/mach-mtmips/Kconfig |  9 +++++
>   board/vonger/vocore2/Kconfig  | 11 +++++++
>   board/vonger/vocore2/Makefile |  2 ++
>   board/vonger/vocore2/board.c  | 35 ++++++++++++++++++++
>   configs/vocore2_defconfig     | 61 ++++++++++++++++++++++++++++++++++
>   include/configs/vocore2.h     | 57 ++++++++++++++++++++++++++++++++
>   8 files changed, 240 insertions(+), 3 deletions(-)
>   create mode 100644 arch/mips/dts/vocore2.dts
>   create mode 100644 board/vonger/vocore2/Kconfig
>   create mode 100644 board/vonger/vocore2/Makefile
>   create mode 100644 board/vonger/vocore2/board.c
>   create mode 100644 configs/vocore2_defconfig
>   create mode 100644 include/configs/vocore2.h
> 
> diff --git a/arch/mips/dts/Makefile b/arch/mips/dts/Makefile
> index c9d75596f2..664505ee00 100644
> --- a/arch/mips/dts/Makefile
> +++ b/arch/mips/dts/Makefile
> @@ -1,8 +1,5 @@
>   # SPDX-License-Identifier: GPL-2.0+
>   
> -dtb-$(CONFIG_ARCH_MTMIPS) += \
> -	gardena-smart-gateway-mt7688.dtb \
> -	linkit-smart-7688.dtb
>   dtb-$(CONFIG_TARGET_AP121) += ap121.dtb
>   dtb-$(CONFIG_TARGET_AP143) += ap143.dtb
>   dtb-$(CONFIG_TARGET_AP152) += ap152.dtb
> @@ -16,12 +13,15 @@ dtb-$(CONFIG_BOARD_COMTREND_AR5387UN) += comtrend,ar-5387un.dtb
>   dtb-$(CONFIG_BOARD_COMTREND_CT5361) += comtrend,ct-5361.dtb
>   dtb-$(CONFIG_BOARD_COMTREND_VR3032U) += comtrend,vr-3032u.dtb
>   dtb-$(CONFIG_BOARD_COMTREND_WAP5813N) += comtrend,wap-5813n.dtb
> +dtb-$(CONFIG_BOARD_GARDENA_SMART_GATEWAY_MT7688) += gardena-smart-gateway-mt7688.dtb
>   dtb-$(CONFIG_BOARD_HUAWEI_HG556A) += huawei,hg556a.dtb
> +dtb-$(CONFIG_BOARD_LINKIT._SMART_7688) += linkit-smart-7688.dtb
>   dtb-$(CONFIG_BOARD_NETGEAR_CG3100D) += netgear,cg3100d.dtb
>   dtb-$(CONFIG_BOARD_NETGEAR_DGND3700V2) += netgear,dgnd3700v2.dtb
>   dtb-$(CONFIG_BOARD_SAGEM_FAST1704) += sagem,f at st1704.dtb
>   dtb-$(CONFIG_BOARD_SFR_NB4_SER) += sfr,nb4-ser.dtb
>   dtb-$(CONFIG_BOARD_TPLINK_WDR4300) += tplink_wdr4300.dtb
> +dtb-$(CONFIG_BOARD_VOCORE2) += vocore2.dtb
>   dtb-$(CONFIG_TARGET_JZ4780_CI20) += ci20.dtb
>   dtb-$(CONFIG_SOC_LUTON) += luton_pcb090.dtb luton_pcb091.dtb
>   dtb-$(CONFIG_SOC_OCELOT) += ocelot_pcb120.dtb ocelot_pcb123.dtb
> diff --git a/arch/mips/dts/vocore2.dts b/arch/mips/dts/vocore2.dts
> new file mode 100644
> index 0000000000..cdcd9b4e1d
> --- /dev/null
> +++ b/arch/mips/dts/vocore2.dts
> @@ -0,0 +1,62 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (C) 2019 Mauro Condarelli <mc5686 at mclink.it>
> + */
> +
> +/dts-v1/;
> +#include "mt7628a.dtsi"
> +
> +/ {
> +	compatible = "vocore,vocore2", "ralink,mt7628a-soc";
> +	model = "VoCore2";
> +
> +	aliases {
> +		serial0 = &uart2;
> +		spi0 = &spi0;
> +	};
> +
> +	memory at 0 {
> +		device_type = "memory";
> +		reg = <0x0 0x08000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttyS2,115200";
> +		stdout-path = &uart2;
> +	};
> +};
> +
> +&pinctrl {
> +	state_default: pin_state {
> +		p0led {
> +			groups = "p0led_a";
> +			function = "led";
> +		};
> +	};
> +};
> +
> +&uart2 {
> +	status = "okay";
> +};
> +
> +&spi0 {
> +	status = "okay";
> +	nor0: m25p80 at 0 {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		compatible = "m25p80";
> +		spi-max-frequency = <10000000>;
> +		reg = <0x0>;
> +		m25p,chunked-io = <32>;
> +	};
> +};
> +
> +&eth {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&ephy_iot_mode>;
> +	mediatek,poll-link-phy = <0>;
> +};
> +
> +&mmc {
> +	status = "okay";
> +};
> diff --git a/arch/mips/mach-mtmips/Kconfig b/arch/mips/mach-mtmips/Kconfig
> index c8dcf19c0d..5ea260232f 100644
> --- a/arch/mips/mach-mtmips/Kconfig
> +++ b/arch/mips/mach-mtmips/Kconfig
> @@ -43,6 +43,14 @@ config BOARD_LINKIT_SMART_7688
>   	  ethernet ports, 1 USB port, 1 UART, GPIO buttons and LEDs, and
>   	  a MT7688 (PCIe).
>   
> +config BOARD_VOCORE2
> +	bool "VoCore2"
> +	depends on SOC_MT7628
> +	select SUPPORTS_BOOT_RAM
> +	help
> +	  Vonger VoCore2 board has a MT7628 SoC with 128 MiB of RAM
> +	  and 16 MiB of flash (SPI).
> +

Is "Vonger" the name of the vendor / manufacturer of this board? I'm
just checking - I don't really know.

>   endchoice
>   
>   choice
> @@ -134,5 +142,6 @@ config SUPPORTS_BOOT_RAM
>   
>   source "board/gardena/smart-gateway-mt7688/Kconfig"
>   source "board/seeed/linkit-smart-7688/Kconfig"
> +source "board/vonger/vocore2/Kconfig"
>   
>   endmenu
> diff --git a/board/vonger/vocore2/Kconfig b/board/vonger/vocore2/Kconfig
> new file mode 100644
> index 0000000000..4067973e70
> --- /dev/null
> +++ b/board/vonger/vocore2/Kconfig
> @@ -0,0 +1,11 @@
> +if BOARD_VOCORE2
> +config SYS_BOARD
> +	default "vocore2"
> +
> +config SYS_VENDOR
> +	default "vonger"
> +
> +config SYS_CONFIG_NAME
> +	default "vocore2"
> +
> +endif
> diff --git a/board/vonger/vocore2/Makefile b/board/vonger/vocore2/Makefile
> new file mode 100644
> index 0000000000..4b162318c2
> --- /dev/null
> +++ b/board/vonger/vocore2/Makefile
> @@ -0,0 +1,2 @@
> +
> +obj-y := board.o
> diff --git a/board/vonger/vocore2/board.c b/board/vonger/vocore2/board.c
> new file mode 100644
> index 0000000000..1ab430247b
> --- /dev/null
> +++ b/board/vonger/vocore2/board.c
> @@ -0,0 +1,35 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (C) 2019 Mauro Condarelli <mc5686 at mclink.it>
> + *
> + * Note: this is largely copied from:
> + *       board/seeed/linkit_smart_7688/board.c
> + *       Copyright (C) 2018 Stefan Roese <sr at denx.de>
> + */
> +
> +#include <common.h>
> +#include <asm/io.h>
> +
> +#define MT76XX_GPIO1_MODE   0x10000060
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +void board_debug_uart_init(void)
> +{
> +	void __iomem *gpio_mode;
> +
> +	/* Select UART2 mode instead of GPIO mode (default) */
> +	gpio_mode = ioremap_nocache(MT76XX_GPIO1_MODE, 0x100);
> +	clrbits_le32(gpio_mode, GENMASK(27, 26));
> +}
> +
> +int board_early_init_f(void)
> +{
> +	/*
> +	 * The pin muxing of UART2 also needs to be done, if debug uart
> +	 * is not enabled. So we need to call this function here as well.
> +	 */
> +	board_debug_uart_init();
> +
> +	return 0;
> +}
> diff --git a/configs/vocore2_defconfig b/configs/vocore2_defconfig
> new file mode 100644
> index 0000000000..7b09a16fa4
> --- /dev/null
> +++ b/configs/vocore2_defconfig
> @@ -0,0 +1,61 @@
> +CONFIG_MIPS=y
> +CONFIG_SYS_TEXT_BASE=0x80010000
> +CONFIG_ENV_SIZE=0x00001000
> +CONFIG_ENV_OFFSET=0x00FFE000
> +CONFIG_ENV_SECT_SIZE=0x00001000
> +CONFIG_ARCH_MTMIPS=y
> +CONFIG_BOARD_VOCORE2=y
> +CONFIG_MIPS_BOOT_FDT=y
> +CONFIG_ENV_VARS_UBOOT_CONFIG=y
> +CONFIG_SYS_BOOT_GET_CMDLINE=y
> +CONFIG_SYS_BOOT_GET_KBD=y
> +# CONFIG_LEGACY_IMAGE_FORMAT is not set
> +# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
> +CONFIG_LOGLEVEL=8
> +CONFIG_VERSION_VARIABLE=y
> +CONFIG_DISPLAY_BOARDINFO_LATE=y
> +# CONFIG_AUTOBOOT is not set
> +# CONFIG_BOOTM_NETBSD is not set
> +# CONFIG_BOOTM_PLAN9 is not set
> +# CONFIG_BOOTM_RTEMS is not set
> +# CONFIG_BOOTM_VXWORKS is not set
> +# CONFIG_CMD_XIMG is not set
> +# CONFIG_CMD_LOADB is not set
> +# CONFIG_CMD_LOADS is not set
> +CONFIG_CMD_MTD=y
> +CONFIG_CMD_PART=y
> +CONFIG_CMD_SPI=y
> +CONFIG_CMD_USB=y
> +CONFIG_CMD_FAT=y
> +CONFIG_CMD_FS_GENERIC=y
> +CONFIG_CMD_MTDPARTS=y
> +CONFIG_MTDIDS_DEFAULT="nor0=spi0.0"
> +CONFIG_MTDPARTS_DEFAULT="spi0.0:320k(u-boot),2752k(kernel),13304k(filesystem),4k(env),-(factory)"
> +# CONFIG_ISO_PARTITION is not set
> +CONFIG_DEFAULT_DEVICE_TREE="vocore2"
> +CONFIG_ENV_IS_IN_SPI_FLASH=y
> +CONFIG_ENV_ADDR=0x00FFE000
> +# CONFIG_NET is not set
> +# CONFIG_DM_DEVICE_REMOVE is not set
> +CONFIG_BLK=y
> +# CONFIG_INPUT is not set
> +CONFIG_LED=y
> +CONFIG_LED_BLINK=y
> +CONFIG_LED_GPIO=y
> +CONFIG_MTD=y
> +CONFIG_SPI_FLASH_SFDP_SUPPORT=y
> +CONFIG_SPI_FLASH_GIGADEVICE=y
> +CONFIG_SPI_FLASH_MTD=y
> +# CONFIG_DM_ETH is not set
> +# CONFIG_RAM_ROCKCHIP_DEBUG is not set
> +CONFIG_SPECIFY_CONSOLE_INDEX=y
> +CONFIG_CONS_INDEX=3
> +CONFIG_SPI=y
> +CONFIG_MT7621_SPI=y
> +CONFIG_USB=y
> +CONFIG_DM_USB=y
> +CONFIG_USB_EHCI_HCD=y
> +CONFIG_USB_EHCI_GENERIC=y
> +CONFIG_USB_STORAGE=y
> +CONFIG_LZMA=y
> +CONFIG_LZO=y
> diff --git a/include/configs/vocore2.h b/include/configs/vocore2.h
> new file mode 100644
> index 0000000000..9ee32329f2
> --- /dev/null
> +++ b/include/configs/vocore2.h
> @@ -0,0 +1,57 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +/*
> + * Copyright (C) 2019 Mauro Condarelli <mc5686 at mclink.it>
> + */
> +
> +#ifndef __VOCORE2_CONFIG_H__
> +#define __VOCORE2_CONFIG_H__
> +
> +/* CPU */
> +#define CONFIG_SYS_MIPS_TIMER_FREQ      290000000
> +
> +/* RAM */
> +#define CONFIG_SYS_SDRAM_BASE          0x80000000
> +
> +#define CONFIG_SYS_LOAD_ADDR        CONFIG_SYS_SDRAM_BASE + 0x100000
> +
> +#define CONFIG_SYS_INIT_SP_OFFSET        0x400000
> +
> +#ifdef CONFIG_BOOT_RAM
> +#define CONFIG_SKIP_LOWLEVEL_INIT
> +#endif
> +
> +/* UART */
> +#define CONFIG_SYS_BAUDRATE_TABLE   { 9600, 19200, 38400, 57600, \
> +					115200, 230400, 460800, 921600 }
> +#define CONFIG_BAUDRATE			115200
> +
> +/* RAM */
> +#define CONFIG_SYS_MEMTEST_START       0x80100000
> +#define CONFIG_SYS_MEMTEST_END         0x80400000
> +
> +/* Memory usage */
> +#define CONFIG_SYS_MAXARGS                     64
> +#define CONFIG_SYS_MALLOC_LEN       (1024 * 1024)
> +#define CONFIG_SYS_BOOTPARAMS_LEN    (128 * 1024)
> +#define CONFIG_SYS_CBSIZE                     512
> +
> +/* U-Boot */
> +#define CONFIG_SYS_MONITOR_BASE     CONFIG_SYS_TEXT_BASE
> +
> +/* Environment settings */
> +#if defined(CONFIG_MTDIDS_DEFAULT) && defined(CONFIG_MTDPARTS_DEFAULT)
> +#define CONFIG_EXTRA_ENV_SETTINGS			\
> +	"mtdids="   CONFIG_MTDIDS_DEFAULT	"\0"	\
> +	"mtdparts=" CONFIG_MTDPARTS_DEFAULT	"\0"
> +#endif

Is this needed here? Doesn't it work witout this in this header?

> +/*
> + * Environment is right behind U-Boot in flash. Make sure U-Boot
> + * doesn't grow into the environment area.
> + */
> +//MCon: serve? #define CONFIG_BOARD_SIZE_LIMIT     CONFIG_ENV_OFFSET

???

Please don't add dead code.

> +
> +#define CONFIG_ENV_IS_IN_SPI_FLASH              1
> +//#define CONFIG_ENV_OFFSET               0x0FFF000
> +//#define CONFIG_ENV_SIZE                 0x0001000

Same here, please don't add dead code.

> +
> +#endif//__VOCORE2_CONFIG_H__

Hmm, I'm pretty sure, that checkpatch will complain about this missing
space here. Please run checkpatch over your patch(es) before submitting.

Thanks,
Stefan


More information about the U-Boot mailing list