Hi, > -----Original Message----- > From: openwrt-devel [mailto:[email protected]] > On Behalf Of Sander Vanheule > Sent: Sonntag, 14. Februar 2021 11:03 > To: [email protected] > Cc: Sander Vanheule <[email protected]>; Stijn Segers > <[email protected]> > Subject: [PATCH] ramips: mt7621: add TP-Link EAP235-Wall support > > The TP-Link EAP235-Wall is a wall-mounted, PoE-powered AC1200 access > point with four gigabit ethernet ports. > > When connecting to the device's serial port, it is strongly advised to use an > isolated UART adapter. This prevents linking different power domains > created by the PoE power supply, which may damage your devices. > > The device's U-Boot supports saving modified environments with `saveenv`. > However, there is no u-boot-env partition, and saving modifications will > cause the partition table to be overwritten. This is not an issue for running > OpenWrt, but will prevent the vendor FW from functioning properly. > > Device specifications: > * SoC: MT7621DAT > * RAM: 128MiB > * Flash: 16MiB SPI-NOR > * Wireless 2.4GHz (MT7603EN): b/g/n, 2x2 > * Wireless 5GHz (MT7613BEN): a/n/ac, 2x2 > * Ethernet: 4× GbE > * Back side: ETH0, PoE PD port > * Bottom side: ETH1, ETH2, ETH3 > * Single white device LED > * LED button, reset button (available for failsafe) > * PoE pass-through on port ETH3 (enabled with GPIO) > > Datasheet of the flash chip specifies a maximum frequency of 33MHz, but > that didn't work. 20MHz gives no errors with reading (flash dump) or writing > (sysupgrade). > > Device mac addresses: > Stock firmware uses the same MAC address for ethernet (on device label) > and 2.4GHz wireless. The 5GHz wireless address is incremented by one. > This address is stored in the 'info' ('default-mac') partition at an offset > of 8 > bytes. > From OEM ifconfig: > eth a4:2b:b0:...:88 > ra0 a4:2b:b0:...:88 > rai0 a4:2b:b0:...:89 > > Flashing instructions: > * Enable SSH in the web interface, and SSH into the target device > * run `cliclientd stopcs`, this should return "success" > * upload the factory image via the web interface > > Debricking: > U-boot can be interrupted during boot, serial console is 57600 baud, 8n1 This > allows installing a sysupgrade image, or fixing the device in another way. > * Access serial header from the side of the board, close to ETH3, > pin-out is (1:TX, 2:RX, 3:GND, 4:3.3V), with pin 1 closest to ETH3. > * Interrupt bootloader by holding '4' during boot, which drops the > bootloader into its shell > * Change default 'serverip' and 'ipaddr' variables (optional) > * Download initramfs with `tftpboot`, and boot image with `bootm` > # tftpboot 84000000 openwrt-initramfs.bin > # bootm > > Hardware was kindly provided for porting by Stijn Segers. > > Tested-by: Stijn Segers <[email protected]> > Signed-off-by: Sander Vanheule <[email protected]> > --- > Known issues with this device: > The MT7613BE radio is currently not well supported by the mt7615 driver: > - The EEPROM blob is not recognized, so (Tx) power levels aren't useful. > Patch sent to linux-wireless: > https://lore.kernel.org/linux-wireless/20210202085953.9564-1- > [email protected]/ > - DFS support is incomplete (known issue for MT7613) > - Radio stops responding after a while when idling, reboot required to > bring it to life. Reported by Stijn, appears to be introduced by > 2021-01-27 bump of mt76.
Please add the known issues to the preserved part of the commit message, I
think it's valuable information also for others.
>
> kern.err kernel: [ 7099.554067] mt7615e 0000:02:00.0: Message 73 (seq 1)
> timeout
>
> .../dts/mt7621_tplink_eap235-wall-v1.dts | 172 ++++++++++++++++++
> target/linux/ramips/image/mt7621.mk | 12 ++
> .../mt7621/base-files/etc/board.d/02_network | 3 +
> tools/firmware-utils/src/tplink-safeloader.c | 29 +++
> 4 files changed, 216 insertions(+)
> create mode 100644 target/linux/ramips/dts/mt7621_tplink_eap235-wall-
> v1.dts
>
> diff --git a/target/linux/ramips/dts/mt7621_tplink_eap235-wall-v1.dts
> b/target/linux/ramips/dts/mt7621_tplink_eap235-wall-v1.dts
> new file mode 100644
> index 0000000000..d63623dcbd
> --- /dev/null
> +++ b/target/linux/ramips/dts/mt7621_tplink_eap235-wall-v1.dts
> @@ -0,0 +1,172 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later #include "mt7621.dtsi"
I'd put an empty line between SPDX and first include.
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/leds/common.h>
> +
> +/ {
> + compatible = "tplink,eap235-wall-v1", "mediatek,mt7621-soc";
> + model = "TP-LINK EAP235-Wall v1";
"TP-Link" for consistency.
> +
> + aliases {
> + label-mac-device = &gmac0;
> + led-boot = &led_status;
> + led-failsafe = &led_status;
> + led-running = &led_status;
> + led-upgrade = &led_status;
> + };
> +
> + leds {
> + compatible = "gpio-leds";
> +
> + led_status: status {
> + label = "white:status";
> + color = <LED_COLOR_ID_WHITE>;
> + function = LED_FUNCTION_STATUS;
Note that color/function do not work right now, so label is actually required.
I'm fine with keeping both color/function and label, though.
> + 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 = "tp-link:poe-
> passthrough:enable";
I'd consider to drop the prefix, although we have no policy on this, so it's
pure matter of taste.
Actually, I'd drop this led-label-mimic entirely, and just call it
"poe-passthrough".
> + gpio-export,output = <0>;
> + gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
> + };
> + };
> +};
state_default is missing?
> +
> +&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 = <0x00000 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 = "tplink,firmware";
> + label = "firmware";
> + reg = <0x0a0000 0xd20000>;
> + };
> +
> + partition@dc0000 {
> + label = "user-config";
> + reg = <0xdc0000 0x030000>;
> + read-only;
> + };
> +
> + /* 0xdf0000 - 0xf30000 unused */
> +
> + partition@f30000 {
> + label = "mutil-log";
> + reg = <0xf30000 0x080000>;
> + read-only;
> + };
> +
> + partition@fb0000 {
> + label = "oops";
> + reg = <0xfb0000 0x040000>;
> + read-only;
> + };
> +
> + radio: partition@ff0000 {
> + label = "radio";
> + reg = <0xff0000 0x010000>;
> + read-only;
> + };
> + };
> + };
> +};
> +
> +&pcie {
> + status = "okay";
> +};
> +
> +&pcie0 {
> + mt76@0,0 {
wifi@0,0
> + reg = <0x0000 0 0 0 0>;
> + mediatek,mtd-eeprom = <&radio 0x0>;
> + mtd-mac-address = <&info 0x8>;
> + };
> +};
> +
> +&pcie1 {
> + mt76@0,0 {
> + reg = <0x0000 0 0 0 0>;
> + mediatek,mtd-eeprom = <&radio 0x8000>;
> + ieee80211-freq-limit = <5000000 6000000>;
> + mtd-mac-address = <&info 0x8>;
> + mtd-mac-address-increment = <1>;
> + };
> +};
> +
> +&gmac0 {
> + mtd-mac-address = <&info 0x8>;
> +};
> +
> +&switch0 {
> + ports {
> + port@0 {
> + status = "okay";
> + label = "lan0";
Is the zero-based indexing founded on some labels? If not, one-based would be
the common way to do it.
> + };
> +
> + port@1 {
> + status = "okay";
> + label = "lan3";
> + };
> +
> + port@2 {
> + status = "okay";
> + label = "lan2";
> + };
> +
> + port@3 {
> + status = "okay";
> + label = "lan1";
> + };
> + };
> +};
> diff --git a/target/linux/ramips/image/mt7621.mk
> b/target/linux/ramips/image/mt7621.mk
> index 203ca1b908..6efda9eb90 100644
> --- a/target/linux/ramips/image/mt7621.mk
> +++ b/target/linux/ramips/image/mt7621.mk
> @@ -1114,6 +1114,18 @@ define Device/totolink_x5000r endef
> TARGET_DEVICES += totolink_x5000r
>
> +define Device/tplink_eap235-wall-v1
dsa-migration needs to be added for new devices as well, so all mt7621 start
with compat version 1.1.
> + $(Device/tplink-safeloader)
> + DEVICE_MODEL := EAP235-WALL
In DTS model it's EAP235-Wall ...
Best
Adrian
> + DEVICE_VARIANT := v1
> + DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e kmod-mt7663-
> firmware-ap
> + TPLINK_BOARD_ID := EAP235-WALL-V1
> + IMAGE_SIZE := 13440k
> + IMAGE/factory.bin := append-rootfs | tplink-safeloader factory | \
> + pad-extra 128
> +endef
> +TARGET_DEVICES += tplink_eap235-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 46cb65ffbe..89e679be7c 100755
> --- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
> +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
> @@ -55,6 +55,9 @@ ramips_setup_interfaces()
> mikrotik,routerboard-760igs)
> ucidef_set_interfaces_lan_wan "lan2 lan3 lan4 lan5" "wan
> sfp"
> ;;
> + tplink,eap235-wall-v1)
> + ucidef_set_interface_lan "lan0 lan1 lan2 lan3"
> + ;;
> ubnt,edgerouter-x)
> ucidef_set_interfaces_lan_wan "eth1 eth2 eth3 eth4" "eth0"
> ;;
> diff --git a/tools/firmware-utils/src/tplink-safeloader.c b/tools/firmware-
> utils/src/tplink-safeloader.c
> index b9dfad51a6..da73e1bf30 100644
> --- a/tools/firmware-utils/src/tplink-safeloader.c
> +++ b/tools/firmware-utils/src/tplink-safeloader.c
> @@ -1447,6 +1447,35 @@ static struct device_info boards[] = {
> .last_sysupgrade_partition = "file-system"
> },
>
> + /** Firmware layout for the EAP235-Wall v1 */
> + {
> + .id = "EAP235-WALL-V1",
> + .support_list =
> + "SupportList:\r\n"
> + "EAP235-Wall(TP-Link|UN|AC1200-D):1.0\r\n",
> + .part_trail = PART_TRAIL_NONE,
> + .soft_ver = NULL,
> + .soft_ver_compat_level = 1,
> +
> + .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, 0xd20000},
> + {"user-config", 0xdc0000, 0x30000},
> + {"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 EAP245 v1 */
> {
> .id = "EAP245-V1",
> --
> 2.29.2
>
>
> _______________________________________________
> openwrt-devel mailing list
> [email protected]
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
openpgp-digital-signature.asc
Description: PGP signature
_______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
