From ad295e0ee81b61b667f6e38418b02006aea7c5aa Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Mon, 13 Jul 2020 10:37:28 +0100 Subject: [PATCH] mediatek: add U-Boot build for UniElec U7623 Patches submitted upstream at https://patchwork.ozlabs.org/project/uboot/list/?series=189178 Tested on Banana Pi R2 and U7623-06. Signed-off-by: David Woodhouse --- package/boot/uboot-mediatek/Makefile | 20 +- ...ix-mmc_get_boot_dev-for-platforms-wi.patch | 51 +++ ...-Add-support-for-UniElec-U7623-board.patch | 310 ++++++++++++++++++ .../patches/010-update-u7623-defconfig.patch | 17 + 4 files changed, 391 insertions(+), 7 deletions(-) create mode 100644 package/boot/uboot-mediatek/patches/008-board-mediatek-fix-mmc_get_boot_dev-for-platforms-wi.patch create mode 100644 package/boot/uboot-mediatek/patches/009-board-mediatek-Add-support-for-UniElec-U7623-board.patch create mode 100644 package/boot/uboot-mediatek/patches/010-update-u7623-defconfig.patch diff --git a/package/boot/uboot-mediatek/Makefile b/package/boot/uboot-mediatek/Makefile index a7b47ecae5..8cb20075a3 100644 --- a/package/boot/uboot-mediatek/Makefile +++ b/package/boot/uboot-mediatek/Makefile @@ -15,18 +15,18 @@ define U-Boot/Default DEFAULT:=y endef -define U-Boot/mt7629 - NAME:=MT7629 - BUILD_SUBTARGET:=mt7629 - UBOOT_CONFIG:=mt7629_rfb -endef - define U-Boot/mt7622 NAME:=MT7622 BUILD_SUBTARGET:=mt7622 UBOOT_CONFIG:=mt7622_rfb endef +define U-Boot/mt7623a_unielec_u7623 + NAME:=UniElec U7623 (mt7623) + BUILD_SUBTARGET:=mt7623 + UBOOT_CONFIG:=mt7623a_unielec_u7623_02 +endef + define U-Boot/mt7623n_bpir2 NAME:=Banana Pi R2 (mt7623) BUILD_SUBTARGET:=mt7623 @@ -34,7 +34,13 @@ define U-Boot/mt7623n_bpir2 UBOOT_CONFIG:=mt7623n_bpir2 endef -UBOOT_TARGETS := mt7629 mt7622 mt7623n_bpir2 +define U-Boot/mt7629 + NAME:=MT7629 + BUILD_SUBTARGET:=mt7629 + UBOOT_CONFIG:=mt7629_rfb +endef + +UBOOT_TARGETS := mt7629 mt7622 mt7623n_bpir2 mt7623a_unielec_u7623 UBOOT_MAKE_FLAGS += $(UBOOT_IMAGE) diff --git a/package/boot/uboot-mediatek/patches/008-board-mediatek-fix-mmc_get_boot_dev-for-platforms-wi.patch b/package/boot/uboot-mediatek/patches/008-board-mediatek-fix-mmc_get_boot_dev-for-platforms-wi.patch new file mode 100644 index 0000000000..e32114a880 --- /dev/null +++ b/package/boot/uboot-mediatek/patches/008-board-mediatek-fix-mmc_get_boot_dev-for-platforms-wi.patch @@ -0,0 +1,51 @@ +From b0d1b85fb25a28a9532eaa9dda064b40a0e25f25 Mon Sep 17 00:00:00 2001 +From: David Woodhouse +Date: Sun, 12 Jul 2020 23:19:09 +0100 +Subject: [PATCH 1/3] board: mediatek: fix mmc_get_boot_dev() for platforms + without external SD + +On the UniElec U7623 board there is no external SD slot and the preloader +doesn't fill in the magic field at 0x81dffff0 to indicate that it was +booted from eMMC. + +Signed-off-by: David Woodhouse +--- + board/mediatek/mt7623/mt7623_rfb.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/board/mediatek/mt7623/mt7623_rfb.c b/board/mediatek/mt7623/mt7623_rfb.c +index 4ec2764976..984e75ccaf 100644 +--- a/board/mediatek/mt7623/mt7623_rfb.c ++++ b/board/mediatek/mt7623/mt7623_rfb.c +@@ -4,6 +4,7 @@ + */ + + #include ++#include + + DECLARE_GLOBAL_DATA_PTR; + +@@ -15,10 +16,15 @@ int board_init(void) + return 0; + } + ++#ifdef CONFIG_MMC + int mmc_get_boot_dev(void) + { + int g_mmc_devid = -1; + char *uflag = (char *)0x81DFFFF0; ++ ++ if (!find_mmc_device(1)) ++ return 0; ++ + if (strncmp(uflag,"eMMC",4)==0) { + g_mmc_devid = 0; + printf("Boot From Emmc(id:%d)\n\n", g_mmc_devid); +@@ -33,3 +39,4 @@ int mmc_get_env_dev(void) + { + return mmc_get_boot_dev(); + } ++#endif +-- +2.26.2 + diff --git a/package/boot/uboot-mediatek/patches/009-board-mediatek-Add-support-for-UniElec-U7623-board.patch b/package/boot/uboot-mediatek/patches/009-board-mediatek-Add-support-for-UniElec-U7623-board.patch new file mode 100644 index 0000000000..32bef358f4 --- /dev/null +++ b/package/boot/uboot-mediatek/patches/009-board-mediatek-Add-support-for-UniElec-U7623-board.patch @@ -0,0 +1,310 @@ +From d13abe5b2c5b85228bdd34584fcbd642f1883668 Mon Sep 17 00:00:00 2001 +From: David Woodhouse +Date: Sun, 12 Jul 2020 23:23:05 +0100 +Subject: [PATCH 3/3] board: mediatek: Add support for UniElec U7623 board + +This is an MT7623A-based board, very similar to the Banana Pi R2. + +http://www.unielecinc.com/q/news/cn/p/product/detail.html?qd_guid=OjXwKCaRlN + +Signed-off-by: David Woodhouse +--- + arch/arm/dts/Makefile | 1 + + .../arm/dts/mt7623a-unielec-u7623-02-emmc.dts | 211 ++++++++++++++++++ + configs/mt7623a_unielec_u7623_02_defconfig | 54 +++++ + 3 files changed, 266 insertions(+) + create mode 100644 arch/arm/dts/mt7623a-unielec-u7623-02-emmc.dts + create mode 100644 configs/mt7623a_unielec_u7623_02_defconfig + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 89fa448818..a140b1c8d4 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -938,6 +938,7 @@ dtb-$(CONFIG_SOC_K3_J721E) += k3-j721e-common-proc-board.dtb \ + + dtb-$(CONFIG_ARCH_MEDIATEK) += \ + mt7622-rfb.dtb \ ++ mt7623a-unielec-u7623-02-emmc.dtb \ + mt7623n-bananapi-bpi-r2.dtb \ + mt7629-rfb.dtb \ + mt8512-bm1-emmc.dtb \ +diff --git a/arch/arm/dts/mt7623a-unielec-u7623-02-emmc.dts b/arch/arm/dts/mt7623a-unielec-u7623-02-emmc.dts +new file mode 100644 +index 0000000000..fdeec75b05 +--- /dev/null ++++ b/arch/arm/dts/mt7623a-unielec-u7623-02-emmc.dts +@@ -0,0 +1,211 @@ ++/* ++ * Copyright (C) 2018 MediaTek Inc. ++ * Author: Ryder Lee ++ * ++ * SPDX-License-Identifier: (GPL-2.0 OR MIT) ++ */ ++ ++/dts-v1/; ++#include "mt7623.dtsi" ++#include "mt7623-u-boot.dtsi" ++ ++/ { ++ model = "UniElec U7623-02 eMMC"; ++ compatible = "unielec,u7623-02-emmc", "mediatek,mt7623"; ++ ++ memory@80000000 { ++ device_type = "memory"; ++ reg = <0 0x80000000 0 0x20000000>; ++ }; ++ ++ chosen { ++ stdout-path = &uart2; ++ tick-timer = &timer0; ++ }; ++ ++ 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; ++ }; ++ ++ reg_5v: regulator-5v { ++ compatible = "regulator-fixed"; ++ regulator-name = "fixed-5V"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ led3 { ++ label = "u7623-01:green:led3"; ++ gpios = <&gpio 14 GPIO_ACTIVE_LOW>; ++ default-state = "off"; ++ }; ++ ++ led4 { ++ label = "u7623-01:green:led4"; ++ gpios = <&gpio 15 GPIO_ACTIVE_LOW>; ++ default-state = "off"; ++ }; ++ }; ++}; ++ ++ð { ++ status = "okay"; ++ mediatek,gmac-id = <0>; ++ phy-mode = "rgmii"; ++ mediatek,switch = "mt7530"; ++ mediatek,mcm; ++ ++ fixed-link { ++ speed = <1000>; ++ full-duplex; ++ }; ++}; ++ ++&mmc0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc0_pins_default>; ++ status = "okay"; ++ bus-width = <8>; ++ max-frequency = <50000000>; ++ cap-mmc-highspeed; ++ vmmc-supply = <®_3p3v>; ++ vqmmc-supply = <®_1p8v>; ++ non-removable; ++}; ++ ++&pinctrl { ++ ephy_default: ephy_default { ++ mux { ++ function = "eth"; ++ groups = "mdc_mdio", "ephy"; ++ }; ++ ++ conf { ++ pins = "G2_TXEN", "G2_TXD0", "G2_TXD1", "G2_TXD2", ++ "G2_TXD3", "G2_TXC", "G2_RXC", "G2_RXD0", ++ "G2_RXD1", "G2_RXD2", "G2_RXD3", "G2_RXDV", ++ "MDC", "MDIO"; ++ drive-strength = <12>; ++ mediatek,tdsel = <5>; ++ }; ++ }; ++ ++ 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; ++ }; ++ }; ++ ++ pcie_default: pcie-default { ++ mux { ++ function = "pcie"; ++ groups = "pcie0_0_perst", "pcie1_0_perst"; ++ }; ++ }; ++ ++ uart0_pins_a: uart0-default { ++ mux { ++ function = "uart"; ++ groups = "uart0_0_txd_rxd"; ++ }; ++ }; ++ ++ uart1_pins_a: uart1-default { ++ mux { ++ function = "uart"; ++ groups = "uart1_0_txd_rxd"; ++ }; ++ }; ++ ++ uart2_pins_a: uart2-default { ++ mux { ++ function = "uart"; ++ groups = "uart2_0_txd_rxd"; ++ }; ++ }; ++ ++ uart2_pins_b: uart2-alt { ++ mux { ++ function = "uart"; ++ groups = "uart2_1_txd_rxd"; ++ }; ++ }; ++}; ++ ++&pcie { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pcie_default>; ++ status = "okay"; ++ ++ pcie@0,0 { ++ status = "okay"; ++ }; ++ ++ pcie@1,0 { ++ status = "okay"; ++ }; ++}; ++ ++&pcie0_phy { ++ status = "okay"; ++}; ++ ++&pcie1_phy { ++ status = "okay"; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_pins_a>; ++ status = "okay"; ++}; ++ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins_a>; ++ status = "okay"; ++}; ++ ++&uart2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart2_pins_b>; ++ status = "okay"; ++}; +diff --git a/configs/mt7623a_unielec_u7623_02_defconfig b/configs/mt7623a_unielec_u7623_02_defconfig +new file mode 100644 +index 0000000000..72b5f31092 +--- /dev/null ++++ b/configs/mt7623a_unielec_u7623_02_defconfig +@@ -0,0 +1,54 @@ ++CONFIG_ARM=y ++CONFIG_SYS_THUMB_BUILD=y ++CONFIG_ARCH_MEDIATEK=y ++CONFIG_SYS_TEXT_BASE=0x81e00000 ++CONFIG_SYS_MALLOC_F_LEN=0x4000 ++CONFIG_ENV_SIZE=0x1000 ++CONFIG_ENV_OFFSET=0x100000 ++CONFIG_TARGET_MT7623=y ++CONFIG_NR_DRAM_BANKS=1 ++CONFIG_DISTRO_DEFAULTS=y ++CONFIG_FIT=y ++CONFIG_FIT_VERBOSE=y ++CONFIG_BOOTDELAY=3 ++CONFIG_SYS_CONSOLE_IS_IN_ENV=y ++CONFIG_DEFAULT_FDT_FILE="mt7623a-unielec-u7623-02-emmc.dtb" ++# CONFIG_DISPLAY_BOARDINFO is not set ++CONFIG_SYS_PROMPT="U-Boot> " ++CONFIG_CMD_BOOTMENU=y ++# CONFIG_CMD_ELF is not set ++# CONFIG_CMD_XIMG is not set ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_READ=y ++# CONFIG_CMD_SETEXPR is not set ++# CONFIG_CMD_NFS is not set ++CONFIG_DEFAULT_DEVICE_TREE="mt7623a-unielec-u7623-02-emmc" ++CONFIG_ENV_IS_IN_MMC=y ++CONFIG_SYS_RELOC_GD_ENV_ADDR=y ++CONFIG_NET_RANDOM_ETHADDR=y ++CONFIG_REGMAP=y ++CONFIG_SYSCON=y ++CONFIG_CLK=y ++CONFIG_DM_MMC=y ++# CONFIG_MMC_QUIRKS is not set ++CONFIG_SUPPORT_EMMC_BOOT=y ++CONFIG_MMC_HS400_SUPPORT=y ++CONFIG_MMC_MTK=y ++CONFIG_PHY_FIXED=y ++CONFIG_DM_ETH=y ++CONFIG_MEDIATEK_ETH=y ++CONFIG_PINCTRL=y ++CONFIG_PINCONF=y ++CONFIG_PINCTRL_MT7623=y ++CONFIG_POWER_DOMAIN=y ++CONFIG_MTK_POWER_DOMAIN=y ++CONFIG_DM_SERIAL=y ++CONFIG_MTK_SERIAL=y ++CONFIG_SYSRESET=y ++CONFIG_SYSRESET_WATCHDOG=y ++CONFIG_TIMER=y ++CONFIG_MTK_TIMER=y ++CONFIG_WDT_MTK=y ++CONFIG_LZMA=y +-- +2.26.2 + diff --git a/package/boot/uboot-mediatek/patches/010-update-u7623-defconfig.patch b/package/boot/uboot-mediatek/patches/010-update-u7623-defconfig.patch new file mode 100644 index 0000000000..ec189f82dc --- /dev/null +++ b/package/boot/uboot-mediatek/patches/010-update-u7623-defconfig.patch @@ -0,0 +1,17 @@ +diff --git a/configs/mt7623n_bpir2_defconfig b/configs/mt7623n_bpir2_defconfig +index 6b9fbd7e22..fb2a004803 100644 +--- a/configs/mt7623a_unielec_u7623_02_defconfig ++++ b/configs/mt7623a_unielec_u7623_02_defconfig +@@ -52,3 +52,12 @@ CONFIG_TIMER=y + CONFIG_MTK_TIMER=y + CONFIG_WDT_MTK=y + CONFIG_LZMA=y ++CONFIG_CMD_BOOTZ=y ++CONFIG_OF_LIBFDT_OVERLAY=y ++#enables savenenv-command ++CONFIG_ENV_IS_IN_FAT=y ++CONFIG_ENV_FAT_INTERFACE="mmc" ++CONFIG_ENV_FAT_DEVICE_AND_PART="0:2" ++CONFIG_ENV_FAT_FILE="uboot.env" ++CONFIG_CMD_ASKENV=y ++CONFIG_CMD_SETEXPR=y