Hi Loic, Thanks for pushing this !
On 03/10/2018 12:02, Loic Devulder wrote: > This adds platform code for the Khadas VIM2 board based on a > Meson GXM (S912) SoC with the Meson GXM configuration. > > This initial submission supports UART, MMC/SDCard and Ethernet. > USB is partially supported. > > All the code is from Neil Armstrong! I just rebased the code, do > some cleanup and tested on my board. > > Signed-off-by: Neil Armstrong <narmstr...@baylibre.com> > Signed-off-by: Loic Devulder <ldevul...@suse.de> Acked-by: Neil Armstrong <narmstr...@baylibre.com> Neil > --- > arch/arm/mach-meson/Kconfig | 23 +++++++ > board/amlogic/khadas-vim2/Kconfig | 12 ++++ > board/amlogic/khadas-vim2/MAINTAINERS | 6 ++ > board/amlogic/khadas-vim2/Makefile | 6 ++ > board/amlogic/khadas-vim2/README | 103 > ++++++++++++++++++++++++++++++++ > board/amlogic/khadas-vim2/khadas-vim2.c | 62 +++++++++++++++++++ > configs/khadas-vim2_defconfig | 51 ++++++++++++++++ > include/configs/khadas-vim2.h | 18 ++++++ > 8 files changed, 281 insertions(+) > create mode 100644 board/amlogic/khadas-vim2/Kconfig > create mode 100644 board/amlogic/khadas-vim2/MAINTAINERS > create mode 100644 board/amlogic/khadas-vim2/Makefile > create mode 100644 board/amlogic/khadas-vim2/README > create mode 100644 board/amlogic/khadas-vim2/khadas-vim2.c > create mode 100644 configs/khadas-vim2_defconfig > create mode 100644 include/configs/khadas-vim2.h > > diff --git a/arch/arm/mach-meson/Kconfig b/arch/arm/mach-meson/Kconfig > index ee8b1cdcf6..cc943443b3 100644 > --- a/arch/arm/mach-meson/Kconfig > +++ b/arch/arm/mach-meson/Kconfig > @@ -22,6 +22,16 @@ config MESON_GXL > The Amlogic Meson GXL (S905X and S905D) is an ARM SoC with a > quad-core Cortex-A53 CPU and a Mali-450 GPU. > > +config MESON_GXM > + bool "Support Meson GXM" > + select ARM64 > + select CLK > + select DM > + select DM_SERIAL > + help > + The Amlogic Meson GXM (S912) is an ARM SoC with an > + octo-core Cortex-A53 CPU and a Mali-T860 GPU. > + > if MESON_GXBB > > config TARGET_ODROID_C2 > @@ -64,6 +74,17 @@ config TARGET_KHADAS_VIM > > endif > > +if MESON_GXM > + > +config TARGET_KHADAS_VIM2 > + bool "KHADAS-VIM2" > + help > + Khadas VIM2 is a single board computer based on Meson GXM > + with 2/3 GiB of RAM, Ethernet, HDMI, 4 USB, micro-SD slot, > + eMMC, IR receiver and a 40-pin GPIO header. > + > +endif > + > config SYS_SOC > default "meson" > > @@ -80,4 +101,6 @@ source "board/amlogic/libretech-cc/Kconfig" > > source "board/amlogic/khadas-vim/Kconfig" > > +source "board/amlogic/khadas-vim2/Kconfig" > + > endif > diff --git a/board/amlogic/khadas-vim2/Kconfig > b/board/amlogic/khadas-vim2/Kconfig > new file mode 100644 > index 0000000000..d0af36264d > --- /dev/null > +++ b/board/amlogic/khadas-vim2/Kconfig > @@ -0,0 +1,12 @@ > +if TARGET_KHADAS_VIM2 > + > +config SYS_BOARD > + default "khadas-vim2" > + > +config SYS_VENDOR > + default "amlogic" > + > +config SYS_CONFIG_NAME > + default "khadas-vim2" > + > +endif > diff --git a/board/amlogic/khadas-vim2/MAINTAINERS > b/board/amlogic/khadas-vim2/MAINTAINERS > new file mode 100644 > index 0000000000..ca63e311c6 > --- /dev/null > +++ b/board/amlogic/khadas-vim2/MAINTAINERS > @@ -0,0 +1,6 @@ > +KHADAS-VIM2 > +M: Neil Armstrong <narmstr...@baylibre.com> > +S: Maintained > +F: board/amlogic/khadas-vim2/ > +F: include/configs/khadas-vim2.h > +F: configs/khadas-vim2_defconfig > diff --git a/board/amlogic/khadas-vim2/Makefile > b/board/amlogic/khadas-vim2/Makefile > new file mode 100644 > index 0000000000..4e7c9a0592 > --- /dev/null > +++ b/board/amlogic/khadas-vim2/Makefile > @@ -0,0 +1,6 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# (C) Copyright 2016 BayLibre, SAS > +# Author: Neil Armstrong <narmstr...@baylibre.com> > + > +obj-y := khadas-vim2.o > diff --git a/board/amlogic/khadas-vim2/README > b/board/amlogic/khadas-vim2/README > new file mode 100644 > index 0000000000..578693fd2d > --- /dev/null > +++ b/board/amlogic/khadas-vim2/README > @@ -0,0 +1,103 @@ > +U-Boot for Khadas VIM2 > +======================= > + > +Khadas VIM2 is an Open Source DIY Box manufactured by Shenzhen Wesion > +Technology Co., Ltd with the following specifications: > + > + - Amlogic S912 ARM Cortex-A53 octo-core SoC @ 1.5GHz > + - ARM Mali T860 GPU > + - 2/3GB DDR4 SDRAM > + - 10/100/1000 Ethernet > + - HDMI 2.0 4K/60Hz display > + - 40-pin GPIO header > + - 2 x USB 2.0 Host, 1 x USB 2.0 Type-C OTG > + - 16GB/32GB/64GB eMMC > + - 2MB SPI Flash > + - microSD > + - SDIO Wifi Module, Bluetooth > + - Two channels IR receiver > + > +Currently the u-boot port supports the following devices: > + - serial > + - eMMC, microSD > + - Ethernet > + - I2C > + - Regulators > + - Reset controller > + - Clock controller > + - USB Host > + - ADC > + > +U-Boot compilation > +================== > + > + > export ARCH=arm > + > export CROSS_COMPILE=aarch64-none-elf- > + > make khadas-vim2_defconfig > + > make > + > +Image creation > +============== > + > +Amlogic doesn't provide sources for the firmware and for tools needed > +to create the bootloader image, so it is necessary to obtain them from > +the git tree published by the board vendor: > + > + > wget > https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz > + > wget > https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-arm-none-eabi-4.8-2013.11_linux.tar.xz > + > tar xvfJ gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz > + > tar xvfJ gcc-linaro-arm-none-eabi-4.8-2013.11_linux.tar.xz > + > export > PATH=$PWD/gcc-linaro-aarch64-none-elf-4.8-2013.11_linux/bin:$PWD/gcc-linaro-arm-none-eabi-4.8-2013.11_linux/bin:$PATH > + > git clone https://github.com/khadas/u-boot -b Vim vim-u-boot > + > cd vim-u-boot > + > make kvim_defconfig > + > make > + > export FIPDIR=$PWD/fip > + > +Go back to mainline U-Boot source tree then : > + > mkdir fip > + > + > cp $FIPDIR/gxl/bl2.bin fip/ > + > cp $FIPDIR/gxl/acs.bin fip/ > + > cp $FIPDIR/gxl/bl21.bin fip/ > + > cp $FIPDIR/gxl/bl30.bin fip/ > + > cp $FIPDIR/gxl/bl301.bin fip/ > + > cp $FIPDIR/gxl/bl31.img fip/ > + > cp u-boot.bin fip/bl33.bin > + > + > $FIPDIR/blx_fix.sh \ > + fip/bl30.bin \ > + fip/zero_tmp \ > + fip/bl30_zero.bin \ > + fip/bl301.bin \ > + fip/bl301_zero.bin \ > + fip/bl30_new.bin \ > + bl30 > + > + > python $FIPDIR/acs_tool.pyc fip/bl2.bin fip/bl2_acs.bin fip/acs.bin 0 > + > + > $FIPDIR/blx_fix.sh \ > + fip/bl2_acs.bin \ > + fip/zero_tmp \ > + fip/bl2_zero.bin \ > + fip/bl21.bin \ > + fip/bl21_zero.bin \ > + fip/bl2_new.bin \ > + bl2 > + > + > $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl30_new.bin > + > $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl31.img > + > $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl33.bin > + > $FIPDIR/gxl/aml_encrypt_gxl --bl2sig --input fip/bl2_new.bin --output > fip/bl2.n.bin.sig > + > $FIPDIR/gxl/aml_encrypt_gxl --bootmk \ > + --output fip/u-boot.bin \ > + --bl2 fip/bl2.n.bin.sig \ > + --bl30 fip/bl30_new.bin.enc \ > + --bl31 fip/bl31.img.enc \ > + --bl33 fip/bl33.bin.enc > + > +and then write the image to SD with: > + > + > DEV=/dev/your_sd_device > + > dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=512 skip=1 > seek=1 > + > dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=1 count=444 > diff --git a/board/amlogic/khadas-vim2/khadas-vim2.c > b/board/amlogic/khadas-vim2/khadas-vim2.c > new file mode 100644 > index 0000000000..ff56569f17 > --- /dev/null > +++ b/board/amlogic/khadas-vim2/khadas-vim2.c > @@ -0,0 +1,62 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Copyright (C) 2016 BayLibre, SAS > + * Author: Neil Armstrong <narmstr...@baylibre.com> > + */ > + > +#include <common.h> > +#include <dm.h> > +#include <environment.h> > +#include <asm/io.h> > +#include <asm/arch/gx.h> > +#include <asm/arch/mem.h> > +#include <asm/arch/sm.h> > +#include <asm/arch/eth.h> > + > +#define EFUSE_SN_OFFSET 20 > +#define EFUSE_SN_SIZE 16 > +#define EFUSE_MAC_OFFSET 52 > +#define EFUSE_MAC_SIZE 6 > + > +int board_init(void) > +{ > + return 0; > +} > + > +int misc_init_r(void) > +{ > + u8 mac_addr[EFUSE_MAC_SIZE]; > + char serial[EFUSE_SN_SIZE]; > + ssize_t len; > + > + meson_gx_eth_init(PHY_INTERFACE_MODE_RGMII, 0); > + > + /* Reset PHY on GPIOZ_14 */ > + clrbits_le32(GX_GPIO_EN(3), BIT(14)); > + clrbits_le32(GX_GPIO_OUT(3), BIT(14)); > + mdelay(10); > + setbits_le32(GX_GPIO_OUT(3), BIT(14)); > + > + if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { > + len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, > + mac_addr, EFUSE_MAC_SIZE); > + if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr)) > + eth_env_set_enetaddr("ethaddr", mac_addr); > + } > + > + if (!env_get("serial#")) { > + len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, > + EFUSE_SN_SIZE); > + if (len == EFUSE_SN_SIZE) > + env_set("serial#", serial); > + } > + > + return 0; > +} > + > +int ft_board_setup(void *blob, bd_t *bd) > +{ > + meson_gx_init_reserved_memory(blob); > + > + return 0; > +} > diff --git a/configs/khadas-vim2_defconfig b/configs/khadas-vim2_defconfig > new file mode 100644 > index 0000000000..f21e3a8ddf > --- /dev/null > +++ b/configs/khadas-vim2_defconfig > @@ -0,0 +1,51 @@ > +CONFIG_ARM=y > +CONFIG_ARCH_MESON=y > +CONFIG_SYS_TEXT_BASE=0x01000000 > +CONFIG_MESON_GXM=y > +CONFIG_TARGET_KHADAS_VIM2=y > +CONFIG_DEBUG_UART_BASE=0xc81004c0 > +CONFIG_DEBUG_UART_CLOCK=24000000 > +CONFIG_IDENT_STRING=" khadas-vim2" > +CONFIG_DEFAULT_DEVICE_TREE="meson-gxm-khadas-vim2" > +CONFIG_DEBUG_UART=y > +CONFIG_OF_BOARD_SETUP=y > +# CONFIG_DISPLAY_CPUINFO is not set > +# CONFIG_DISPLAY_BOARDINFO is not set > +# CONFIG_CMD_BDI is not set > +# CONFIG_CMD_IMI is not set > +CONFIG_CMD_ADC=y > +CONFIG_CMD_GPIO=y > +# CONFIG_CMD_LOADS is not set > +CONFIG_CMD_MMC=y > +CONFIG_CMD_USB=y > +# CONFIG_CMD_SETEXPR is not set > +CONFIG_CMD_REGULATOR=y > +CONFIG_ADC=y > +CONFIG_SARADC_MESON=y > +CONFIG_OF_CONTROL=y > +CONFIG_NET_RANDOM_ETHADDR=y > +CONFIG_DM_GPIO=y > +CONFIG_DM_REGULATOR=y > +CONFIG_DM_REGULATOR_FIXED=y > +CONFIG_DM_RESET=y > +CONFIG_DM_MMC=y > +CONFIG_MMC_MESON_GX=y > +CONFIG_DM_ETH=y > +CONFIG_ETH_DESIGNWARE=y > +CONFIG_PINCTRL=y > +CONFIG_PINCTRL_MESON_GXL=y > +CONFIG_DEBUG_UART_MESON=y > +CONFIG_DEBUG_UART_ANNOUNCE=y > +CONFIG_DEBUG_UART_SKIP_INIT=y > +CONFIG_MESON_SERIAL=y > +CONFIG_OF_LIBFDT_OVERLAY=y > +CONFIG_USB=y > +CONFIG_DM_USB=y > +CONFIG_USB_XHCI_HCD=y > +CONFIG_USB_XHCI_DWC3=y > +CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y > +CONFIG_USB_DWC3=y > +CONFIG_USB_STORAGE=y > +CONFIG_PHY=y > +CONFIG_MESON_GXL_USB_PHY=y > +CONFIG_MTD=y > diff --git a/include/configs/khadas-vim2.h b/include/configs/khadas-vim2.h > new file mode 100644 > index 0000000000..7ef8f42bd2 > --- /dev/null > +++ b/include/configs/khadas-vim2.h > @@ -0,0 +1,18 @@ > +/* SPDX-License-Identifier: GPL-2.0+ */ > +/* > + * Configuration for Khadas VIM2 > + * > + * Copyright (C) 2017 Baylibre, SAS > + * Author: Neil Armstrong <narmstr...@baylibre.com> > + */ > + > +#ifndef __CONFIG_H > +#define __CONFIG_H > + > +#define CONFIG_MISC_INIT_R > + > +#define MESON_FDTFILE_SETTING "fdtfile=amlogic/meson-gxm-khadas-vim2.dtb\0" > + > +#include <configs/meson-gx-common.h> > + > +#endif /* __CONFIG_H */ > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot