Re: [PATCH 4/4] arm64: dts: mediatek: Add Cudy WR3000 V1

From: Rafał Miłecki
Date: Wed Feb 21 2024 - 05:19:03 EST


On 21.02.2024 11:11, AngeloGioacchino Del Regno wrote:
Il 21/02/24 08:35, Rafał Miłecki ha scritto:
From: Rafał Miłecki <rafal@xxxxxxxxxx>

Cudy WR3000 V1 is an MT7981B (AKA Filogic 820) based wireless router. It
has 256 MiB of RAM, some LEDs & buttons and (not described yet) 4
Ethernet ports.

Signed-off-by: Rafał Miłecki <rafal@xxxxxxxxxx>
---
  arch/arm64/boot/dts/mediatek/Makefile         |  1 +
  .../dts/mediatek/mt7981b-cudy-wr3000-v1.dts   | 74 +++++++++++++++++++
  2 files changed, 75 insertions(+)
  create mode 100644 arch/arm64/boot/dts/mediatek/mt7981b-cudy-wr3000-v1.dts

diff --git a/arch/arm64/boot/dts/mediatek/Makefile b/arch/arm64/boot/dts/mediatek/Makefile
index 37b4ca3a87c9..96da4ad640aa 100644
--- a/arch/arm64/boot/dts/mediatek/Makefile
+++ b/arch/arm64/boot/dts/mediatek/Makefile
@@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += mt6797-evb.dtb
  dtb-$(CONFIG_ARCH_MEDIATEK) += mt6797-x20-dev.dtb
  dtb-$(CONFIG_ARCH_MEDIATEK) += mt7622-rfb1.dtb
  dtb-$(CONFIG_ARCH_MEDIATEK) += mt7622-bananapi-bpi-r64.dtb
+dtb-$(CONFIG_ARCH_MEDIATEK) += mt7981b-cudy-wr3000-v1.dtb
  dtb-$(CONFIG_ARCH_MEDIATEK) += mt7981b-xiaomi-ax3000t.dtb
  dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-acelink-ew-7886cax.dtb
  dtb-$(CONFIG_ARCH_MEDIATEK) += mt7986a-bananapi-bpi-r3.dtb
diff --git a/arch/arm64/boot/dts/mediatek/mt7981b-cudy-wr3000-v1.dts b/arch/arm64/boot/dts/mediatek/mt7981b-cudy-wr3000-v1.dts
new file mode 100644
index 000000000000..cb36a089518a
--- /dev/null
+++ b/arch/arm64/boot/dts/mediatek/mt7981b-cudy-wr3000-v1.dts
@@ -0,0 +1,74 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+
+/dts-v1/;
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+
+#include "mt7981b.dtsi"
+
+/ {
+    compatible = "cudy,wr3000-v1", "mediatek,mt7981b";
+    model = "Cudy WR3000 V1";
+
+    memory@40000000 {
+        reg = <0 0x40000000 0 0x10000000>;
+        device_type = "memory";
+    };
+
+    keys {
+        compatible = "gpio-keys";
+
+        key-wps {
+            label = "WPS";
+            gpios = <&pio 0 GPIO_ACTIVE_LOW>;
+            linux,code = <KEY_WPS_BUTTON>;
+        };
+
+        key-reset {
+            label = "RESET";
+            gpios = <&pio 1 GPIO_ACTIVE_LOW>;
+            linux,code = <KEY_RESTART>;
+        };
+    };
+
+    leds {
+        compatible = "gpio-leds";
+
+        led-0 {
+            function = LED_FUNCTION_WAN;
+            color = <LED_COLOR_ID_BLUE>;
+            gpios = <&pio 5 GPIO_ACTIVE_LOW>;

Can we please order those properties alphabetically, as it doesn't impact
on human readability in any way?
Just a nitpick, anyway.

color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_WAN;
gpios = <&pio 5 GPIO_ACTIVE_LOW>;

If I understand [1] correctly alphabetical / alpha-numerical order
applies to non-addresses nodes only.

Here I put "function" first as that seemed more important than a color.

Perhaps you could suggest an addition to Devicetree Sources (DTS) Coding
Style or point me to the missed part, please?

[1] https://www.kernel.org/doc/html/next/devicetree/bindings/dts-coding-style.html#order-of-properties-in-device-node



+        };
+
+        led-1 {
+            function = LED_FUNCTION_WLAN_2GHZ;
+            color = <LED_COLOR_ID_BLUE>;
+            gpios = <&pio 6 GPIO_ACTIVE_LOW>;
+        };
+
+        led-2 {
+            function = LED_FUNCTION_WLAN_5GHZ;
+            color = <LED_COLOR_ID_BLUE>;
+            gpios = <&pio 7 GPIO_ACTIVE_LOW>;
+        };
+
+        led-3 {
+            function = LED_FUNCTION_LAN;
+            color = <LED_COLOR_ID_BLUE>;
+            gpios = <&pio 9 GPIO_ACTIVE_LOW>;
+        };
+
+        led-4 {
+            function = LED_FUNCTION_STATUS;
+            color = <LED_COLOR_ID_BLUE>;
+            gpios = <&pio 10 GPIO_ACTIVE_LOW>;
+        };
+
+        led-5 {
+            function = "online";

Uhm, what does "online" mean?

Are you sure that you can't use any of the LED_FUNCTION_XXX standard definitions?

This device has:
1. "WAN Port" LED that indicates "WAN Port has connection" state
2. "Internet" LED that indicates "Connected to the Internet" state

I couldn't find any define that would fit Internet access LED case.