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

Enrico Mioso mrkiko.rs at gmail.com
Tue Nov 16 04:40:45 PST 2021


Hello!!

Thanks for your work!

Does the device use ZLoader?
Is a recovery mode available? (maybe document it in the commit)
Does it require LZMA loader for 5.10?

thanks a lot again,

Enrico


On Tue, 16 Nov 2021, Sergey Ryazanov wrote:

> Date: Tue, 16 Nov 2021 11:10:25
> From: Sergey Ryazanov <ryazanov.s.a at gmail.com>
> To: OpenWrt Development List <openwrt-devel at lists.openwrt.org>
> Subject: [PATCH] ramips: add support for Zbtlink ZBT-WG1602
> 
> 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)
> * 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