On 29/01/2022 16: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

* 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.

+       };
+
+};
+
+&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.

+
+               };
+       };
+};
+
+&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?

+};
+
+&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.

+
+&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.

gmac1 shouldn't even work right now. I recently had my patch applied upstream to fix it:
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git/commit/?h=staging-next&id=0a93c0d75809582893e82039143591b9265b520e

port@5 is connected to gmac1 (and might share the rgmii bus with an external phy, refer to Documentation/devicetree/bindings/net/dsa/mt7530.txt) but mt7530 DSA driver doesn't support it as a CPU port at the moment, causes kernel panic. port@5 and gmac1 nodes can be dropped altogether.

Arınç

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to