From patchwork Sun Jan 8 16:03:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harm Berntsen X-Patchwork-Id: 1722949 X-Patchwork-Delegate: hauke@hauke-m.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.openwrt.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=nCRATfpe; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NqhwW0JtJz23dq for ; Mon, 9 Jan 2023 03:14:18 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type:List-Help: Reply-To:List-Archive:List-Unsubscribe:List-Subscribe:From:List-Post:List-Id: Message-ID:MIME-Version:References:In-Reply-To:Date:Subject:To:Cc: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=yj1thLPDbQXwxFjhmoxoBIqqGAGaw4pqvoa5tH6mjXw=; b=nCRATfpeXjRGKgOtMRBKwGQHI9 bo4t9WWPBW5KCvNNAIYQB+bIikSTzcdGD7y7/rKvCSngbGb/Uf3vHQIg+Ill5QGgtI2PObJxI425m xbGWcN30jAnSZ2WlxkBFPsDWXBPVQ/GxrgVHkJvGRox/lOCho47BOp9eree7gojtHxIEZdmEhbJMz 5RDCs1tzWQuic3KrSe1eWQbIdtlChXJu9Li5T1iQk+EUje4HQKgey3BS6btBiB+vQWgTDQmLhnCE/ sqkLhThe3rYF6pYPd5QnZychrbW1NXnNPDQHpeedVIAOcUWsj3N3mhPJmaHY8xx7E5MKeGuSU3cVC QlfXeaZA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pEYFv-00EH3A-S9; Sun, 08 Jan 2023 16:10:43 +0000 To: Hauke Mehrtens , =?utf-8?b?QXLEsW7DpyDDnE5BTA==?= Subject: [PATCH v4] ramips: mt7621: Add Arcadyan WE420223-99 support Date: Sun, 8 Jan 2023 17:03:25 +0100 In-Reply-To: References: MIME-Version: 1.0 Message-ID: List-Id: OpenWrt Development List List-Post: X-Patchwork-Original-From: Harm Berntsen via openwrt-devel From: Harm Berntsen Precedence: list X-Mailman-Version: 2.1.34 X-BeenThere: openwrt-devel@lists.openwrt.org List-Subscribe: , List-Unsubscribe: , List-Archive: Reply-To: Harm Berntsen List-Help: Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org The sender domain has a DMARC Reject/Quarantine policy which disallows sending mailing list messages using the original "From" header. To mitigate this problem, the original message has been wrapped automatically by the mailing list software. The Arcadyan WE420223-99 is a WiFi AC simultaneous dual-band access point distributed as Experia WiFi by KPN in the Netherlands. It features two ethernet ports and 2 internal antennas. Specifications -------------- SOC : Mediatek MT7621AT ETH : Two 1 gigabit ports, built into the SOC WIFI : MT7615DN BUTTON: Reset BUTTON: WPS LED : Power (green+red) LED : WiFi (green+blue) LED : WPS (green+red) LED : Followme (green+red) Power : 12 VDC, 1A barrel plug Winbond variant: RAM : Winbond W631GG6MB12J, 1GBIT DDR3 SDRAM Flash : Winbond W25Q256JVFQ, 256Mb SPI U-Boot: 1.1.3 (Nov 23 2017 - 16:40:17), Ralink 5.0.0.1 Macronix variant: RAM : Nanya NT5CC64M16GP-DI, 1GBIT DDR3 SDRAM Flash : MX25l25635FMI-10G, 256Mb SPI U-Boot: 1.1.3 (Dec 4 2017 - 11:37:57), Ralink 5.0.0.1 Serial ------ The serial port needs a TTL/RS-232 3V3 level converter! The Serial setting is 57600-8-N-1. The board has an unpopulated 2.54mm straight pin header. The pinout is: VCC (the square), RX, TX, GND. Installation ------------ See the Wiki page [1] for more details, it comes down to: 1. Open the device, take off the heat sink 2. Connect the SPI flash chip to a flasher, e.g. a Raspberry Pi. Also connect the RESET pin for stability (thanks @FPSUsername for reporting) 3. Make a backup in case you want to revert to stock later 4. Flash the squashfs-factory.trx file to offset 0x50000 of the flash 5. Ensure the bootpartition variable is set to 0 in the U-Boot environment located at 0x30000 Note that the U-Boot is password protected, this can optionally be removed. See the forum [2] for more details. MAC Addresses(stock) -------------------- +----------+------------------+-------------------+ | use | address | example | +----------+------------------+-------------------+ | Device | label | 00:00:00:11:00:00 | | Ethernet | + 3 | 00:00:00:11:00:03 | | 2g | + 0x020000f00001 | 02:00:00:01:00:01 | | 5g | + 1 | 00:00:00:11:00:01 | +----------+------------------+-------------------+ The label address is stored in ASCII in the board_data partition Notes ----- - This device has a dual-boot partition scheme, but OpenWRT will claim both partitions for more storage space. Known issues ------------ - 2g MAC address does not match stock due to missing support for that in macaddr_add - Only the power LED is configured by default References ---------- [1] https://openwrt.org/inbox/toh/arcadyan/astoria/we420223-99 [2] https://forum.openwrt.org/t/adding-openwrt-support-for-arcadyan-we420223-99-kpn-experia-wifi/132653 Signed-off-by: Harm Berntsen --- Changed in v4: - Fix uboot-envtools config. Well spotted Hauke! - Update mt7621.mk: remove dependency on kmod-mt7615e, akin to 9a07895729 (mt76: add stand-alone MT7622 firmware package, 2022-12-17) package/boot/uboot-envtools/files/ramips | 3 + .../dts/mt7621_arcadyan_we420223-99.dts | 219 ++++++++++++++++++ target/linux/ramips/image/mt7621.mk | 25 ++ .../mt7621/base-files/etc/board.d/02_network | 8 + .../etc/hotplug.d/ieee80211/10_fix_wifi_mac | 9 + .../mt7621/base-files/lib/upgrade/platform.sh | 1 + 6 files changed, 265 insertions(+) create mode 100644 target/linux/ramips/dts/mt7621_arcadyan_we420223-99.dts diff --git a/package/boot/uboot-envtools/files/ramips b/package/boot/uboot-envtools/files/ramips index 372b8a49e2..6086682783 100644 --- a/package/boot/uboot-envtools/files/ramips +++ b/package/boot/uboot-envtools/files/ramips @@ -21,6 +21,9 @@ engenius,esr600h|\ sitecom,wlr-4100-v1-002) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x1000" ;; +arcadyan,we420223-99) + ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x1000" "0x1000" + ;; allnet,all0256n-4m|\ allnet,all0256n-8m|\ allnet,all5002|\ diff --git a/target/linux/ramips/dts/mt7621_arcadyan_we420223-99.dts b/target/linux/ramips/dts/mt7621_arcadyan_we420223-99.dts new file mode 100644 index 0000000000..99de770707 --- /dev/null +++ b/target/linux/ramips/dts/mt7621_arcadyan_we420223-99.dts @@ -0,0 +1,219 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "mt7621.dtsi" + +#include +#include +#include + +/ { + model = "Arcadyan WE420223-99"; + compatible = "arcadyan,we420223-99", "mediatek,mt7621-soc"; + + aliases { + led-boot = &led_power_green; + led-failsafe = &led_power_red; + led-running = &led_power_green; + led-upgrade = &led_wps_green; + led-wifi = &led_wifi_green; + }; + + chosen { + bootargs = "console=ttyS0,57600 ubi.mtd=5 root=/dev/ubiblock0_0"; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + gpios = <&gpio 3 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + + wps { + label = "wps"; + gpios = <&gpio 18 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + leds { + compatible = "gpio-leds"; + + led_power_green: power_green { + label = "green:power"; + gpios = <&gpio 42 GPIO_ACTIVE_LOW>; + color = ; + function = LED_FUNCTION_POWER; + default-state = "on"; + }; + + led_power_red: power_red { + label = "red:power"; + gpios = <&gpio 4 GPIO_ACTIVE_LOW>; + color = ; + function = LED_FUNCTION_FAULT; + }; + + led_wifi_blue: wifi_blue { + label = "blue:wifi"; + gpios = <&gpio 41 GPIO_ACTIVE_LOW>; + color = ; + function = LED_FUNCTION_WLAN; + }; + + led_wifi_green: wifi_green { + label = "green:wifi"; + gpios = <&gpio 43 GPIO_ACTIVE_LOW>; + color = ; + function = LED_FUNCTION_WLAN; + }; + + led_wps_red: wps_red { + label = "red:wps"; + gpios = <&gpio 45 GPIO_ACTIVE_LOW>; + color = ; + function = LED_FUNCTION_WPS; + }; + + led_wps_green: wps_green { + label = "green:wps"; + gpios = <&gpio 46 GPIO_ACTIVE_LOW>; + color = ; + function = LED_FUNCTION_WPS; + }; + + led_followme_r: followme_red { + label = "red:followme"; + gpios = <&gpio 47 GPIO_ACTIVE_LOW>; + color = ; + }; + + led_followme_g: followme_green { + label = "green:followme"; + gpios = <&gpio 48 GPIO_ACTIVE_LOW>; + color = ; + }; + }; +}; + +&spi0 { + status = "okay"; + + flash@0 { + compatible = "jedec,spi-nor"; + + reg = <0>; + spi-max-frequency = <70000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "ALL"; + reg = <0x0 0x2000000>; + read-only; + }; + + partition@1 { + label = "Bootloader"; + reg = <0x0 0x30000>; + read-only; + }; + + partition@30000 { + label = "Config"; + reg = <0x30000 0x10000>; + }; + + factory: partition@40000 { + label = "Factory"; + reg = <0x40000 0x10000>; + read-only; + }; + + partition@50000 { + label = "kernel"; + reg = <0x50000 0x1f60000>; + }; + + partition@490000 { + label = "rootfs"; + reg = <0x490000 0x1b20000>; + }; + + partition@1000000 { + label = "Kernel2"; + reg = <0x1000000 0xfb0000>; + }; + + partition@1440000 { + label = "RootFS2"; + reg = <0x1440000 0xb70000>; + }; + + partition@1fb0000 { + label = "glbcfg"; + reg = <0x1fb0000 0x10000>; + read-only; + }; + + partition@1fc0000 { + label = "board_data"; + reg = <0x1fc0000 0x10000>; + read-only; + }; + + partition@1fd0000 { + label = "glbcfg2"; + reg = <0x1fd0000 0x10000>; + read-only; + }; + + partition@1fe0000 { + label = "board_data2"; + reg = <0x1fe0000 0x10000>; + read-only; + }; + }; + }; +}; + +&xhci { + status = "disabled"; +}; + +&switch0 { + ports { + port@1 { + status = "okay"; + label = "swp1"; + }; + }; +}; + +&gmac1 { + status = "okay"; + label = "swp0"; + phy-handle = <ðphy0>; +}; + +&mdio { + ethphy0: ethernet-phy@0 { + reg = <0>; + }; +}; + +&pcie { + status = "okay"; +}; + +&pcie0 { + mt76@0,0 { + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x0000>; + }; +}; diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk index 2269833e48..2b32e0cbcd 100644 --- a/target/linux/ramips/image/mt7621.mk +++ b/target/linux/ramips/image/mt7621.mk @@ -187,6 +187,31 @@ define Device/ampedwireless_ally-00x19k endef TARGET_DEVICES += ampedwireless_ally-00x19k +define Device/arcadyan_we420223-99 + $(Device/dsa-migration) + $(Device/uimage-lzma-loader) + DEVICE_VENDOR := Arcadyan + DEVICE_MODEL := WE420223-99 + DEVICE_ALT0_VENDOR := KPN + DEVICE_ALT0_MODEL := Experia WiFi + IMAGE_SIZE := 32128k + KERNEL_SIZE := 4352k + UBINIZE_OPTS := -E 5 + BLOCKSIZE := 64k + PAGESIZE := 1 + SUBPAGESIZE := 1 + VID_HDR_OFFSET := 64 + KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | \ + uImage none | arcadyan-trx 0x746f435d + KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | loader-kernel | \ + uImage none + IMAGES += factory.trx + IMAGE/factory.trx := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | check-size + IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata + DEVICE_PACKAGES := kmod-mt7615-firmware +endef +TARGET_DEVICES += arcadyan_we420223-99 + define Device/asiarf_ap7621-001 $(Device/dsa-migration) IMAGE_SIZE := 16000k diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network index 9a8e385a31..362d8a70e7 100644 --- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network @@ -8,6 +8,9 @@ ramips_setup_interfaces() local board="$1" case $board in + arcadyan,we420223-99) + ucidef_set_interface_lan "swp0 swp1" + ;; ampedwireless,ally-00x19k|\ asus,rp-ac56|\ asus,rp-ac87|\ @@ -150,6 +153,11 @@ ramips_setup_macs() wan_mac=$(mtd_get_mac_ascii hwconfig HW.WAN.MAC.Address) label_mac=$lan_mac ;; + arcadyan,we420223-99) + label_mac=$(mtd_get_mac_ascii board_data mac) + lan_mac=$label_mac + ucidef_set_network_device_mac eth0 $(macaddr_add "$label_mac" 3) + ;; asus,rt-ac65p|\ asus,rt-ac85p) wan_mac=$(mtd_get_mac_ascii u-boot-env et1macaddr) diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac index 161bd942db..7f1481d503 100644 --- a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac +++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac @@ -10,6 +10,15 @@ PHYNBR=${DEVPATH##*/phy} board=$(board_name) case "$board" in + arcadyan,we420223-99) + if [ "$PHYNBR" = "0" ]; then + mac24=$(macaddr_add "$(get_mac_label)" "0xf00001") + echo -n "$mac24" > /sys${DEVPATH}/macaddress + elif [ "$PHYNBR" = "1" ]; then + mac5=$(macaddr_add "$(get_mac_label)" 1) + echo -n "$mac5" > /sys${DEVPATH}/macaddress + fi + ;; beeline,smartbox-flash) hw_mac_addr=$(macaddr_add $(mtd_get_mac_encrypted_arcadyan "board_data") 1) [ "$PHYNBR" = "0" ] && echo -n "$hw_mac_addr" > /sys${DEVPATH}/macaddress diff --git a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh index 53ff9c016c..5a5e1c95bc 100755 --- a/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh @@ -52,6 +52,7 @@ platform_do_upgrade() { case "$board" in ampedwireless,ally-00x19k|\ ampedwireless,ally-r1900k|\ + arcadyan,we420223-99|\ asus,rt-ac65p|\ asus,rt-ac85p|\ asus,rt-ax53u|\