*/
/dts-v1/;
-#include "mt7623a-unielec-u7623-02-emmc.dtsi"
+#include "mt7623a-unielec-u7623-02.dtsi"
/ {
- model = "UniElec U7623-02 eMMC (512M RAM)";
- compatible = "unielec,u7623-02-emmc-512m", "unielec,u7623-02-emmc", "mediatek,mt7623";
+ model = "UniElec U7623-02 eMMC (legacy loader, 512M RAM)";
+ compatible = "unielec,u7623-02-emmc-512m", "unielec,u7623-02", "mediatek,mt7623";
+
+ chosen {
+ bootargs = "root=/dev/mmcblk0p2 rootfstype=squashfs,f2fs console=ttyS0,115200 blkdevparts=mmcblk0:3M@6M(recovery),256M@9M(root)";
+ };
memory@80000000 {
device_type = "memory";
+++ /dev/null
-// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
-/*
- * Copyright 2018 Kristian Evensen <kristian.evensen@gmail.com>
- */
-
-#include <dt-bindings/input/input.h>
-#include "mt7623.dtsi"
-#include "mt6323.dtsi"
-
-/ {
- compatible = "unielec,u7623-02-emmc", "mediatek,mt7623";
-
- aliases {
- serial0 = &uart2;
- ethernet0 = &gmac0;
- mmc0 = &mmc0;
- led-boot = &led3_green;
- led-failsafe = &led3_green;
- led-running = &led3_green;
- led-upgrade = &led3_green;
- };
-
- chosen {
- bootargs = "root=/dev/mmcblk0p2 rootfstype=squashfs,f2fs console=ttyS0,115200 blkdevparts=mmcblk0:3M@6M(recovery),256M@9M(root)";
- stdout-path = "serial2:115200n8";
- };
-
- cpus {
- cpu@0 {
- proc-supply = <&mt6323_vproc_reg>;
- };
-
- cpu@1 {
- proc-supply = <&mt6323_vproc_reg>;
- };
-
- cpu@2 {
- proc-supply = <&mt6323_vproc_reg>;
- };
-
- cpu@3 {
- proc-supply = <&mt6323_vproc_reg>;
- };
- };
-
- 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;
- };
-
- gpio-keys {
- compatible = "gpio-keys";
- pinctrl-names = "default";
- pinctrl-0 = <&key_pins_a>;
-
- factory {
- label = "factory";
- linux,code = <KEY_RESTART>;
- gpios = <&pio 256 GPIO_ACTIVE_LOW>;
- };
- };
-
- leds {
- compatible = "gpio-leds";
- pinctrl-names = "default";
- pinctrl-0 = <&led_pins_unielec>;
-
- led3_green: led3 {
- label = "u7623-01:green:led3";
- gpios = <&pio 14 GPIO_ACTIVE_LOW>;
- };
-
- led4 {
- label = "u7623-01:green:led4";
- gpios = <&pio 15 GPIO_ACTIVE_LOW>;
- };
- };
-};
-
-&crypto {
- status = "okay";
-};
-
-ð {
- status = "okay";
-
- gmac0: mac@0 {
- compatible = "mediatek,eth-mac";
- reg = <0>;
- phy-mode = "trgmii";
-
- fixed-link {
- speed = <1000>;
- full-duplex;
- pause;
- };
- };
-
- mdio: mdio-bus {
- #address-cells = <1>;
- #size-cells = <0>;
-
- mt7530: switch@0 {
- compatible = "mediatek,mt7530";
- };
- };
-};
-
-&mt7530 {
- compatible = "mediatek,mt7530";
- #address-cells = <1>;
- #size-cells = <0>;
- reg = <0>;
- pinctrl-names = "default";
- mediatek,mcm;
- resets = <ðsys 2>;
- reset-names = "mcm";
- core-supply = <&mt6323_vpa_reg>;
- io-supply = <&mt6323_vemc3v3_reg>;
-
- dsa,mii-bus = <&mdio>;
-
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
- reg = <0>;
-
- port@0 {
- reg = <0>;
- label = "lan0";
- cpu = <&cpu_port0>;
- };
-
- port@1 {
- reg = <1>;
- label = "lan1";
- cpu = <&cpu_port0>;
- };
-
- port@2 {
- reg = <2>;
- label = "lan2";
- cpu = <&cpu_port0>;
- };
-
- port@3 {
- reg = <3>;
- label = "lan3";
- cpu = <&cpu_port0>;
- };
-
- port@4 {
- reg = <4>;
- label = "wan";
- cpu = <&cpu_port0>;
- };
-
- cpu_port0: port@6 {
- reg = <6>;
- label = "cpu";
- ethernet = <&gmac0>;
- phy-mode = "trgmii";
-
- fixed-link {
- speed = <1000>;
- full-duplex;
- };
- };
- };
-};
-
-&mmc0 {
- pinctrl-names = "default", "state_uhs";
- pinctrl-0 = <&mmc0_pins_default>;
- pinctrl-1 = <&mmc0_pins_uhs>;
- status = "okay";
- bus-width = <8>;
- max-frequency = <50000000>;
- cap-mmc-highspeed;
- vmmc-supply = <®_3p3v>;
- vqmmc-supply = <®_1p8v>;
- non-removable;
-};
-
-&pio {
- key_pins_a: keys-alt {
- pins-keys {
- pinmux = <MT7623_PIN_256_GPIO256_FUNC_GPIO256>,
- <MT7623_PIN_257_GPIO257_FUNC_GPIO257>;
- input-enable;
- };
- };
-
- led_pins_unielec: leds-unielec {
- pins-leds {
- pinmux = <MT7623_PIN_14_GPIO14_FUNC_GPIO14>,
- <MT7623_PIN_15_GPIO15_FUNC_GPIO15>;
- };
- };
-
- mmc0_pins_default: mmc0default {
- pins_cmd_dat {
- pinmux = <MT7623_PIN_111_MSDC0_DAT7_FUNC_MSDC0_DAT7>,
- <MT7623_PIN_112_MSDC0_DAT6_FUNC_MSDC0_DAT6>,
- <MT7623_PIN_113_MSDC0_DAT5_FUNC_MSDC0_DAT5>,
- <MT7623_PIN_114_MSDC0_DAT4_FUNC_MSDC0_DAT4>,
- <MT7623_PIN_118_MSDC0_DAT3_FUNC_MSDC0_DAT3>,
- <MT7623_PIN_119_MSDC0_DAT2_FUNC_MSDC0_DAT2>,
- <MT7623_PIN_120_MSDC0_DAT1_FUNC_MSDC0_DAT1>,
- <MT7623_PIN_121_MSDC0_DAT0_FUNC_MSDC0_DAT0>,
- <MT7623_PIN_116_MSDC0_CMD_FUNC_MSDC0_CMD>;
- input-enable;
- bias-pull-up;
- };
-
- pins_clk {
- pinmux = <MT7623_PIN_117_MSDC0_CLK_FUNC_MSDC0_CLK>;
- bias-pull-down;
- };
-
- pins_rst {
- pinmux = <MT7623_PIN_115_MSDC0_RSTB_FUNC_MSDC0_RSTB>;
- bias-pull-up;
- };
- };
-
- mmc0_pins_uhs: mmc0 {
- pins_cmd_dat {
- pinmux = <MT7623_PIN_111_MSDC0_DAT7_FUNC_MSDC0_DAT7>,
- <MT7623_PIN_112_MSDC0_DAT6_FUNC_MSDC0_DAT6>,
- <MT7623_PIN_113_MSDC0_DAT5_FUNC_MSDC0_DAT5>,
- <MT7623_PIN_114_MSDC0_DAT4_FUNC_MSDC0_DAT4>,
- <MT7623_PIN_118_MSDC0_DAT3_FUNC_MSDC0_DAT3>,
- <MT7623_PIN_119_MSDC0_DAT2_FUNC_MSDC0_DAT2>,
- <MT7623_PIN_120_MSDC0_DAT1_FUNC_MSDC0_DAT1>,
- <MT7623_PIN_121_MSDC0_DAT0_FUNC_MSDC0_DAT0>,
- <MT7623_PIN_116_MSDC0_CMD_FUNC_MSDC0_CMD>;
- input-enable;
- drive-strength = <MTK_DRIVE_2mA>;
- bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
- };
-
- pins_clk {
- pinmux = <MT7623_PIN_117_MSDC0_CLK_FUNC_MSDC0_CLK>;
- drive-strength = <MTK_DRIVE_2mA>;
- bias-pull-down = <MTK_PUPD_SET_R1R0_01>;
- };
-
- pins_rst {
- pinmux = <MT7623_PIN_115_MSDC0_RSTB_FUNC_MSDC0_RSTB>;
- bias-pull-up;
- };
- };
-
- pcie_default: pcie_pin_default {
- pins_cmd_dat {
- pinmux = <MT7623_PIN_208_AUD_EXT_CK1_FUNC_PCIE0_PERST_N>,
- <MT7623_PIN_209_AUD_EXT_CK2_FUNC_PCIE1_PERST_N>;
- bias-disable;
- };
- };
-};
-
-&pwm {
- pinctrl-names = "default";
- pinctrl-0 = <&pwm_pins_a>;
- status = "okay";
-};
-
-&pwrap {
- mt6323 {
- mt6323led: led {
- compatible = "mediatek,mt6323-led";
- #address-cells = <1>;
- #size-cells = <0>;
-
- led@0 {
- reg = <0>;
- label = "led0";
- };
- };
- };
-};
-
-&mt6323keys {
- mediatek,long-press-mode = <0>;
-};
-
-&uart2 {
- pinctrl-names = "default";
- pinctrl-0 = <&uart2_pins_b>;
- status = "okay";
-};
-
-&usb1 {
- vusb33-supply = <®_3p3v>;
- vbus-supply = <®_3p3v>;
- status = "okay";
-};
-
-&u3phy1 {
- status = "okay";
-};
-
-&u3phy2 {
- status = "okay";
- mediatek,phy-switch = <&hifsys>;
-};
-
-&pcie {
- pinctrl-names = "default";
- pinctrl-0 = <&pcie_default>;
- status = "okay";
-
- pcie@0,0 {
- status = "okay";
- };
-
- pcie@1,0 {
- status = "okay";
- };
-
- pcie@2,0 {
- status = "okay";
- };
-};
-
-&pcie0_phy {
- status = "okay";
-};
-
-&pcie1_phy {
- status = "okay";
-};
-
--- /dev/null
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright 2018 Kristian Evensen <kristian.evensen@gmail.com>
+ */
+
+/dts-v1/;
+#include "mt7623a-unielec-u7623-02.dtsi"
+
+/ {
+ model = "UniElec U7623-02 eMMC";
+ compatible = "unielec,u7623-02", "mediatek,mt7623";
+};
--- /dev/null
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright 2018 Kristian Evensen <kristian.evensen@gmail.com>
+ */
+
+#include <dt-bindings/input/input.h>
+#include "mt7623.dtsi"
+#include "mt6323.dtsi"
+
+/ {
+ compatible = "unielec,u7623-02", "mediatek,mt7623";
+
+ aliases {
+ serial0 = &uart2;
+ ethernet0 = &gmac0;
+ mmc0 = &mmc0;
+ led-boot = &led3_green;
+ led-failsafe = &led3_green;
+ led-running = &led3_green;
+ led-upgrade = &led3_green;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ cpus {
+ cpu@0 {
+ proc-supply = <&mt6323_vproc_reg>;
+ };
+
+ cpu@1 {
+ proc-supply = <&mt6323_vproc_reg>;
+ };
+
+ cpu@2 {
+ proc-supply = <&mt6323_vproc_reg>;
+ };
+
+ cpu@3 {
+ proc-supply = <&mt6323_vproc_reg>;
+ };
+ };
+
+ 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;
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+ pinctrl-names = "default";
+ pinctrl-0 = <&key_pins_a>;
+
+ factory {
+ label = "factory";
+ linux,code = <KEY_RESTART>;
+ gpios = <&pio 256 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+ pinctrl-names = "default";
+ pinctrl-0 = <&led_pins_unielec>;
+
+ led3_green: led3 {
+ label = "u7623-01:green:led3";
+ gpios = <&pio 14 GPIO_ACTIVE_LOW>;
+ };
+
+ led4 {
+ label = "u7623-01:green:led4";
+ gpios = <&pio 15 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&crypto {
+ status = "okay";
+};
+
+ð {
+ status = "okay";
+
+ gmac0: mac@0 {
+ compatible = "mediatek,eth-mac";
+ reg = <0>;
+ phy-mode = "trgmii";
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ pause;
+ };
+ };
+
+ mdio: mdio-bus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ mt7530: switch@0 {
+ compatible = "mediatek,mt7530";
+ };
+ };
+};
+
+&mt7530 {
+ compatible = "mediatek,mt7530";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+ pinctrl-names = "default";
+ mediatek,mcm;
+ resets = <ðsys 2>;
+ reset-names = "mcm";
+ core-supply = <&mt6323_vpa_reg>;
+ io-supply = <&mt6323_vemc3v3_reg>;
+
+ dsa,mii-bus = <&mdio>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+
+ port@0 {
+ reg = <0>;
+ label = "lan0";
+ cpu = <&cpu_port0>;
+ };
+
+ port@1 {
+ reg = <1>;
+ label = "lan1";
+ cpu = <&cpu_port0>;
+ };
+
+ port@2 {
+ reg = <2>;
+ label = "lan2";
+ cpu = <&cpu_port0>;
+ };
+
+ port@3 {
+ reg = <3>;
+ label = "lan3";
+ cpu = <&cpu_port0>;
+ };
+
+ port@4 {
+ reg = <4>;
+ label = "wan";
+ cpu = <&cpu_port0>;
+ };
+
+ cpu_port0: port@6 {
+ reg = <6>;
+ label = "cpu";
+ ethernet = <&gmac0>;
+ phy-mode = "trgmii";
+
+ fixed-link {
+ speed = <1000>;
+ full-duplex;
+ };
+ };
+ };
+};
+
+&mmc0 {
+ pinctrl-names = "default", "state_uhs";
+ pinctrl-0 = <&mmc0_pins_default>;
+ pinctrl-1 = <&mmc0_pins_uhs>;
+ status = "okay";
+ bus-width = <8>;
+ max-frequency = <50000000>;
+ cap-mmc-highspeed;
+ vmmc-supply = <®_3p3v>;
+ vqmmc-supply = <®_1p8v>;
+ non-removable;
+};
+
+&pio {
+ key_pins_a: keys-alt {
+ pins-keys {
+ pinmux = <MT7623_PIN_256_GPIO256_FUNC_GPIO256>,
+ <MT7623_PIN_257_GPIO257_FUNC_GPIO257>;
+ input-enable;
+ };
+ };
+
+ led_pins_unielec: leds-unielec {
+ pins-leds {
+ pinmux = <MT7623_PIN_14_GPIO14_FUNC_GPIO14>,
+ <MT7623_PIN_15_GPIO15_FUNC_GPIO15>;
+ };
+ };
+
+ mmc0_pins_default: mmc0default {
+ pins_cmd_dat {
+ pinmux = <MT7623_PIN_111_MSDC0_DAT7_FUNC_MSDC0_DAT7>,
+ <MT7623_PIN_112_MSDC0_DAT6_FUNC_MSDC0_DAT6>,
+ <MT7623_PIN_113_MSDC0_DAT5_FUNC_MSDC0_DAT5>,
+ <MT7623_PIN_114_MSDC0_DAT4_FUNC_MSDC0_DAT4>,
+ <MT7623_PIN_118_MSDC0_DAT3_FUNC_MSDC0_DAT3>,
+ <MT7623_PIN_119_MSDC0_DAT2_FUNC_MSDC0_DAT2>,
+ <MT7623_PIN_120_MSDC0_DAT1_FUNC_MSDC0_DAT1>,
+ <MT7623_PIN_121_MSDC0_DAT0_FUNC_MSDC0_DAT0>,
+ <MT7623_PIN_116_MSDC0_CMD_FUNC_MSDC0_CMD>;
+ input-enable;
+ bias-pull-up;
+ };
+
+ pins_clk {
+ pinmux = <MT7623_PIN_117_MSDC0_CLK_FUNC_MSDC0_CLK>;
+ bias-pull-down;
+ };
+
+ pins_rst {
+ pinmux = <MT7623_PIN_115_MSDC0_RSTB_FUNC_MSDC0_RSTB>;
+ bias-pull-up;
+ };
+ };
+
+ mmc0_pins_uhs: mmc0 {
+ pins_cmd_dat {
+ pinmux = <MT7623_PIN_111_MSDC0_DAT7_FUNC_MSDC0_DAT7>,
+ <MT7623_PIN_112_MSDC0_DAT6_FUNC_MSDC0_DAT6>,
+ <MT7623_PIN_113_MSDC0_DAT5_FUNC_MSDC0_DAT5>,
+ <MT7623_PIN_114_MSDC0_DAT4_FUNC_MSDC0_DAT4>,
+ <MT7623_PIN_118_MSDC0_DAT3_FUNC_MSDC0_DAT3>,
+ <MT7623_PIN_119_MSDC0_DAT2_FUNC_MSDC0_DAT2>,
+ <MT7623_PIN_120_MSDC0_DAT1_FUNC_MSDC0_DAT1>,
+ <MT7623_PIN_121_MSDC0_DAT0_FUNC_MSDC0_DAT0>,
+ <MT7623_PIN_116_MSDC0_CMD_FUNC_MSDC0_CMD>;
+ input-enable;
+ drive-strength = <MTK_DRIVE_2mA>;
+ bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+ };
+
+ pins_clk {
+ pinmux = <MT7623_PIN_117_MSDC0_CLK_FUNC_MSDC0_CLK>;
+ drive-strength = <MTK_DRIVE_2mA>;
+ bias-pull-down = <MTK_PUPD_SET_R1R0_01>;
+ };
+
+ pins_rst {
+ pinmux = <MT7623_PIN_115_MSDC0_RSTB_FUNC_MSDC0_RSTB>;
+ bias-pull-up;
+ };
+ };
+
+ pcie_default: pcie_pin_default {
+ pins_cmd_dat {
+ pinmux = <MT7623_PIN_208_AUD_EXT_CK1_FUNC_PCIE0_PERST_N>,
+ <MT7623_PIN_209_AUD_EXT_CK2_FUNC_PCIE1_PERST_N>;
+ bias-disable;
+ };
+ };
+};
+
+&pwm {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pwm_pins_a>;
+ status = "okay";
+};
+
+&pwrap {
+ mt6323 {
+ mt6323led: led {
+ compatible = "mediatek,mt6323-led";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led@0 {
+ reg = <0>;
+ label = "led0";
+ };
+ };
+ };
+};
+
+&mt6323keys {
+ mediatek,long-press-mode = <0>;
+};
+
+&uart2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart2_pins_b>;
+ status = "okay";
+};
+
+&usb1 {
+ vusb33-supply = <®_3p3v>;
+ vbus-supply = <®_3p3v>;
+ status = "okay";
+};
+
+&u3phy1 {
+ status = "okay";
+};
+
+&u3phy2 {
+ status = "okay";
+ mediatek,phy-switch = <&hifsys>;
+};
+
+&pcie {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pcie_default>;
+ status = "okay";
+
+ pcie@0,0 {
+ status = "okay";
+ };
+
+ pcie@1,0 {
+ status = "okay";
+ };
+
+ pcie@2,0 {
+ status = "okay";
+ };
+};
+
+&pcie0_phy {
+ status = "okay";
+};
+
+&pcie1_phy {
+ status = "okay";
+};
+
+++ /dev/null
-config MTK_BOOT_PARTSIZE
- int "Boot (SD Card/eMMC) filesystem partition size (in MiB)"
- depends on TARGET_mediatek_mt7623_DEVICE_unielec_u7623-emmc || TARGET_DEVICE_mediatek_mt7623_DEVICE_unielec_u7623-emmc
- default 32
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk
-define Build/sysupgrade-emmc
- rm -f $@.recovery
- mkfs.fat -C $@.recovery 3070
-
- ./gen_$(SUBTARGET)_emmc_img.sh $@ \
- $(IMAGE_KERNEL) \
- $@.recovery \
- $(IMAGE_ROOTFS)
-endef
-
-# default all platform image(fit) build
+# default all platform image(fit) build
define Device/Default
PROFILES = Default $$(DEVICE_NAME)
KERNEL_NAME := Image
+++ /dev/null
-#!/bin/sh
-#
-# This script is used only to create the "legacy" image for UniElec U7623,
-# suitable for upgrading from the vendor OpenWrt or from OpenWrt 19.07.
-#
-OUTPUT_FILE=$1
-KERNEL_FILE=$2
-RECOVERY_FILE=$3
-ROOTFS_FILE=$4
-
-BS=512
-
-# These two offsets are relative to the absolute location of the kernel on the mmc
-# (0xA00), so their position in the image is -2560 blocks
-#
-# They must be kept in sync with the default command line for U7623.
-# blkdevparts=mmcblk0:3M@6M(recovery),256M@9M(root)"
-#
-# For upgrading from the vendor firmware, the total image must fit in its
-# MTD 'firmware' partition, which is typically 36MiB.
-
-# In the legacy image, the uImage starts at block 0xa00. Allow 4864 KiB (9728) blocks.
-RECOVERY_OFFSET=9728
-# The recovery image is 3MiB, or 6144 blocks.
-ROOTFS_OFFSET=15872
-
-dd bs="$BS" of="$OUTPUT_FILE" if="$KERNEL_FILE"
-dd bs="$BS" of="$OUTPUT_FILE" if="$RECOVERY_FILE" seek="$RECOVERY_OFFSET"
-dd bs="$BS" of="$OUTPUT_FILE" if="$ROOTFS_FILE" seek="$ROOTFS_OFFSET"
-dd if=/dev/zero of="$OUTPUT_FILE" bs=128k count=1 oflag=append conv=notrunc
+++ /dev/null
-#!/bin/bash
-# SPDX-License-Identifier: GPL-2.0-only
-#
-# Copyright © 2019 Alexey Loukianov <lx2@lexa2.ru>
-# Copyright © 2020 David Woodhouse <dwmw2@infradead.org>
-
-# Generates a bootable SD card image for Banana Pi R2 (and probably
-# other similar boards) as documented at
-# http://www.fw-web.de/dokuwiki/doku.php?id=en:bpi-r2:storage
-#
-# The first sector must contain the SDMMC_BOOT header shown
-# below, and also contains the MBR partition table in the end
-# of the sector. The partition table must contain no active
-# partitions.
-#
-# The second sector must contain the BRLYT header, and the
-# special preloader image goes in sector 4; 2KiB into the image.
-#
-# The preloader loads U-Boot from sector 640; 320KiB into the image.
-# The location and the size (512KiB) are fixed and not read from
-# the partition table. We set up a partition for it merely for
-# our own convenience for upgrades, etc.
-#
-# The second partition is a FAT file system containing the kernel
-# image and a uboot.env file, which is provided to this script as
-# $4 (bootfs image). Its size is configurable with the
-# CONFIG_MTK_BOOT_PARTSIZE option; by default 32MiB.
-#
-# The root filesystem comes next in the third partition.
-#
-#
-# ------------------------ Sector Offset
-# | MBR + SDMMC_BOOT | 0 0x0
-# |----------------------|
-# | BRLYT header | 1 0x200
-# |----------------------|
-# . .
-# . .
-# |----------------------|
-# | | 4 0x800
-# | |
-# | Preloader |
-# . .
-# . .
-# | | 639
-# |----------------------|
-# | MBR partition #1 | 640 0x50000
-# | |
-# | U-Boot |
-# . .
-# . .
-# | | 1663
-# |----------------------|
-# | MBR partition #2 |
-# | |
-# | FAT partition | ( MTK_BOOT_PARTSIZE
-# . . default 32MiB )
-# . (kernel, uEnv) .
-# | |
-# |----------------------|
-# | MBR partition #3 |
-# | |
-# | Root partition |
-# | | ( TARGET_ROOTFS_PARTSIZE
-# | (squashfs+overlay | default 104MiB )
-# . or ext4, etc.) .
-# . .
-# | |
-# ------------------------
-#
-# For eMMC boot, everything up to and including the preloader must be
-# written to /dev/mmcblk0boot0, with the SDMMC_BOOT header changed to
-# read EMMC_BOOT\0 instead.
-#
-# The contents of the main eMMC are identical to the SD card layout,
-# with the preloader loading 512KiB of U-Boot starting at 0x50000.
-
-usage() {
- echo "SYNTAX: $0 sd <file> <preloader image> <u-boot image> <u-boot offset> <bootfs image> <rootfs image> <bootfs size> <rootfs size>"
- echo " OR: $0 emmc <file> <preloader image>"
- exit 1
-}
-
-set -e
-
-PRELOADER_OFFSET=2 # 2KiB
-
-SDMMC_BOOT="SDMMC_BOOT\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00"
-EMMC_BOOT="EMMC_BOOT\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00"
-BRLYT="BRLYT\x00\x00\x00\x01\x00\x00\x00\x00\x08\x00\x00\
-\x00\x08\x00\x00\x42\x42\x42\x42\x08\x00\x01\x00\x00\x08\x00\x00\
-\x00\x08\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-
-case $1 in
- sd)
- [ $# -eq 9 ] || usage
- OUTPUT="$2"
- PRELOADER="$3"
- UBOOT="$4"
- UBOOTOFS="$5"
- BOOTFS="$6"
- ROOTFS="$7"
- BOOTFSSIZE="$8"
- ROOTFSSIZE="$9"
-
- head=4
- sect=63
-
- set $(ptgen -o $OUTPUT -h $head -s $sect -a 0 -l 1024 \
- -t 41 -p 512k@${UBOOTOFS} \
- -t c -p ${BOOTFSSIZE}M \
- -t 83 -p ${ROOTFSSIZE}M )
-
- UBOOT_OFFSET="$(($1 / 512))"
- UBOOT_SIZE="$(($2 / 512))"
- BOOTFS_OFFSET="$(($3 / 512))"
- BOOTFS_SIZE="$(($4 / 512))"
- ROOTFS_OFFSET="$(($5 / 512))"
- ROOTFS_SIZE="$(($6 / 512))"
-
- echo -en "${SDMMC_BOOT}" | dd bs=1 of="${OUTPUT}" seek=0 conv=notrunc
- echo -en "${BRLYT}" | dd bs=1 of="${OUTPUT}" seek=512 conv=notrunc
-
- # For eMMC-only boards like U7623 the preloader doesn't need to be included in the
- # main image as it's only ever needed in the eMMC boot partition.
- if [ -r ${PRELOADER} ]; then
- dd bs=1024 if="${PRELOADER}" of="${OUTPUT}" seek="${PRELOADER_OFFSET}" conv=notrunc
- fi
- dd bs=512 if="${UBOOT}" of="${OUTPUT}" seek="${UBOOT_OFFSET}" conv=notrunc
- dd bs=512 if="${BOOTFS}" of="${OUTPUT}" seek="${BOOTFS_OFFSET}" conv=notrunc
- dd bs=512 if="${ROOTFS}" of="${OUTPUT}" seek="${ROOTFS_OFFSET}" conv=notrunc
- dd bs=128k if=/dev/zero of="${OUTPUT}" count=1 oflag=append conv=notrunc
- ;;
- emmc)
- [ $# -eq 3 ] || usage
- OUTPUT="$2"
- PRELOADER="$3"
-
- echo -en "${EMMC_BOOT}" | dd bs=1 of="${OUTPUT}" seek=0
- echo -en "${BRLYT}" | dd bs=1 of="${OUTPUT}" seek=512 conv=notrunc
-
- dd bs=1024 if="${PRELOADER}" of="${OUTPUT}" seek="${PRELOADER_OFFSET}" conv=notrunc
- ;;
- *)
- usage
- ;;
-esac
KERNEL_LOADADDR := 0x80008000
-DEVICE_VARS += UBOOT_TARGET UBOOT_OFFSET UBOOT_ENVSIZE
+DEVICE_VARS += UBOOT_TARGET UBOOT_OFFSET UBOOT_IMAGE
# The bootrom of MT7623 expects legacy MediaTek headers present in
# exactly the location also used for the primary GPT partition table.
define Build/mt7623-mbr
cp $@ $@.tmp 2>/dev/null || true
ptgen -o $@.tmp -h 4 -s 63 -a 0 -l 1024 \
- -t 0x41 -N uboot -p 3584k@320k \
+ -t 0x41 -N uboot -p 1M@$(UBOOT_OFFSET) \
-t 0xea -N recovery -p 40M@4M \
$(if $(findstring sdmmc,$1), \
-t 0x2e -N production -p $(CONFIG_TARGET_ROOTFS_PARTSIZE)M@48M \
endef
define Build/append-bootloader
- cat $(STAGING_DIR_IMAGE)/$1-u-boot.bin >> $@
+ cat $(STAGING_DIR_IMAGE)/$1-$(UBOOT_IMAGE) >> $@
+endef
+
+define Build/scatterfile
+ ./gen_scatterfile.sh $(subst mt,MT,$(SUBTARGET)) "$1" \
+ $(subst -scatter.txt,,$(notdir $@)) "$(DEVICE_TITLE)" > $@
endef
define Device/bananapi_bpi-r2
DEVICE_MODEL := BPi-R2
DEVICE_DTS := mt7623n-bananapi-bpi-r2
DEVICE_PACKAGES := mkf2fs e2fsprogs kmod-usb3 kmod-ata-ahci
- UBOOT_ENVSIZE := 0x10000
UBOOT_OFFSET := 320k
UBOOT_TARGET := mt7623n_bpir2
- UBOOT_PATH := $(STAGING_DIR_IMAGE)/mt7623n_bpir2-u-boot.bin
+ UBOOT_IMAGE := u-boot.bin
+ UBOOT_PATH := $(STAGING_DIR_IMAGE)/$$(UBOOT_TARGET)-$$(UBOOT_IMAGE)
IMAGES := sysupgrade.itb
KERNEL := kernel-bin | gzip
KERNEL_INITRAMFS_SUFFIX := -recovery.itb
KERNEL_INITRAMFS := kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb with-initrd
IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb external-static-with-rootfs | append-metadata
- ARTIFACT/preloader.bin := append-preloader $$(UBOOT_TARGET)
+ ARTIFACT/preloader.bin := mt7623-mbr emmc |\
+ pad-to 2k | append-preloader $$(UBOOT_TARGET)
ARTIFACT/u-boot.bin := append-uboot
ARTIFACT/sdcard.img.gz := mt7623-mbr sdmmc |\
pad-to 2k | append-preloader $$(UBOOT_TARGET) |\
- pad-to 320k | append-bootloader $$(UBOOT_TARGET) |\
+ pad-to $$(UBOOT_OFFSET) | append-bootloader $$(UBOOT_TARGET) |\
pad-to 4092k | mt7623-mbr emmc |\
pad-to 4M | append-image-stage initramfs-recovery.itb |\
pad-to 48M | append-image squashfs-sysupgrade.itb |\
gzip
- ARTIFACTS = u-boot.bin preloader.bin scatter.txt sdcard.img.gz
+ ARTIFACTS := u-boot.bin preloader.bin sdcard.img.gz
SUPPORTED_DEVICES := bananapi,bpi-r2
endef
TARGET_DEVICES += bananapi_bpi-r2
-
-ifneq ($(CONFIG_MTK_BOOT_PARTSIZE),)
-BOOTFS_BLOCK_SIZE := 1024
-BOOTFS_BLOCKS := $(shell echo $$(($(CONFIG_MTK_BOOT_PARTSIZE)*1024*1024/$(BOOTFS_BLOCK_SIZE))))
-endif
-
-define Build/mtk-mmc-img
- rm -f $@.boot
- mkfs.fat -C $@.boot $(BOOTFS_BLOCKS)
-
- if [ -r $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-preloader.bin ]; then \
- ./gen_mtk_mmc_img.sh emmc $@.emmc \
- $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-preloader.bin; \
- mcopy -i $@.boot $@.emmc ::eMMCboot.bin; \
- fi
- mkenvimage -s $(UBOOT_ENVSIZE) -o $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-uboot.env $(UBOOT_TARGET)-uEnv.txt
- mcopy -i $@.boot $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-uboot.env ::uboot.env
- mcopy -i $@.boot $(IMAGE_KERNEL) ::uImage
- ./gen_mtk_mmc_img.sh sd $@ \
- $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-preloader.bin \
- $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-u-boot*.bin \
- $(UBOOT_OFFSET) \
- $@.boot \
- $(IMAGE_ROOTFS) \
- $(CONFIG_MTK_BOOT_PARTSIZE) \
- 104
-endef
-
-define Build/scatterfile
- ./gen_scatterfile.sh $(subst mt,MT,$(SUBTARGET)) "$1" \
- $(subst -scatter.txt,,$(notdir $@)) "$(DEVICE_TITLE)" > $@
-endef
-
-
-# Full eMMC image including U-Boot and partition table
-define Device/unielec_u7623-emmc
+define Device/unielec_u7623-02
DEVICE_VENDOR := UniElec
- DEVICE_MODEL := U7623
- DEVICE_VARIANT := eMMC
+ DEVICE_MODEL := U7623-02
# When we use FIT images, U-Boot will populate the /memory node with the correct
# memory size discovered from the preloader, so we don't need separate builds.
- DEVICE_DTS := mt7623a-unielec-u7623-02-emmc-512m
+ DEVICE_DTS := mt7623a-unielec-u7623-02
DEVICE_DTS_DIR := ../dts
- SUPPORTED_DEVICES := unielec,u7623-02-emmc-512m
- UBOOT_ENVSIZE := 0x1000
+ DEVICE_PACKAGES := kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 kmod-mmc \
+ mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci
UBOOT_OFFSET := 256k
UBOOT_TARGET := mt7623a_unielec_u7623
- IMAGES := img.gz
- IMAGE/img.gz := mtk-mmc-img | gzip | append-metadata
- DEVICE_PACKAGES := kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 kmod-mmc \
- mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk
- ARTIFACT/scatter.txt := scatterfile $$(firstword $$(FILESYSTEMS))-$$(firstword $$(IMAGES))
- ARTIFACTS := scatter.txt
+ UBOOT_IMAGE := u-boot-mtk.bin
+ UBOOT_PATH := $(STAGING_DIR_IMAGE)/$$(UBOOT_TARGET)-$$(UBOOT_IMAGE)
+ IMAGES := sysupgrade.itb
+ KERNEL := kernel-bin | gzip
+ KERNEL_INITRAMFS_SUFFIX := -recovery.itb
+ KERNEL_INITRAMFS := kernel-bin | gzip | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd
+ IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | append-metadata
+ ARTIFACT/u-boot.bin := append-uboot
+# vendor Preloader seems not to care about SDMMC_BOOT/EMMC_BOOT header,
+# but OpenWrt expects 'SDMM' magic for sysupgrade.
+ ARTIFACT/emmc.img.gz := mt7623-mbr sdmmc |\
+ pad-to $$(UBOOT_OFFSET) | append-bootloader $$(UBOOT_TARGET) |\
+ pad-to 4M | append-image-stage initramfs-recovery.itb |\
+ pad-to 48M | append-image squashfs-sysupgrade.itb |\
+ gzip | append-metadata
+ ARTIFACT/scatter.txt := scatterfile emmc.img.gz
+ ARTIFACTS := u-boot.bin scatter.txt emmc.img.gz
+ SUPPORTED_DEVICES += unielec,u7623-02-emmc-512m
+endef
+TARGET_DEVICES += unielec_u7623-02
+
+
+# Legacy helper for U7623 board
+define Build/fat-recovery-fs
+ rm -f $@.recovery
+ mkfs.fat -C $@.recovery 3070
+ cat $@.recovery >> $@
endef
-TARGET_DEVICES += unielec_u7623-emmc
# Legacy partial image for U7623
# This preserves the vendor U-Boot and starts with a uImage at 0xA00
KERNEL := kernel-bin | append-dtb | uImage none
KERNEL_INITRAMFS := kernel-bin | append-dtb | uImage none
DEVICE_PACKAGES := kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 kmod-mmc \
- mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk
+ mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk \
+ partx-utils
IMAGES := sysupgrade-emmc.bin.gz
- IMAGE/sysupgrade-emmc.bin.gz := sysupgrade-emmc | gzip | append-metadata
+ IMAGE/sysupgrade-emmc.bin.gz := append-kernel |\
+ pad-to 4864k | fat-recovery-fs |\
+ pad-to 7936k | append-rootfs |\
+ gzip | append-metadata
SUPPORTED_DEVICES := unielec,u7623-02-emmc-512m
endef
TARGET_DEVICES += unielec_u7623-02-emmc-512m-legacy
+++ /dev/null
-# Boot menu for UniElec U7623
-# Copyright © 2020 David Woodhouse <dwmw2@infradead.org>
-
-kernel=uImage
-loadaddr=0x88000000
-dtaddr=0x83f00000
-fdt_high=0xafffffff
-
-console=ttyS0,115200
-bootopts=rootfstype=squashfs,ext4 rootwait
-
-# Create the command line (with appropriate root=) and boot the Linux FIT image.
-boot1=setenv bootargs "console=${console} root=${rootdev} ${bootopts}";printenv bootargs;\
- fatload mmc ${partition} ${loadaddr} ${kernel}; bootm
-
-bootmenu_0=Boot from eMMC.=setenv partition 0:2;setenv rootdev /dev/mmcblk0p3;run boot1
-bootmenu_default=0
-
-bootdelay=0
-bootcmd=bootmenu
case $board in
bananapi,bpi-r2|\
+ unielec,u7623-02|\
unielec,u7623-02-emmc-512m)
ucidef_set_interfaces_lan_wan "lan0 lan1 lan2 lan3" "wan"
;;
local board="$1"
case $board in
+ bananapi,bpi-r2|\
+ unielec,u7623-02|\
unielec,u7623-02-emmc-512m)
ucidef_set_interface_macaddr "wan" "$(cat /sys/class/net/wan/address)"
;;
local rootpart
case $(board_name) in
- bananapi,bpi-r2|\
unielec,u7623-02-emmc-512m)
- rootpart=$(cat /proc/cmdline)
- rootpart="${rootpart##*root=}"
- rootpart="${rootpart%% *}"
- case $rootpart in
- /dev/mmcblk0p2) # Legacy U7623 image
- set_recovery_mac_address /dev/mmcblk0p1
- ;;
- /dev/mmcblk0p3) # U7623 or Banana Pi R2 eMMC
- set_recovery_mac_address /dev/mmcblk0p2
- ;;
- /dev/mmcblk1p3) # Banana Pi R2 SD
- set_recovery_mac_address /dev/mmcblk1p2
- ;;
- esac
+ set_recovery_mac_address /dev/mmcblk0p1
;;
esac
}
REQUIRE_IMAGE_METADATA=1
RAMFS_COPY_BIN='fwtool'
-# Full system upgrade including preloader for MediaTek SoCs on eMMC or SD
-mtk_mmc_full_upgrade() {
+# Legacy full system upgrade including preloader for MediaTek SoCs on eMMC or SD
+legacy_mtk_mmc_full_upgrade() {
local diskdev partdev diff oldrecovery
if grep -q root=/dev/mmcblk0p2 /proc/cmdline; then
fi
sync
- if [ "$SAVE_PARTITIONS" = "1" ]; then
+ if [ "$UPGRADE_OPT_SAVE_PARTITIONS" = "1" ]; then
get_partitions "/dev/$diskdev" bootdisk
#extract the boot sector from the image
local board=$(board_name)
case "$board" in
- bananapi,bpi-r2)
+ bananapi,bpi-r2|\
+ unielec,u7623-02)
export_bootdevice
export_partdevice fitpart 3
[ "$fitpart" ] || return 1
EMMC_KERN_DEV="/dev/$fitpart"
emmc_do_upgrade "$1"
;;
-
unielec,u7623-02-emmc-512m)
local magic="$(get_magic_long "$1")"
if [ "$magic" = "53444d4d" ]; then
- mtk_mmc_full_upgrade "$1"
+ legacy_mtk_mmc_full_upgrade "$1"
else # Old partial image starting with uImage
# Keep the persistent random mac address (if it exists)
recoverydev=mmcblk0p1
esac
}
-PART_NAME=firmware
-
platform_check_image() {
- local board=$(board_name)
local magic="$(get_magic_long "$1")"
- local diskdev partdev diff
[ "$#" -gt 1 ] && return 1
- case "$board" in
- bananapi,bpi-r2)
+ case "$(board_name)" in
+ bananapi,bpi-r2|\
+ unielec,u7623-02)
[ "$magic" != "d00dfeed" ] && {
echo "Invalid image type."
return 1
# Can always upgrade to the new-style full image
[ "$magic" = "53444d4d" ] && return 0
+ # need to update to new bootchain via full image first
+ [ "$magic" = "d00dfeed" ] && {
+ echo "Please use full eMMC image to update bootloader first."
+ return 1
+ }
+
# Legacy uImage directly at 0xA00 on the eMMC.
[ "$magic" != "27051956" ] && {
echo "Invalid image type."
return 1
}
- rootpart=$(cat /proc/cmdline)
- rootpart="${rootpart##*root=}"
- rootpart="${rootpart%% *}"
- [ "$rootpart" != "/dev/mmcblk0p2" ] && {
- echo "Cannot downgrade to legacy image."
- return 1
- }
- return 0
;;
*)
echo "Sysupgrade is not supported on your board yet."
platform_copy_config() {
case "$(board_name)" in
- bananapi,bpi-r2)
+ bananapi,bpi-r2|\
+ unielec,u7623-02)
emmc_copy_config
;;
unielec,u7623-02-emmc-512m)
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_VSXXXAA is not set
-CONFIG_MTD_BLOCK2MTD=y
CONFIG_MTD_CMDLINE_PARTS=y
# CONFIG_MTD_NAND_MTK_BMT is not set
# CONFIG_MTD_PARSER_TRX is not set