mediatke: add support for elecom-wrc-2533gent
authorJohn Crispin <john@phrozen.org>
Fri, 27 Mar 2020 15:13:06 +0000 (16:13 +0100)
committerJohn Crispin <john@phrozen.org>
Fri, 27 Mar 2020 15:18:57 +0000 (16:18 +0100)
This commit adds support for the MT7622-based Elecom WRC-2533gent router,
with spi-nand storage and 512MB RAM.

The device has the following specifications:

* MT7622 (arm64 dual-core)
* 512MB RAM (DDR3)
* 4GB storage (spi-nand)
* 5x 1Gbps Ethernet (RTL8337C switch)
* 1x UART header
* 1x USB 3.0 port
* 5x LEDs
* 1x reset button
* 1x WPS button
* 1x slider switch
* 1x DC jack for main power (12V)

The following has been tested and is working:
* Ethernet switch
* 2.4g and 5g wifi
* USB 3.0 port
* sysupgrade
* buttons/leds

Not working:
* bluetooth firmware does not load even though it is present int he rootfs

Signed-off-by: John Crispin <john@phrozen.org>
target/linux/mediatek/files-4.19/arch/arm64/boot/dts/mediatek/mt7622-elecom-wrc-2533gent.dts [new file with mode: 0644]
target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7622-elecom-wrc-2533gent.dts [new file with mode: 0644]
target/linux/mediatek/image/mt7622.mk
target/linux/mediatek/mt7622/base-files/etc/board.d/02_network
target/linux/mediatek/mt7622/base-files/lib/upgrade/platform.sh

