On Fri, 2022-02-04 at 20:05 +0200, Stijn Tintel wrote: > On 29/01/2022 15:03, Sander Vanheule wrote: > > Hi Stijn, > > > > Thanks for the patch, been looking forward to this! > > > > On Fri, 2022-01-28 at 00:00 +0200, Stijn Tintel wrote: > > > Add support for the TP-Link EAP615-Wall, an AX1800 Wall Plate WiFi 6 AP. > > > The device is very similar to the TP-Link EAP235-Wall. > > > > > > Hardware: > > > * SoC: MediaTek MT7621AT > > > * RAM: 128MiB > > > * Flash: 16MiB SPI-NOR > > > * Ethernet: 4x GbE > > > * Back: ETH0 (PoE-PD) > > > * Bottom: ETH1, ETH2, ETH3 (PoE-PT) > > PT > passthrough > Not sure what else PoE-PT can refer to. I like that it's the same style > as PoE-PD.
AFAICT the PD (powered device) and PSE (power sourcing equipment) names are part of the PoE standard, while 'PT' isn't. > > > > > * WiFi: MT7915E 2.4/5 GHz 2T2R > > > * LEDS: 1x white > > > * Buttons: 1x LED, 1x reset > > > > > > Stock firmware uses a random MAC address for ethernet. OpenWrt uses the > > > MAC address that is on the device label for ethernet and the wireless > > > interfaces. MAC address must not be incremented, as this will cause MAC > > > address conflicts in case you have two devices with consecutive MAC > > > addresses. Instead, different locally administered addresses will be > > > generated automatically, based on the MAC on the label. > > > > > > Installation via stock firmware: > > > * Enable SSH in the TP-Link web interface > > > * SSH to the device > > > * Run `cliclientd stopcs` > > > * Upload the OpenWrt factory image via the TP-Link webinterface > > > > > > Installation via bootloader: > > > * Solder TTL header. Pinout: 1: TX, 2: RX, 3: GND, 4: VCC, with pin 1 > > > closest to ETH1. Baud rate 115200 > > > * Interrupt boot process by holding a key during boot > > > * Boot the OpenWrt initramfs: > > > # tftpboot 0x84000000 > > > openwrt-ramips-mt7621-tplink_eap615-wall-v1-initramfs- > > > kernel.bin > > > # bootm > > > * Copy openwrt-ramips-mt7621-tplink_eap615-wall-v1-squashfs-sysupgrade.bin > > > to /tmp and use sysupgrade to install it > > > > > > Thanks to Sander Vanheule for his work on the EAP235-Wall, which made > > > adding support for the EAP615-Wall very easy. > > > > > > Signed-off-by: Stijn Tintel <st...@linux-ipv6.be> > > > --- > > > .../dts/mt7621_tplink_eap615-wall-v1.dts | 250 ++++++++++++++++++ > > > target/linux/ramips/image/mt7621.mk | 12 + > > > .../mt7621/base-files/etc/board.d/02_network | 3 +- > > > tools/firmware-utils/patches/999-eap615.patch | 55 ++++ > > > 4 files changed, 319 insertions(+), 1 deletion(-) > > > create mode 100644 > > > target/linux/ramips/dts/mt7621_tplink_eap615-wall-v1.dts > > > create mode 100644 tools/firmware-utils/patches/999-eap615.patch > > > > > > diff --git a/target/linux/ramips/dts/mt7621_tplink_eap615-wall-v1.dts > > > b/target/linux/ramips/dts/mt7621_tplink_eap615-wall-v1.dts > > > new file mode 100644 > > > index 0000000000..fd5a68973b > > > --- /dev/null > > > +++ b/target/linux/ramips/dts/mt7621_tplink_eap615-wall-v1.dts > > > @@ -0,0 +1,250 @@ > > > +// SPDX-License-Identifier: GPL-2.0-or-later > > > + > > > +#include "mt7621.dtsi" > > > + > > > +#include <dt-bindings/gpio/gpio.h> > > > +#include <dt-bindings/input/input.h> > > > +#include <dt-bindings/leds/common.h> > > > + > > > +/ { > > > + compatible = "tplink,eap615-wall-v1", "mediatek,mt7621-soc"; > > > + model = "TP-Link EAP615-Wall v1"; > > > + > > > + aliases { > > > + label-mac-device = &gmac0; > > > + led-boot = &led_status; > > > + led-failsafe = &led_status; > > > + led-running = &led_status; > > > + led-upgrade = &led_status; > > > + }; > > > + > > > + chosen { > > > + bootargs = "console=ttyS0,115200"; > > > + }; > > > + > > > + leds { > > > + compatible = "gpio-leds"; > > > + > > > + led_status: status { > > > + label = "white:status"; > > > + color = <LED_COLOR_ID_WHITE>; > > > + function = LED_FUNCTION_STATUS; > > > + gpios = <&gpio 12 GPIO_ACTIVE_LOW>; > > > + }; > > > + }; > > > + > > > + keys { > > > + compatible = "gpio-keys"; > > > + > > > + led { > > > + label = "led"; > > > + gpios = <&gpio 10 GPIO_ACTIVE_LOW>; > > > + linux,code = <KEY_LIGHTS_TOGGLE>; > > > + }; > > > + > > > + reset { > > > + label = "reset"; > > > + gpios = <&gpio 8 GPIO_ACTIVE_LOW>; > > > + linux,code = <KEY_RESTART>; > > > + }; > > > + }; > > > + > > > + gpio-export { > > > + compatible = "gpio-export"; > > > + > > > + poe_passthrough { > > > + gpio-export,name = "poe-passthrough"; > > > + gpio-export,output = <0>; > > > + gpios = <&gpio 7 GPIO_ACTIVE_HIGH>; > > > + }; > > > + }; > > > + > > > + ethernet@1e100000 { > > > + reg = <0x1e100000 0xe000>; > > > + > > > + mac@0 { > > > + phy-mode = "rgmii"; > > > + > > > + fixed-link { > > > + pause; > > > + speed = <1000>; > > > + }; > > > + }; > > > + > > > + mac@1 { > > > + status = "okay"; > > > + > > > + phy-mode = "rgmii"; > > > + > > > + fixed-link { > > > + full-duplex; > > > + pause; > > > + speed = <1000>; > > > + }; > > > + }; > > This node is labeled as "gmac1" in mt7621.dtsi, so you don't need to > > redefine > > /ethernet@1e100000/mac@1 here to be able to modify the node. Use &gmac1 > > {...} like you > > do > > with spi0. > > > > You can also drop the references to ethernet@1e100000 and mac@0, since you > > don't > > modify > > any of their properties. > > mt7621.dsti: > reg = <0x1e100000 0x10000>; > > eap615: > reg = <0x1e100000 0xe000>; > > Moved to ðernet and dropped the rest. Also dropped speed from mac@0, > as the dtsi sets this to 1000 already. > So it has the same offset, but a smaller region size. Why is it smaller, and which one is correct? > > > > > + }; > > > + > > > +}; > > > + > > > +&spi0 { > > > + status = "okay"; > > > + > > > + flash@0 { > > > + compatible = "jedec,spi-nor"; > > > + reg = <0>; > > > + spi-max-frequency = <20000000>; > > > + > > > + partitions { > > > + compatible = "fixed-partitions"; > > > + #address-cells = <1>; > > > + #size-cells = <1>; > > > + > > > + partition@0 { > > > + label = "u-boot"; > > > + reg = <0x0 0x80000>; > > > + read-only; > > > + }; > > > + > > > + partition@80000 { > > > + label = "partition-table"; > > > + reg = <0x80000 0x10000>; > > > + read-only; > > > + }; > > > + > > > + info: partition@90000 { > > > + label = "product-info"; > > > + reg = <0x90000 0x10000>; > > > + read-only; > > > + }; > > > + > > > + partition@a0000 { > > > + compatible = "denx,fit"; > > > + label = "firmware"; > > > + reg = <0x0a0000 0xcf0000>; > > > + }; > > > + > > > + partition@d90000 { > > > + label = "user-config"; > > > + reg = <0xd90000 0x60000>; > > > + read-only; > > > + }; > > > + > > > + partition@f30000 { > > > + label = "mutil-log"; > > > + reg = <0xf30000 0x80000>; > > > + read-only; > > > + }; > > > + > > > + partition@fb0000 { > > > + label = "oops"; > > > + reg = <0xfb0000 0x040000>; > > > + read-only; > > > + }; > > > + > > > + radio: partition@ff0000 { > > > + label = "radio"; > > > + reg = <0xff0000 0x010000>; > > > + read-only; > > > + }; > > > + > > > + partition@1000000 { > > > + status = "disabled"; > > > + > > > + label = "full"; > > > + reg = <0x0 0x1000000>; > > > + read-only; > > > + }; > > Is this the partition layout as defined in partition-table, or the runtime > > one from > > /proc/mtd? We've noticed they can be different, and the runtime one is > > actually the > > one > > that should be used in order to not erase the stock configuration. > I honestly don't recall, and I don't have an unmodified EAP615-Wall > anymore. Can anyone get me that runtime OEM partition layout? > > > + > > > + }; > > > + }; > > > +}; > > > + > > > +&state_default { > > > + gpio { > > > + groups = "uart2", "uart3"; > > > + function = "gpio"; > > > + }; > > > +}; > > > + > > > +&pcie { > > > + status = "okay"; > > > + > > > + bus-range = <0x00 0xff>; > > This is the default value according to > > Documentation/devicetree/bindings/pci/host- > > generic- > > pci.txt. Any particular reason you're specifying it here explicitly? > OEM DTS leftover; removed. > > > > > +}; > > > + > > > +&pcie1 { > > > + wifi@0,0 { > > > + compatible = "mediatek,mt76"; > > > + reg = <0x0000 0 0 0 0>; > > > + mediatek,mtd-eeprom = <&radio 0x0>; > > > + nvmem-cells = <&macaddr_info_8>; > > > + nvmem-cell-names = "mac-address"; > > > + }; > > > +}; > > > + > > > +&pcie2 { > > > + status = "disabled"; > > > +}; > > Is pcie0 used for anything? Otherwise it can probably also be disabled, or > > you can > > drop > > this block to make the device DTS smaller. > > Disabling pcie0 breaks WiFi. > Disabling pcie2 avoids this message during boot: > > [ 1.324025] mt7621-pci 1e140000.pcie: pcie2 no card, disable it (RST > & CLK) Thanks for checking. > > > > > + > > > +&gmac0 { > > > + nvmem-cells = <&macaddr_info_8>; > > > + nvmem-cell-names = "mac-address"; > > > +}; > > Ah, so you *are* modifying gmac0! Maybe put the &gmac1 section here too, > > then. > > > > > + > > > +&switch0 { > > > + compatible = "mediatek,mt7530"; > > > + ports { > > > + port@0 { > > > + status = "okay"; > > > + label = "lan0"; > > > + }; > > > + > > > + port@1 { > > > + status = "okay"; > > > + label = "lan3"; > > > + }; > > > + > > > + port@2 { > > > + status = "okay"; > > > + label = "lan2"; > > > + }; > > > + > > > + port@3 { > > > + status = "okay"; > > > + label = "lan1"; > > > + }; > > > + > > > + port@5 { > > > + phy-mode = "rgmii"; > > > + reg = <5>; > > > + > > > + /* > > > + fixed-link { > > > + full-duplex; > > > + speed = <1000>; > > > + }; > > > + */ > > Does the CPU connect to the switch by both gmac-s? If so, leave a comment > > so this can > > be > > enabled once support for this arrives. Otherwise I think you could drop > > port@5. You > > also > > enable gmac1, but AFAICT it doesn't seem to be connected to anything. > OEM DTS leftover; removed. > > > > > + }; > > > + > > > + port@6 { > > > + phy-mode = "rgmii"; > > > + ethernet = <&gmac0>; > > > + > > > + fixed-link { > > > + pause; > > > + speed = <1000>; > > > + }; > > > + }; > > > + > > > + }; > > > +}; > > > + > > > +&info { > > > + compatible = "nvmem-cells"; > > > + #address-cells = <1>; > > > + #size-cells = <1>; > > > + > > > + macaddr_info_8: macaddr@8 { > > > + reg = <0x8 0x6>; > > > + }; > > > +}; > > This could also just go into the definition of partition@90000 itself, but > > either way > > is > > fine for me. > Prefer to keep as-is, like in the DTS of its sibling. > > > > > diff --git a/target/linux/ramips/image/mt7621.mk > > > b/target/linux/ramips/image/mt7621.mk > > > index a461c57f15..617c8adc37 100644 > > > --- a/target/linux/ramips/image/mt7621.mk > > > +++ b/target/linux/ramips/image/mt7621.mk > > > @@ -1461,6 +1461,18 @@ define Device/tplink_eap235-wall-v1 > > > endef > > > TARGET_DEVICES += tplink_eap235-wall-v1 > > > > > > +define Device/tplink_eap615-wall-v1 > > > + $(Device/tplink-safeloader) > > Missing $(Device/dsa-migration). > This is a new device, so there isn't anything to migrate. This sounds weird? > > > > > + DEVICE_MODEL := EAP615-Wall > > > + DEVICE_VARIANT := v1 > > > + DEVICE_PACKAGES := kmod-mt7915e > > > + TPLINK_BOARD_ID := EAP615-WALL-V1 > > > + KERNEL := kernel-bin | lzma | fit lzma $$(KDIR)/image-$$(firstword > > > $$(DEVICE_DTS)).dtb | pad-to 64k > > > + KERNEL_INITRAMFS := kernel-bin | lzma | fit lzma > > > $$(KDIR)/image-$$(firstword > > > $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k > > Is the 'pad-to 64k' required? mtdsplit can split at arbitrary boundaries, > > so I think > > the > > padding here isn't very useful. The other device with FIT images on mt7621 > > also don't > > add > > padding to the kernel. > Removed. > > > > > + IMAGE_SIZE := 13248k > > > +endef > > > +TARGET_DEVICES += tplink_eap615-wall-v1 > > > + > > > define Device/tplink_re350-v1 > > > $(Device/dsa-migration) > > > $(Device/tplink-safeloader) > > > 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 52e0b6b572..3e34ede3be 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 > > > @@ -59,7 +59,8 @@ ramips_setup_interfaces() > > > mikrotik,routerboard-760igs) > > > ucidef_set_interfaces_lan_wan "lan2 lan3 lan4 lan5" "wan > > > sfp" > > > ;; > > > - tplink,eap235-wall-v1) > > > + tplink,eap235-wall-v1|\ > > > + tplink,eap615-wall-v1) > > > ucidef_set_interface_lan "lan0 lan1 lan2 lan3" > > > ;; > > > ubnt,edgerouter-x) > > > diff --git a/tools/firmware-utils/patches/999-eap615.patch > > > b/tools/firmware- > > > utils/patches/999-eap615.patch > > > new file mode 100644 > > > index 0000000000..2348bbce24 > > > --- /dev/null > > > +++ b/tools/firmware-utils/patches/999-eap615.patch > > > @@ -0,0 +1,55 @@ > > > +From 41c9244ee6347f00f8c85117d17d9d2429a25999 Mon Sep 17 00:00:00 2001 > > > +From: Stijn Tintel <st...@linux-ipv6.be> > > > +Date: Thu, 27 Jan 2022 11:35:54 +0200 > > > +Subject: [PATCH] tplink-safeloader: EAP615-Wall v1 support > > > + > > > +Signed-off-by: Stijn Tintel <st...@linux-ipv6.be> > > This is a patch against firmware-utils, so it should be submitted > > separately for that > > repository. > Yes, just keeping all changes together for review purposes. Have you > reviewed this part? If so I'll push it to firmware-utils already. The patch looks good to me, but you don't have a commit message yet. > > > > > > Best, > > Sander > > > > > +--- > > > + src/tplink-safeloader.c | 31 +++++++++++++++++++++++++++++++ > > > + 1 file changed, 31 insertions(+) > > > + > > > +diff --git a/src/tplink-safeloader.c b/src/tplink-safeloader.c > > > +index 0565dcc..009b2c4 100644 > > > +--- a/src/tplink-safeloader.c > > > ++++ b/src/tplink-safeloader.c > > > +@@ -1703,6 +1703,37 @@ static struct device_info boards[] = { > > > + .last_sysupgrade_partition = "file-system" > > > + }, > > > + > > > ++ /** Firmware layout for the EAP615-Wall v1 */ > > > ++ { > > > ++ .id = "EAP615-WALL-V1", > > > ++ .soft_ver = SOFT_VER_DEFAULT, > > > ++ .soft_ver_compat_level = 1, > > > ++ .support_list = > > > ++ "SupportList:\r\n" > > > ++ "EAP615-Wall(TP-Link|UN|AX1800-D):1.0\r\n" > > > ++ "EAP615-Wall(TP-Link|CA|AX1800-D):1.0\r\n" > > > ++ "EAP615-Wall(TP-Link|JP|AX1800-D):1.0\r\n", > > > ++ .part_trail = PART_TRAIL_NONE, > > > ++ > > > ++ .partitions = { > > > ++ {"fs-uboot", 0x00000, 0x80000}, > > > ++ {"partition-table", 0x80000, 0x02000}, > > > ++ {"default-mac", 0x90000, 0x01000}, > > > ++ {"support-list", 0x91000, 0x00100}, > > > ++ {"product-info", 0x91100, 0x00400}, > > > ++ {"soft-version", 0x92000, 0x00100}, > > > ++ {"firmware", 0xa0000, 0xcf0000}, > > > ++ {"user-config", 0xd90000, 0x60000}, > > > ++ {"mutil-log", 0xf30000, 0x80000}, > > > ++ {"oops", 0xfb0000, 0x40000}, > > > ++ {"radio", 0xff0000, 0x10000}, > > > ++ {NULL, 0, 0} > > > ++ }, > > > ++ > > > ++ .first_sysupgrade_partition = "os-image", > > > ++ .last_sysupgrade_partition = "file-system" > > > ++ }, > > > ++ > > > + /** Firmware layout for the TL-WA1201 v2 */ > > > + { > > > + .id = "TL-WA1201-V2", > > > +-- > > > +2.34.1 > > > + > > Thanks, > Stijn > > > _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel