[PATCH] ramips: add support for Zbtlink ZBT-WG1602

Rosen Penev rosenp at gmail.com
Mon Nov 29 19:17:47 PST 2021


On Tue, Nov 16, 2021 at 2:14 AM Sergey Ryazanov <ryazanov.s.a at gmail.com> wrote:
>
> Zbtlink ZBT-WG1602 is a Wi-Fi router intendent to use with WWAN
> (UMTS/LTE/3G/4G) modems. The router board offsers a couple of miniPCIe
> slots with USB and SIM only and another one pure miniPCIe slot as well
> as five Gigabit Ethernet ports (4xLAN + WAN).
>
> Specification:
>
> * SoC: MT7621A
> * RAM: 256/512 MiB
> * Flash: 16/32 MiB (SPI NOR)
> * external watchdog (looks like Torexsemi XC6131B)
> * Eth: 10/100/100 Mbps Ethernet x5 ports (4xLAN + WAN)
> * WLAN 2GHz: MT7603EN (.11n, MIMO 2x2)
> * WLAN 5GHz: MT7612EN (.11ac, MIMO 2x2)
> * WLAN Ants: detachable x2, shared by 2GHz & 5GHz radios
> * miniPCIe: 2x slots with USB&SIM + 1x slot with regular PCIe bus
> * WWAN Ants: detachable x4
> * External storage: microSD (SDXC) slot
> * USB: 2.0 Type-A port
> * LED: 11 (5 per Eth phy, 3 SoC controlled, 2 WLAN 2/5 controlled, 1
>        power indicator)
switch LEDs can be controlled now. See
https://github.com/openwrt/openwrt/commit/360c181dd747f033cb61f83915ce277c6497720f
> * Button: 1 (reset)
> * UART: console (115200 baud)
> * Power: DC jack (12 V / 2.5 A)
>
> Additional HW information:
>
> * SoC USB port #1 is shared by internal miniPCIe slot and external
>   Type-A USB port, USB D+/D- lines are toggled between ports using a
>   GPIO controlled DPDT switch.
> * Power of the USB enabled miniPCIe slots can be individually controlled
>   using dedicated GPIO lines.
> * Vendor firmware feeds the external watchdog with 1s pulses. GPIO
>   watchdog driver is able to either generate a 1us pulses or toggle the
>   output line. 1us is not enough for the external watchod timer, so
>   the line toggling driver mode is utilized.
>
> Installation:
>
> Vendor's firmware is OpenWrt (LEDE) based, so the sysupgrade image can
> be directly used to install OpenWrt. Firmware must be upgraded using the
> 'force' and 'do not save configuration' command line options (or
> correspondig web interface checkboxes) since the vendor firmware is from
> the pre-DSA era.
>
> Signed-off-by: Sergey Ryazanov <ryazanov.s.a at gmail.com>
> ---
>  .../dts/mt7621_zbtlink_zbt-wg1602-16m.dts     |  10 +
>  .../ramips/dts/mt7621_zbtlink_zbt-wg1602.dtsi | 206 ++++++++++++++++++
>  target/linux/ramips/image/mt7621.mk           |  12 +
>  3 files changed, 228 insertions(+)
>  create mode 100644 target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602-16m.dts
>  create mode 100644 target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602.dtsi
>
> diff --git a/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602-16m.dts b/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602-16m.dts
> new file mode 100644
> index 0000000000..216c7b3cf0
> --- /dev/null
> +++ b/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602-16m.dts
> @@ -0,0 +1,10 @@
> +#include "mt7621_zbtlink_zbt-wg1602.dtsi"
> +
> +/ {
> +       compatible = "zbtlink,zbt-wg1602-16m", "zbtlink,zbt-wg1602", "mediatek,mt7621-soc";
> +       model = "Zbtlink ZBT-WG1602 (16M)";
> +};
> +
> +&firmware {
> +       reg = <0x50000 0xfb0000>;
> +};
> diff --git a/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602.dtsi b/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602.dtsi
> new file mode 100644
> index 0000000000..e377a13444
> --- /dev/null
> +++ b/target/linux/ramips/dts/mt7621_zbtlink_zbt-wg1602.dtsi
> @@ -0,0 +1,206 @@
> +#include "mt7621.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +
> +/ {
> +       compatible = "zbtlink,zbt-wg1602", "mediatek,mt7621-soc";
> +
> +       aliases {
> +               led-boot = &led_sm;
> +               led-failsafe = &led_sm;
> +               led-running = &led_sm;
> +               led-upgrade = &led_sm;
> +               label-mac-device = &gmac0;
> +       };
> +
> +       chosen {
> +               bootargs = "console=ttyS0,115200";
> +       };
> +
> +       keys {
> +               compatible = "gpio-keys";
> +
> +               reset {
> +                       label = "reset";
> +                       gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
> +                       linux,code = <KEY_RESTART>;
> +               };
> +       };
> +
> +       leds {
> +               compatible = "gpio-leds";
> +
> +               led_sm: sm {
> +                       label = "green:sm";
> +                       gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
> +               };
> +
> +               4g1 {
> +                       label = "green:4g1";
> +                       gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
> +               };
> +
> +               4g2 {
> +                       label = "green:4g2";
> +                       gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
> +               };
> +       };
> +
> +       watchdog {
> +               compatible = "linux,wdt-gpio";
> +               gpios = <&gpio 3 GPIO_ACTIVE_HIGH>;
> +               hw_algo = "toggle";
> +               /* hw_margin_ms is actually ~120s but driver limits it to 60s */
> +               hw_margin_ms = <60000>;
> +               always-running;
> +       };
> +
> +       gpio-export {
> +               compatible = "gpio-export";
> +               #size-cells = <0>;
> +
> +               4g1-pwr {
> +                       gpio-export,name = "4g1-pwr";
> +                       gpio-export,output = <1>;
> +                       gpios = <&gpio 8 GPIO_ACTIVE_HIGH>;
> +               };
> +
> +               4g2-pwr {
> +                       gpio-export,name = "4g2-pwr";
> +                       gpio-export,output = <1>;
> +                       gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
> +               };
> +
> +               ext-usb {
> +                       gpio-export,name = "ext-usb";
> +                       gpio-export,output = <1>;
> +                       gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
> +               };
> +       };
> +};
> +
> +&sdhci {
> +       status = "okay";
> +};
> +
> +&spi0 {
> +       status = "okay";
> +
> +       flash at 0 {
> +               compatible = "jedec,spi-nor";
> +               reg = <0>;
> +               spi-max-frequency = <10000000>;
> +
> +               partitions {
> +                       compatible = "fixed-partitions";
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +
> +                       partition at 0 {
> +                               label = "u-boot";
> +                               reg = <0x0 0x30000>;
> +                               read-only;
> +                       };
> +
> +                       partition at 30000 {
> +                               label = "u-boot-env";
> +                               reg = <0x30000 0x10000>;
> +                               read-only;
> +                       };
> +
> +                       factory: partition at 40000 {
> +                               label = "factory";
> +                               reg = <0x40000 0x10000>;
> +                               read-only;
> +                       };
> +
> +                       firmware: partition at 50000 {
> +                               compatible = "denx,uimage";
> +                               label = "firmware";
> +                       };
> +               };
> +       };
> +};
> +
> +&pcie {
> +       status = "okay";
> +};
> +
> +&pcie0 {
> +       wifi0: wifi at 0,0 {
> +               compatible = "pci14c3,7603";
> +               reg = <0x0000 0 0 0 0>;
> +               mediatek,mtd-eeprom = <&factory 0x0000>;
> +       };
> +};
> +
> +&pcie1 {
> +       wifi1: wifi at 0,0 {
> +               compatible = "pci14c3,7662";
> +               reg = <0x0000 0 0 0 0>;
> +               mediatek,mtd-eeprom = <&factory 0x8000>;
> +               ieee80211-freq-limit = <5000000 6000000>;
> +
> +               led {
> +                       led-sources = <2>;
> +               };
> +       };
> +};
> +
> +&gmac0 {
> +       nvmem-cells = <&macaddr_factory_e000>;
> +       nvmem-cell-names = "mac-address";
> +};
> +
> +&switch0 {
> +       ports {
> +               port at 0 {
> +                       status = "okay";
> +                       label = "lan1";
> +               };
> +
> +               port at 1 {
> +                       status = "okay";
> +                       label = "lan2";
> +               };
> +
> +               port at 2 {
> +                       status = "okay";
> +                       label = "lan3";
> +               };
> +
> +               port at 3 {
> +                       status = "okay";
> +                       label = "lan4";
> +               };
> +
> +               port at 4 {
> +                       status = "okay";
> +                       label = "wan";
> +                       nvmem-cells = <&macaddr_factory_e006>;
> +                       nvmem-cell-names = "mac-address";
> +               };
> +       };
> +};
> +
> +&state_default {
> +       gpio {
> +               groups = "i2c", "rgmii2", "uart2", "wdt";
> +               function = "gpio";
> +       };
> +};
> +
> +&factory {
> +       compatible = "nvmem-cells";
> +       #address-cells = <1>;
> +       #size-cells = <1>;
> +
> +       macaddr_factory_e000: macaddr at e000 {
> +               reg = <0xe000 0x6>;
> +       };
> +
> +       macaddr_factory_e006: macaddr at e006 {
> +               reg = <0xe006 0x6>;
> +       };
> +};
> diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
> index 3b68a76b3e..c94f75aa66 100644
> --- a/target/linux/ramips/image/mt7621.mk
> +++ b/target/linux/ramips/image/mt7621.mk
> @@ -1689,6 +1689,18 @@ define Device/zbtlink_zbt-we3526
>  endef
>  TARGET_DEVICES += zbtlink_zbt-we3526
>
> +define Device/zbtlink_zbt-wg1602-16m
> +  $(Device/dsa-migration)
> +  $(Device/uimage-lzma-loader)
> +  IMAGE_SIZE := 16064k
> +  DEVICE_VENDOR := Zbtlink
> +  DEVICE_MODEL := ZBT-WG1602
> +  DEVICE_VARIANT := 16M
> +  DEVICE_PACKAGES := kmod-sdhci-mt7620 kmod-mt7603 kmod-mt76x2 kmod-usb3 \
> +       kmod-usb-ledtrig-usbport
> +endef
> +TARGET_DEVICES += zbtlink_zbt-wg1602-16m
> +
>  define Device/zbtlink_zbt-wg2626
>    $(Device/dsa-migration)
>    $(Device/uimage-lzma-loader)
> --
> 2.32.0
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list