diff --git a/target/linux/mediatek/files-4.19/arch/arm64/boot/dts/mediatek/mt7622-elecom-wrc-2533gent.dts b/target/linux/mediatek/files-4.19/arch/arm64/boot/dts/mediatek/mt7622-elecom-wrc-2533gent.dts
new file mode 100644 (file)
index 0000000..7a5814e
--- /dev/null
@@ -0,0 +1,612 @@
+/*
+ * Copyright (c) 2017 MediaTek Inc.
+ * Author: Ming Huang <ming.huang@mediatek.com>
+ *        Sean Wang <sean.wang@mediatek.com>
+ *
+ * SPDX-License-Identifier: (GPL-2.0 OR MIT)
+ */
+
+/dts-v1/;
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+
+#include "mt7622.dtsi"
+#include "mt6380.dtsi"
+
+/ {
+       model = "Elecom WRC-2533";
+       compatible = "elecom,wrc-2533gent", "mediatek,mt7622";
+
+       aliases {
+               led-boot = &led_power;
+               led-failsafe = &led_power;
+               led-running = &led_power;
+               led-upgrade = &led_power;
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+               bootargs = "earlycon=uart8250,mmio32,0x11002000 swiotlb=512 console=ttyS0,115200n8";
+       };
+
+       cpus {
+               cpu@0 {
+                       proc-supply = <&mt6380_vcpu_reg>;
+                       sram-supply = <&mt6380_vm_reg>;
+               };
+
+               cpu@1 {
+                       proc-supply = <&mt6380_vcpu_reg>;
+                       sram-supply = <&mt6380_vm_reg>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               poll-interval = <100>;
+
+               wps {
+                       label = "wps";
+                       linux,code = <KEY_WPS_BUTTON>;
+                       gpios = <&pio 0 GPIO_ACTIVE_HIGH>;
+               };
+
+               factory {
+                       label = "factory";
+                       linux,code = <KEY_WPS_BUTTON>;
+                       gpios = <&pio 102 GPIO_ACTIVE_LOW>;
+               };
+
+               switch0 {
+                       label = "switch0";
+                       gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_0>;
+                       linux,input-type = <EV_SW>;
+               };
+
+               switch1 {
+                       label = "switch1";
+                       gpios = <&pio 16 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_1>;
+                       linux,input-type = <EV_SW>;
+               };
+
+               switch2 {
+                       label = "switch2";
+                       gpios = <&pio 17 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_2>;
+                       linux,input-type = <EV_SW>;
+               };
+
+               switch3 {
+                       label = "switch3";
+                       gpios = <&pio 18 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_3>;
+                       linux,input-type = <EV_SW>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_power: power_g {
+                       label = "wrc-2533:green:power";
+                       gpios = <&pio 2 GPIO_ACTIVE_HIGH>;
+               };
+
+               power_b {
+                       label = "wrc-2533:blue:power";
+                       gpios = <&pio 19 GPIO_ACTIVE_HIGH>;
+               };
+
+               power_r {
+                       label = "wrc-2533:red:power";
+                       gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
+               };
+
+               usb {
+                       label = "wrc-2533:blue:usb";
+                       gpios = <&pio 74 GPIO_ACTIVE_HIGH>;
+               };
+
+               wps {
+                       label = "wrc-2533:red:wps";
+                       gpios = <&pio 76 GPIO_ACTIVE_LOW>;
+               };
+
+               wifi2 {
+                       label = "wrc-2533:blue:wifi2g";
+                       gpios = <&pio 85 GPIO_ACTIVE_LOW>;
+               };
+
+               wifi5 {
+                       label = "wrc-2533:blue:wifi5g";
+                       gpios = <&pio 91 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       reg_usb_vbus: regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&pio 22 GPIO_ACTIVE_LOW>;
+               enable-active-high;
+       };
+
+       memory {
+               reg = <0 0x40000000 0 0x3F000000>;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               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;
+       };
+
+        rtkgsw: rtkgsw@0 {
+                compatible = "mediatek,rtk-gsw";
+               mediatek,ethsys = <&ethsys>;
+                mediatek,mdio = <&mdio>;
+                mediatek,reset-pin = <&pio 54 0>;
+                status = "okay";
+        };
+};
+
+&pcie {
+       pinctrl-names = "default", "pcie1_pins";
+       pinctrl-0 = <&pcie0_pins>;
+       pinctrl-1 = <&pcie1_pins>;
+       status = "okay";
+
+       pcie@0,0 {
+               status = "okay";
+               mt7615@0,0 {
+                       reg = <0x0000 0 0 0 0>;
+                       mediatek,mtd-eeprom = <&factory 0x05000>;
+               };
+       };
+
+       pcie@1,0 {
+               status = "okay";
+       };
+};
+
+&pio {
+       /* eMMC is shared pin with parallel NAND */
+       emmc_pins_default: emmc-pins-default {
+               mux {
+                       function = "emmc", "emmc_rst";
+                       groups = "emmc";
+               };
+
+               /* "NDL0","NDL1","NDL2","NDL3","NDL4","NDL5","NDL6","NDL7",
+                * "NRB","NCLE" pins are used as DAT0,DAT1,DAT2,DAT3,DAT4,
+                * DAT5,DAT6,DAT7,CMD,CLK for eMMC respectively
+                */
+               conf-cmd-dat {
+                       pins = "NDL0", "NDL1", "NDL2",
+                              "NDL3", "NDL4", "NDL5",
+                              "NDL6", "NDL7", "NRB";
+                       input-enable;
+                       bias-pull-up;
+               };
+
+               conf-clk {
+                       pins = "NCLE";
+                       bias-pull-down;
+               };
+       };
+
+       emmc_pins_uhs: emmc-pins-uhs {
+               mux {
+                       function = "emmc";
+                       groups = "emmc";
+               };
+
+               conf-cmd-dat {
+                       pins = "NDL0", "NDL1", "NDL2",
+                              "NDL3", "NDL4", "NDL5",
+                              "NDL6", "NDL7", "NRB";
+                       input-enable;
+                       drive-strength = <4>;
+                       bias-pull-up;
+               };
+
+               conf-clk {
+                       pins = "NCLE";
+                       drive-strength = <4>;
+                       bias-pull-down;
+               };
+       };
+
+       eth_pins: eth-pins {
+               mux {
+                       function = "eth";
+                       groups = "mdc_mdio", "rgmii_via_gmac2";
+               };
+       };
+
+       i2c1_pins: i2c1-pins {
+               mux {
+                       function = "i2c";
+                       groups =  "i2c1_0";
+               };
+       };
+
+       i2c2_pins: i2c2-pins {
+               mux {
+                       function = "i2c";
+                       groups =  "i2c2_0";
+               };
+       };
+
+       i2s1_pins: i2s1-pins {
+               mux {
+                       function = "i2s";
+                       groups =  "i2s_out_mclk_bclk_ws",
+                                 "i2s1_in_data",
+                                 "i2s1_out_data";
+               };
+
+               conf {
+                       pins = "I2S1_IN", "I2S1_OUT", "I2S_BCLK",
+                              "I2S_WS", "I2S_MCLK";
+                       drive-strength = <12>;
+                       bias-pull-down;
+               };
+       };
+
+       irrx_pins: irrx-pins {
+               mux {
+                       function = "ir";
+                       groups =  "ir_1_rx";
+               };
+       };
+
+       irtx_pins: irtx-pins {
+               mux {
+                       function = "ir";
+                       groups =  "ir_1_tx";
+               };
+       };
+
+       /* Parallel nand is shared pin with eMMC */
+       parallel_nand_pins: parallel-nand-pins {
+               mux {
+                       function = "flash";
+                       groups = "par_nand";
+               };
+       };
+
+       pcie0_pins: pcie0-pins {
+               mux {
+                       function = "pcie";
+                       groups = "pcie0_pad_perst",
+                                "pcie0_1_waken",
+                                "pcie0_1_clkreq";
+               };
+       };
+
+       pcie1_pins: pcie1-pins {
+               mux {
+                       function = "pcie";
+                       groups = "pcie1_pad_perst",
+                                "pcie1_0_waken",
+                                "pcie1_0_clkreq";
+               };
+       };
+
+       pmic_bus_pins: pmic-bus-pins {
+               mux {
+                       function = "pmic";
+                       groups = "pmic_bus";
+               };
+       };
+
+       pwm7_pins: pwm1-2-pins {
+               mux {
+                       function = "pwm";
+                       groups = "pwm_ch7_2";
+               };
+       };
+
+       wled_pins: wled-pins {
+               mux {
+                       function = "led";
+                       groups = "wled";
+               };
+       };
+
+       sd0_pins_default: sd0-pins-default {
+               mux {
+                       function = "sd";
+                       groups = "sd_0";
+               };
+
+               /* "I2S2_OUT, "I2S4_IN"", "I2S3_IN", "I2S2_IN",
+                *  "I2S4_OUT", "I2S3_OUT" are used as DAT0, DAT1,
+                *  DAT2, DAT3, CMD, CLK for SD respectively.
+                */
+               conf-cmd-data {
+                       pins = "I2S2_OUT", "I2S4_IN", "I2S3_IN",
+                              "I2S2_IN","I2S4_OUT";
+                       input-enable;
+                       drive-strength = <8>;
+                       bias-pull-up;
+               };
+               conf-clk {
+                       pins = "I2S3_OUT";
+                       drive-strength = <12>;
+                       bias-pull-down;
+               };
+               conf-cd {
+                       pins = "TXD3";
+                       bias-pull-up;
+               };
+       };
+
+       sd0_pins_uhs: sd0-pins-uhs {
+               mux {
+                       function = "sd";
+                       groups = "sd_0";
+               };
+
+               conf-cmd-data {
+                       pins = "I2S2_OUT", "I2S4_IN", "I2S3_IN",
+                              "I2S2_IN","I2S4_OUT";
+                       input-enable;
+                       bias-pull-up;
+               };
+
+               conf-clk {
+                       pins = "I2S3_OUT";
+                       bias-pull-down;
+               };
+       };
+
+       /* Serial NAND is shared pin with SPI-NOR */
+       serial_nand_pins: serial-nand-pins {
+               mux {
+                       function = "flash";
+                       groups = "snfi";
+               };
+       };
+
+       spic0_pins: spic0-pins {
+               mux {
+                       function = "spi";
+                       groups = "spic0_0";
+               };
+       };
+
+       spic1_pins: spic1-pins {
+               mux {
+                       function = "spi";
+                       groups = "spic1_0";
+               };
+       };
+
+       /* SPI-NOR is shared pin with serial NAND */
+       spi_nor_pins: spi-nor-pins {
+               mux {
+                       function = "flash";
+                       groups = "spi_nor";
+               };
+       };
+
+       /* serial NAND is shared pin with SPI-NOR */
+       serial_nand_pins: serial-nand-pins {
+               mux {
+                       function = "flash";
+                       groups = "snfi";
+               };
+       };
+
+       uart0_pins: uart0-pins {
+               mux {
+                       function = "uart";
+                       groups = "uart0_0_tx_rx" ;
+               };
+       };
+
+       uart2_pins: uart2-pins {
+               mux {
+                       function = "uart";
+                       groups = "uart2_1_tx_rx" ;
+               };
+       };
+
+       watchdog_pins: watchdog-pins {
+               mux {
+                       function = "watchdog";
+                       groups = "watchdog";
+               };
+       };
+};
+
+&bch {
+       status = "okay";
+};
+
+&btif {
+       status = "okay";
+};
+
+&cir {
+       pinctrl-names = "default";
+       pinctrl-0 = <&irrx_pins>;
+       status = "okay";
+};
+
+&eth {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&eth_pins>;
+       gmac0: mac@0 {
+                compatible = "mediatek,eth-mac";
+                reg = <0>;
+                phy-mode = "sgmii";
+                fixed-link {
+                        speed = <1000>;
+                        full-duplex;
+                        pause;
+                };
+        };
+        gmac1: mac@1 {
+                compatible = "mediatek,eth-mac";
+                reg = <1>;
+                phy-mode = "rgmii";
+                fixed-link {
+                        speed = <1000>;
+                        full-duplex;
+                        pause;
+                };
+        };
+        mdio: mdio-bus {
+                #address-cells = <1>;
+                #size-cells = <0>;
+        };
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins>;
+       status = "okay";
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2_pins>;
+       status = "okay";
+};
+
+&pwm {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm7_pins>;
+       status = "okay";
+};
+
+&pwrap {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pmic_bus_pins>;
+
+       status = "okay";
+};
+
+&snfi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&serial_nand_pins>;
+       status = "okay";
+
+       spi_nand@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "spi-nand";
+               spi-max-frequency = <104000000>;
+               reg = <0>;
+
+               partitions {
+                        compatible = "fixed-partitions";
+                        #address-cells = <1>;
+                        #size-cells = <1>;
+
+                        partition@0 {
+                                label = "Preloader";
+                                reg = <0x00000 0x0080000>;
+                                read-only;
+                        };
+
+                        partition@80000 {
+                                label = "ATF";
+                                reg = <0x80000 0x0040000>;
+                                read-only;
+                        };
+
+                        partition@c0000 {
+                                label = "uboot";
+                                reg = <0xc0000 0x0080000>;
+                                read-only;
+                        };
+
+                        partition@140000 {
+                                label = "uboot-env";
+                                reg = <0x140000 0x0080000>;
+                                read-only;
+                        };
+
+                        factory: partition@1c0000 {
+                                label = "factory";
+                                reg = <0x1c0000 0x0040000>;
+                                read-only;
+                        };
+
+                        partition@200000 {
+                                label = "Kernel";
+                                reg = <0x200000 0x2000000>;
+                        };
+
+                        partition@2200000 {
+                                label = "reserved";
+                                reg = <0x2200000 0x4000000>;
+                        };
+                };
+       };
+};
+
+&spi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spic0_pins>;
+       status = "okay";
+};
+
+&spi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spic1_pins>;
+       status = "okay";
+};
+
+&ssusb {
+       vusb33-supply = <&reg_3p3v>;
+       vbus-supply = <&reg_usb_vbus>;
+       status = "okay";
+};
+
+&u3phy {
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_pins>;
+       status = "okay";
+};
+
+&watchdog {
+       pinctrl-names = "default";
+       pinctrl-0 = <&watchdog_pins>;
+       status = "okay";
+};
+
+&wmac {
+       mediatek,mtd-eeprom = <&factory 0x0000>;
+       status = "okay";
+};
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7622-elecom-wrc-2533gent.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7622-elecom-wrc-2533gent.dts
new file mode 100644 (file)
index 0000000..7a5814e
--- /dev/null
@@ -0,0 +1,612 @@
+/*
+ * Copyright (c) 2017 MediaTek Inc.
+ * Author: Ming Huang <ming.huang@mediatek.com>
+ *        Sean Wang <sean.wang@mediatek.com>
+ *
+ * SPDX-License-Identifier: (GPL-2.0 OR MIT)
+ */
+
+/dts-v1/;
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+
+#include "mt7622.dtsi"
+#include "mt6380.dtsi"
+
+/ {
+       model = "Elecom WRC-2533";
+       compatible = "elecom,wrc-2533gent", "mediatek,mt7622";
+
+       aliases {
+               led-boot = &led_power;
+               led-failsafe = &led_power;
+               led-running = &led_power;
+               led-upgrade = &led_power;
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+               bootargs = "earlycon=uart8250,mmio32,0x11002000 swiotlb=512 console=ttyS0,115200n8";
+       };
+
+       cpus {
+               cpu@0 {
+                       proc-supply = <&mt6380_vcpu_reg>;
+                       sram-supply = <&mt6380_vm_reg>;
+               };
+
+               cpu@1 {
+                       proc-supply = <&mt6380_vcpu_reg>;
+                       sram-supply = <&mt6380_vm_reg>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               poll-interval = <100>;
+
+               wps {
+                       label = "wps";
+                       linux,code = <KEY_WPS_BUTTON>;
+                       gpios = <&pio 0 GPIO_ACTIVE_HIGH>;
+               };
+
+               factory {
+                       label = "factory";
+                       linux,code = <KEY_WPS_BUTTON>;
+                       gpios = <&pio 102 GPIO_ACTIVE_LOW>;
+               };
+
+               switch0 {
+                       label = "switch0";
+                       gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_0>;
+                       linux,input-type = <EV_SW>;
+               };
+
+               switch1 {
+                       label = "switch1";
+                       gpios = <&pio 16 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_1>;
+                       linux,input-type = <EV_SW>;
+               };
+
+               switch2 {
+                       label = "switch2";
+                       gpios = <&pio 17 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_2>;
+                       linux,input-type = <EV_SW>;
+               };
+
+               switch3 {
+                       label = "switch3";
+                       gpios = <&pio 18 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_3>;
+                       linux,input-type = <EV_SW>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_power: power_g {
+                       label = "wrc-2533:green:power";
+                       gpios = <&pio 2 GPIO_ACTIVE_HIGH>;
+               };
+
+               power_b {
+                       label = "wrc-2533:blue:power";
+                       gpios = <&pio 19 GPIO_ACTIVE_HIGH>;
+               };
+
+               power_r {
+                       label = "wrc-2533:red:power";
+                       gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
+               };
+
+               usb {
+                       label = "wrc-2533:blue:usb";
+                       gpios = <&pio 74 GPIO_ACTIVE_HIGH>;
+               };
+
+               wps {
+                       label = "wrc-2533:red:wps";
+                       gpios = <&pio 76 GPIO_ACTIVE_LOW>;
+               };
+
+               wifi2 {
+                       label = "wrc-2533:blue:wifi2g";
+                       gpios = <&pio 85 GPIO_ACTIVE_LOW>;
+               };
+
+               wifi5 {
+                       label = "wrc-2533:blue:wifi5g";
+                       gpios = <&pio 91 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       reg_usb_vbus: regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&pio 22 GPIO_ACTIVE_LOW>;
+               enable-active-high;
+       };
+
+       memory {
+               reg = <0 0x40000000 0 0x3F000000>;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               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;
+       };
+
+        rtkgsw: rtkgsw@0 {
+                compatible = "mediatek,rtk-gsw";
+               mediatek,ethsys = <&ethsys>;
+                mediatek,mdio = <&mdio>;
+                mediatek,reset-pin = <&pio 54 0>;
+                status = "okay";
+        };
+};
+
+&pcie {
+       pinctrl-names = "default", "pcie1_pins";
+       pinctrl-0 = <&pcie0_pins>;
+       pinctrl-1 = <&pcie1_pins>;
+       status = "okay";
+
+       pcie@0,0 {
+               status = "okay";
+               mt7615@0,0 {
+                       reg = <0x0000 0 0 0 0>;
+                       mediatek,mtd-eeprom = <&factory 0x05000>;
+               };
+       };
+
+       pcie@1,0 {
+               status = "okay";
+       };
+};
+
+&pio {
+       /* eMMC is shared pin with parallel NAND */
+       emmc_pins_default: emmc-pins-default {
+               mux {
+                       function = "emmc", "emmc_rst";
+                       groups = "emmc";
+               };
+
+               /* "NDL0","NDL1","NDL2","NDL3","NDL4","NDL5","NDL6","NDL7",
+                * "NRB","NCLE" pins are used as DAT0,DAT1,DAT2,DAT3,DAT4,
+                * DAT5,DAT6,DAT7,CMD,CLK for eMMC respectively
+                */
+               conf-cmd-dat {
+                       pins = "NDL0", "NDL1", "NDL2",
+                              "NDL3", "NDL4", "NDL5",
+                              "NDL6", "NDL7", "NRB";
+                       input-enable;
+                       bias-pull-up;
+               };
+
+               conf-clk {
+                       pins = "NCLE";
+                       bias-pull-down;
+               };
+       };
+
+       emmc_pins_uhs: emmc-pins-uhs {
+               mux {
+                       function = "emmc";
+                       groups = "emmc";
+               };
+
+               conf-cmd-dat {
+                       pins = "NDL0", "NDL1", "NDL2",
+                              "NDL3", "NDL4", "NDL5",
+                              "NDL6", "NDL7", "NRB";
+                       input-enable;
+                       drive-strength = <4>;
+                       bias-pull-up;
+               };
+
+               conf-clk {
+                       pins = "NCLE";
+                       drive-strength = <4>;
+                       bias-pull-down;
+               };
+       };
+
+       eth_pins: eth-pins {
+               mux {
+                       function = "eth";
+                       groups = "mdc_mdio", "rgmii_via_gmac2";
+               };
+       };
+
+       i2c1_pins: i2c1-pins {
+               mux {
+                       function = "i2c";
+                       groups =  "i2c1_0";
+               };
+       };
+
+       i2c2_pins: i2c2-pins {
+               mux {
+                       function = "i2c";
+                       groups =  "i2c2_0";
+               };
+       };
+
+       i2s1_pins: i2s1-pins {
+               mux {
+                       function = "i2s";
+                       groups =  "i2s_out_mclk_bclk_ws",
+                                 "i2s1_in_data",
+                                 "i2s1_out_data";
+               };
+
+               conf {
+                       pins = "I2S1_IN", "I2S1_OUT", "I2S_BCLK",
+                              "I2S_WS", "I2S_MCLK";
+                       drive-strength = <12>;
+                       bias-pull-down;
+               };
+       };
+
+       irrx_pins: irrx-pins {
+               mux {
+                       function = "ir";
+                       groups =  "ir_1_rx";
+               };
+       };
+
+       irtx_pins: irtx-pins {
+               mux {
+                       function = "ir";
+                       groups =  "ir_1_tx";
+               };
+       };
+
+       /* Parallel nand is shared pin with eMMC */
+       parallel_nand_pins: parallel-nand-pins {
+               mux {
+                       function = "flash";
+                       groups = "par_nand";
+               };
+       };
+
+       pcie0_pins: pcie0-pins {
+               mux {
+                       function = "pcie";
+                       groups = "pcie0_pad_perst",
+                                "pcie0_1_waken",
+                                "pcie0_1_clkreq";
+               };
+       };
+
+       pcie1_pins: pcie1-pins {
+               mux {
+                       function = "pcie";
+                       groups = "pcie1_pad_perst",
+                                "pcie1_0_waken",
+                                "pcie1_0_clkreq";
+               };
+       };
+
+       pmic_bus_pins: pmic-bus-pins {
+               mux {
+                       function = "pmic";
+                       groups = "pmic_bus";
+               };
+       };
+
+       pwm7_pins: pwm1-2-pins {
+               mux {
+                       function = "pwm";
+                       groups = "pwm_ch7_2";
+               };
+       };
+
+       wled_pins: wled-pins {
+               mux {
+                       function = "led";
+                       groups = "wled";
+               };
+       };
+
+       sd0_pins_default: sd0-pins-default {
+               mux {
+                       function = "sd";
+                       groups = "sd_0";
+               };
+
+               /* "I2S2_OUT, "I2S4_IN"", "I2S3_IN", "I2S2_IN",
+                *  "I2S4_OUT", "I2S3_OUT" are used as DAT0, DAT1,
+                *  DAT2, DAT3, CMD, CLK for SD respectively.
+                */
+               conf-cmd-data {
+                       pins = "I2S2_OUT", "I2S4_IN", "I2S3_IN",
+                              "I2S2_IN","I2S4_OUT";
+                       input-enable;
+                       drive-strength = <8>;
+                       bias-pull-up;
+               };
+               conf-clk {
+                       pins = "I2S3_OUT";
+                       drive-strength = <12>;
+                       bias-pull-down;
+               };
+               conf-cd {
+                       pins = "TXD3";
+                       bias-pull-up;
+               };
+       };
+
+       sd0_pins_uhs: sd0-pins-uhs {
+               mux {
+                       function = "sd";
+                       groups = "sd_0";
+               };
+
+               conf-cmd-data {
+                       pins = "I2S2_OUT", "I2S4_IN", "I2S3_IN",
+                              "I2S2_IN","I2S4_OUT";
+                       input-enable;
+                       bias-pull-up;
+               };
+
+               conf-clk {
+                       pins = "I2S3_OUT";
+                       bias-pull-down;
+               };
+       };
+
+       /* Serial NAND is shared pin with SPI-NOR */
+       serial_nand_pins: serial-nand-pins {
+               mux {
+                       function = "flash";
+                       groups = "snfi";
+               };
+       };
+
+       spic0_pins: spic0-pins {
+               mux {
+                       function = "spi";
+                       groups = "spic0_0";
+               };
+       };
+
+       spic1_pins: spic1-pins {
+               mux {
+                       function = "spi";
+                       groups = "spic1_0";
+               };
+       };
+
+       /* SPI-NOR is shared pin with serial NAND */
+       spi_nor_pins: spi-nor-pins {
+               mux {
+                       function = "flash";
+                       groups = "spi_nor";
+               };
+       };
+
+       /* serial NAND is shared pin with SPI-NOR */
+       serial_nand_pins: serial-nand-pins {
+               mux {
+                       function = "flash";
+                       groups = "snfi";
+               };
+       };
+
+       uart0_pins: uart0-pins {
+               mux {
+                       function = "uart";
+                       groups = "uart0_0_tx_rx" ;
+               };
+       };
+
+       uart2_pins: uart2-pins {
+               mux {
+                       function = "uart";
+                       groups = "uart2_1_tx_rx" ;
+               };
+       };
+
+       watchdog_pins: watchdog-pins {
+               mux {
+                       function = "watchdog";
+                       groups = "watchdog";
+               };
+       };
+};
+
+&bch {
+       status = "okay";
+};
+
+&btif {
+       status = "okay";
+};
+
+&cir {
+       pinctrl-names = "default";
+       pinctrl-0 = <&irrx_pins>;
+       status = "okay";
+};
+
+&eth {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&eth_pins>;
+       gmac0: mac@0 {
+                compatible = "mediatek,eth-mac";
+                reg = <0>;
+                phy-mode = "sgmii";
+                fixed-link {
+                        speed = <1000>;
+                        full-duplex;
+                        pause;
+                };
+        };
+        gmac1: mac@1 {
+                compatible = "mediatek,eth-mac";
+                reg = <1>;
+                phy-mode = "rgmii";
+                fixed-link {
+                        speed = <1000>;
+                        full-duplex;
+                        pause;
+                };
+        };
+        mdio: mdio-bus {
+                #address-cells = <1>;
+                #size-cells = <0>;
+        };
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins>;
+       status = "okay";
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2_pins>;
+       status = "okay";
+};
+
+&pwm {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm7_pins>;
+       status = "okay";
+};
+
+&pwrap {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pmic_bus_pins>;
+
+       status = "okay";
+};
+
+&snfi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&serial_nand_pins>;
+       status = "okay";
+
+       spi_nand@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "spi-nand";
+               spi-max-frequency = <104000000>;
+               reg = <0>;
+
+               partitions {
+                        compatible = "fixed-partitions";
+                        #address-cells = <1>;
+                        #size-cells = <1>;
+
+                        partition@0 {
+                                label = "Preloader";
+                                reg = <0x00000 0x0080000>;
+                                read-only;
+                        };
+
+                        partition@80000 {
+                                label = "ATF";
+                                reg = <0x80000 0x0040000>;
+                                read-only;
+                        };
+
+                        partition@c0000 {
+                                label = "uboot";
+                                reg = <0xc0000 0x0080000>;
+                                read-only;
+                        };
+
+                        partition@140000 {
+                                label = "uboot-env";
+                                reg = <0x140000 0x0080000>;
+                                read-only;
+                        };
+
+                        factory: partition@1c0000 {
+                                label = "factory";
+                                reg = <0x1c0000 0x0040000>;
+                                read-only;
+                        };
+
+                        partition@200000 {
+                                label = "Kernel";
+                                reg = <0x200000 0x2000000>;
+                        };
+
+                        partition@2200000 {
+                                label = "reserved";
+                                reg = <0x2200000 0x4000000>;
+                        };
+                };
+       };
+};
+
+&spi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spic0_pins>;
+       status = "okay";
+};
+
+&spi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spic1_pins>;
+       status = "okay";
+};
+
+&ssusb {
+       vusb33-supply = <&reg_3p3v>;
+       vbus-supply = <&reg_usb_vbus>;
+       status = "okay";
+};
+
+&u3phy {
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_pins>;
+       status = "okay";
+};
+
+&watchdog {
+       pinctrl-names = "default";
+       pinctrl-0 = <&watchdog_pins>;
+       status = "okay";
+};
+
+&wmac {
+       mediatek,mtd-eeprom = <&factory 0x0000>;
+       status = "okay";
+};
index 0d8af5a9eeaf49acfed0c36503959c215784e9c7..0aea5dc488f8bc6996f4f4fafe50fea63372df08 100644 (file)
@@ -16,3 +16,14 @@ define Device/bpi_bananapi-r64
   DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk
 endef
 TARGET_DEVICES += bpi_bananapi-r64
