[U-Boot] [PATCH v2] board: mediatek: Add pumpkin board support
Fabien Parent
fparent at baylibre.com
Fri Jun 14 12:16:28 UTC 2019
+u-boot at lists.denx.de
On Fri, Jun 14, 2019 at 2:14 PM Fabien Parent <fparent at baylibre.com> wrote:
>
> The pumpkin board is made by Gossamer Engineering and is using
> a MediaTek SoC. The board currently comes in two available version:
> MT8516 SoC and MT8167 SoC.
> The board provides the following IOs: eMMC, NAND, SD card, USB type-A,
> Ethernet, Wi-Fi, Bluetooth, Audio (jack out, 2 PDM port, 1 analog in),
> serial over USB, and an expansion header.
>
> Additionally there is a HDMI port, DSI port, and camera port only
> on the MT8167 version of the board.
>
> The board can be powered by battery and/or via a USB Type-C port and
> is using a PMIC MT6392.
>
> The eMMC and NAND are sharing pins and cannot be used together.
>
> This commit is adding the basic boot support for the Pumpkin MT8516
> board on the eMMC.
>
> Signed-off-by: Fabien Parent <fparent at baylibre.com>
> ---
>
> V2:
> * Set MTK_BROM_HEADER_INFO to 'emmc' since we only support eMMC right now.
>
> ---
> arch/arm/dts/Makefile | 3 +-
> arch/arm/dts/mt8516-pumpkin.dts | 110 +++++++++++++++++++++++++++++
> arch/arm/mach-mediatek/Kconfig | 1 +
> board/mediatek/pumpkin/Kconfig | 13 ++++
> board/mediatek/pumpkin/MAINTAINERS | 6 ++
> board/mediatek/pumpkin/Makefile | 3 +
> board/mediatek/pumpkin/pumpkin.c | 14 ++++
> configs/pumpkin_defconfig | 64 +++++++++++++++++
> include/configs/pumpkin.h | 58 +++++++++++++++
> 9 files changed, 271 insertions(+), 1 deletion(-)
> create mode 100644 arch/arm/dts/mt8516-pumpkin.dts
> create mode 100644 board/mediatek/pumpkin/Kconfig
> create mode 100644 board/mediatek/pumpkin/MAINTAINERS
> create mode 100644 board/mediatek/pumpkin/Makefile
> create mode 100644 board/mediatek/pumpkin/pumpkin.c
> create mode 100644 configs/pumpkin_defconfig
> create mode 100644 include/configs/pumpkin.h
>
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 528fb909d5..1f66172530 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -766,7 +766,8 @@ dtb-$(CONFIG_SOC_K3_AM6) += k3-am654-base-board.dtb k3-am654-r5-base-board.dtb
>
> dtb-$(CONFIG_ARCH_MEDIATEK) += \
> mt7623n-bananapi-bpi-r2.dtb \
> - mt7629-rfb.dtb
> + mt7629-rfb.dtb \
> + mt8516-pumpkin.dtb
>
> dtb-$(CONFIG_TARGET_GE_BX50V3) += imx6q-bx50v3.dtb
> dtb-$(CONFIG_TARGET_MX53PPD) += imx53-ppd.dtb
> diff --git a/arch/arm/dts/mt8516-pumpkin.dts b/arch/arm/dts/mt8516-pumpkin.dts
> new file mode 100644
> index 0000000000..cd43c1f5e3
> --- /dev/null
> +++ b/arch/arm/dts/mt8516-pumpkin.dts
> @@ -0,0 +1,110 @@
> +// SPDX-License-Identifier: GPL-2.0 OR MIT
> +/*
> + * Copyright (C) 2019 BayLibre SAS.
> + * Author: Fabien Parent <fparent at baylibre.com>
> + */
> +
> +/dts-v1/;
> +
> +#include <config.h>
> +#include "mt8516.dtsi"
> +
> +/ {
> + model = "Pumpkin MT8516";
> +
> + chosen {
> + stdout-path = &uart0;
> + };
> +
> + memory at 40000000 {
> + device_type = "memory";
> + reg = <0x40000000 0x20000000>;
> + };
> +
> + reserved-memory {
> + #address-cells = <2>;
> + #size-cells = <2>;
> +
> + /* 128 KiB reserved for ARM Trusted Firmware (BL31) */
> + bl31_secmon_reserved: secmon at 43000000 {
> + no-map;
> + reg = <0 0x43000000 0 0x20000>;
> + };
> + };
> +
> + reg_1p8v: regulator-1p8v {
> + compatible = "regulator-fixed";
> + regulator-name = "fixed-1.8V";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-boot-on;
> + regulator-always-on;
> + };
> +
> + reg_3p3v: regulator-3p3v {
> + compatible = "regulator-fixed";
> + regulator-name = "fixed-3.3V";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-boot-on;
> + regulator-always-on;
> + };
> +};
> +
> +&mmc0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&mmc0_pins_default>;
> + bus-width = <4>;
> + max-frequency = <200000000>;
> + cap-mmc-highspeed;
> + mmc-hs200-1_8v;
> + cap-mmc-hw-reset;
> + vmmc-supply = <®_3p3v>;
> + vqmmc-supply = <®_1p8v>;
> + non-removable;
> + status = "okay";
> +};
> +
> +&pinctrl {
> + mmc0_pins_default: mmc0default {
> + mux {
> + function = "msdc";
> + groups = "msdc0";
> + };
> +
> + conf-cmd-data {
> + pins = "MSDC0_CMD", "MSDC0_DAT0", "MSDC0_DAT1",
> + "MSDC0_DAT2", "MSDC0_DAT3", "MSDC0_DAT4",
> + "MSDC0_DAT5", "MSDC0_DAT6", "MSDC0_DAT7";
> + input-enable;
> + bias-pull-up;
> + };
> +
> + conf-clk {
> + pins = "MSDC0_CLK";
> + bias-pull-down;
> + };
> +
> + conf-rst {
> + pins = "MSDC0_RSTB";
> + bias-pull-up;
> + };
> + };
> +
> + uart0_pins: uart0 {
> + mux {
> + function = "uart";
> + groups = "uart0_0_rxd_txd";
> + };
> + };
> +};
> +
> +&uart0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&uart0_pins>;
> + status = "okay";
> +};
> +
> +&watchdog {
> + status = "okay";
> +};
> diff --git a/arch/arm/mach-mediatek/Kconfig b/arch/arm/mach-mediatek/Kconfig
> index b5e91d4a7d..a7d594f48a 100644
> --- a/arch/arm/mach-mediatek/Kconfig
> +++ b/arch/arm/mach-mediatek/Kconfig
> @@ -45,5 +45,6 @@ endchoice
>
> source "board/mediatek/mt7623/Kconfig"
> source "board/mediatek/mt7629/Kconfig"
> +source "board/mediatek/pumpkin/Kconfig"
>
> endif
> diff --git a/board/mediatek/pumpkin/Kconfig b/board/mediatek/pumpkin/Kconfig
> new file mode 100644
> index 0000000000..fb81fa8906
> --- /dev/null
> +++ b/board/mediatek/pumpkin/Kconfig
> @@ -0,0 +1,13 @@
> +if TARGET_MT8516
> +
> +config SYS_BOARD
> + default "pumpkin"
> +
> +config SYS_CONFIG_NAME
> + default "pumpkin"
> +
> +config MTK_BROM_HEADER_INFO
> + string
> + default "media=nor"
> +
> +endif
> diff --git a/board/mediatek/pumpkin/MAINTAINERS b/board/mediatek/pumpkin/MAINTAINERS
> new file mode 100644
> index 0000000000..16beadc027
> --- /dev/null
> +++ b/board/mediatek/pumpkin/MAINTAINERS
> @@ -0,0 +1,6 @@
> +Pumpkin
> +M: Fabien Parent <fparent at baylibre.com>
> +S: Maintained
> +F: board/mediatek/pumpkin
> +F: include/configs/pumpkin.h
> +F: configs/pumpkin_defconfig
> diff --git a/board/mediatek/pumpkin/Makefile b/board/mediatek/pumpkin/Makefile
> new file mode 100644
> index 0000000000..75fce4a393
> --- /dev/null
> +++ b/board/mediatek/pumpkin/Makefile
> @@ -0,0 +1,3 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +obj-y += pumpkin.o
> diff --git a/board/mediatek/pumpkin/pumpkin.c b/board/mediatek/pumpkin/pumpkin.c
> new file mode 100644
> index 0000000000..c20e91c9e6
> --- /dev/null
> +++ b/board/mediatek/pumpkin/pumpkin.c
> @@ -0,0 +1,14 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (C) 2019 BayLibre SAS
> + */
> +
> +#include <common.h>
> +#include <dm.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +int board_init(void)
> +{
> + return 0;
> +}
> diff --git a/configs/pumpkin_defconfig b/configs/pumpkin_defconfig
> new file mode 100644
> index 0000000000..06e2b8f5b9
> --- /dev/null
> +++ b/configs/pumpkin_defconfig
> @@ -0,0 +1,64 @@
> +CONFIG_ARM=y
> +CONFIG_POSITION_INDEPENDENT=y
> +CONFIG_ARCH_MEDIATEK=y
> +CONFIG_SYS_TEXT_BASE=0x4C000000
> +CONFIG_SYS_MALLOC_F_LEN=0x4000
> +CONFIG_TARGET_MT8516=y
> +CONFIG_NR_DRAM_BANKS=1
> +CONFIG_DEBUG_UART_BASE=0x11005000
> +CONFIG_DEBUG_UART_CLOCK=26000000
> +# CONFIG_PSCI_RESET is not set
> +CONFIG_DEBUG_UART=y
> +CONFIG_FIT=y
> +# CONFIG_FIT_ENABLE_SHA256_SUPPORT is not set
> +# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
> +CONFIG_DEFAULT_FDT_FILE="mt8516-pumpkin"
> +# CONFIG_DISPLAY_BOARDINFO is not set
> +CONFIG_HUSH_PARSER=y
> +# CONFIG_CMD_BDI is not set
> +# CONFIG_CMD_CONSOLE is not set
> +# CONFIG_CMD_BOOTD is not set
> +# CONFIG_CMD_BOOTI is not set
> +# CONFIG_CMD_ELF is not set
> +# CONFIG_CMD_GO is not set
> +# CONFIG_CMD_IMI is not set
> +# CONFIG_CMD_XIMG is not set
> +# CONFIG_CMD_EXPORTENV is not set
> +# CONFIG_CMD_IMPORTENV is not set
> +# CONFIG_CMD_EDITENV is not set
> +# CONFIG_CMD_ENV_EXISTS is not set
> +# CONFIG_CMD_CRC32 is not set
> +# CONFIG_CMD_MEMORY is not set
> +# CONFIG_CMD_FLASH is not set
> +CONFIG_CMD_GPT=y
> +# CONFIG_RANDOM_UUID is not set
> +# CONFIG_CMD_LOADB is not set
> +# CONFIG_CMD_LOADS is not set
> +CONFIG_CMD_MMC=y
> +CONFIG_CMD_PART=y
> +# CONFIG_CMD_ITEST is not set
> +# CONFIG_CMD_SOURCE is not set
> +# CONFIG_CMD_SETEXPR is not set
> +# CONFIG_CMD_BLOCK_CACHE is not set
> +# CONFIG_CMD_MISC is not set
> +CONFIG_DEFAULT_DEVICE_TREE="mt8516-pumpkin"
> +CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
> +# CONFIG_NET is not set
> +CONFIG_SPL_DM_SEQ_ALIAS=y
> +CONFIG_CLK=y
> +CONFIG_DM_GPIO=y
> +# CONFIG_INPUT is not set
> +CONFIG_DM_MMC=y
> +# CONFIG_MMC_QUIRKS is not set
> +CONFIG_MMC_MTK=y
> +CONFIG_PINCTRL=y
> +CONFIG_PINCTRL_MT8516=y
> +CONFIG_RAM=y
> +CONFIG_BAUDRATE=921600
> +CONFIG_DM_SERIAL=y
> +CONFIG_DEBUG_UART_MTK=y
> +CONFIG_DEBUG_UART_ANNOUNCE=y
> +CONFIG_MTK_SERIAL=y
> +CONFIG_WDT=y
> +CONFIG_WDT_MTK=y
> +# CONFIG_EFI_LOADER is not set
> diff --git a/include/configs/pumpkin.h b/include/configs/pumpkin.h
> new file mode 100644
> index 0000000000..b81e587983
> --- /dev/null
> +++ b/include/configs/pumpkin.h
> @@ -0,0 +1,58 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +/*
> + * Configuration for Pumpkin board
> + *
> + * Copyright (C) 2019 BayLibre, SAS
> + * Author: Fabien Parent <fparent at baylibre.com
> + */
> +
> +#ifndef __PUMPKIN_H
> +#define __PUMPKIN_H
> +
> +#include <linux/sizes.h>
> +
> +#define CONFIG_ENV_SIZE SZ_4K
> +#define CONFIG_SYS_LOAD_ADDR CONFIG_SYS_TEXT_BASE
> +#define CONFIG_SYS_MALLOC_LEN SZ_4M
> +
> +#define CONFIG_CPU_ARMV8
> +#define COUNTER_FREQUENCY 13000000
> +
> +#define CONFIG_SYS_NS16550_SERIAL
> +#define CONFIG_SYS_NS16550_REG_SIZE -4
> +#define CONFIG_SYS_NS16550_MEM32
> +#define CONFIG_SYS_NS16550_COM1 0x11005000
> +#define CONFIG_SYS_NS16550_CLK 26000000
> +
> +#define CONFIG_SYS_UBOOT_START CONFIG_SYS_TEXT_BASE
> +#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_TEXT_BASE + SZ_2M - \
> + GENERATED_GBL_DATA_SIZE)
> +
> +#define CONFIG_SYS_BOOTM_LEN SZ_64M
> +
> +/* Environment settings */
> +#include <config_distro_bootcmd.h>
> +
> +#define MMCBOOT \
> + "mmcdev=0\0" \
> + "kernel_partition=2\0" \
> + "rootfs_partition=3\0" \
> + "mmc_discover_partition=" \
> + "part start mmc ${mmcdev} ${kernel_partition} kernel_part_addr;" \
> + "part size mmc ${mmcdev} ${kernel_partition} kernel_part_size;\0" \
> + "mmcboot=" \
> + "mmc dev ${mmcdev};" \
> + "run mmc_discover_partition;" \
> + "mmc read ${kerneladdr} ${kernel_part_addr} ${kernel_part_size};" \
> + "setenv bootargs ${bootargs} root=/dev/mmcblk${mmcdev}p${rootfs_partition} rootwait; " \
> + "bootm ${kerneladdr}; \0"
> +
> +#define CONFIG_EXTRA_ENV_SETTINGS \
> + "kerneladdr=0x4A000000\0" \
> + "bootargs= " \
> + "console=tty0 console=ttyS0,921600n1 " \
> + "earlycon=uart8250,mmio32,0x11005000\0 " \
> + MMCBOOT \
> + "bootcmd=run mmcboot;\0"
> +
> +#endif
> --
> 2.20.1
>
More information about the U-Boot
mailing list