[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