+
+define Device/elecom-wrc-2533gent
+  DEVICE_VENDOR := Elecom
+  DEVICE_MODEL := Elecom WRC-2533GENT
+  DEVICE_DTS := mt7622-elecom-wrc-2533gent
+  DEVICE_DTS_DIR := $(DTS_DIR)/mediatek
+  DEVICE_PACKAGES := kmod-usb-ohci kmod-usb2 kmod-usb3 \
+                     kmod-mt7615e mt7622bt-firmware swconfig
+  SUPPORTED_DEVICES := elecom,wrc-2533gent
+endef
+TARGET_DEVICES += elecom-wrc-2533gent
index d719a35dec9376fcf5eeff8981c5c8b05c0540c5..18ad24d046a701acac4c7385073a47f5174a9b41 100755 (executable)
@@ -9,6 +9,10 @@ mediatek_setup_interfaces()
        local board="$1"
 
        case $board in
+       'elecom,wrc-2533gent')
+               ucidef_add_switch "switch0" \
+                                 "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "6u@eth0" "5u@eth1"
+               ;;
        esac
 }
 
index f2264592a466b414ba197c79ceafc70d4792dedd..c5b4cf306bba2027ea96db306c6eab340e677f0e 100755 (executable)
@@ -8,14 +8,23 @@ platform_do_upgrade() {
        esac
 }
 
-PART_NAME=firmware
+PART_NAME=Kernel
 
 platform_check_image() {
        local board=$(board_name)
+       local magic="$(get_magic_long "$1")"
 
        [ "$#" -gt 1 ] && return 1
 
        case "$board" in
+       elecom,wrc-2533gent)
+               [ "$magic" != "d00dfeed" ] && {
+                       echo "Invalid image type."
+                       return 1
+               }
+               return 0
+               ;;
+
        *)
                echo "Sysupgrade is not supported on your board yet."
                return 1