]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
arm64: dts: broadcom: bcmbca: bcm4908: Add DT for Zyxel EX3510-B
authorSam Edwards <cfsworks@gmail.com>
Wed, 9 Oct 2024 21:54:54 +0000 (14:54 -0700)
committerFlorian Fainelli <florian.fainelli@broadcom.com>
Tue, 17 Dec 2024 19:39:21 +0000 (11:39 -0800)
Zyxel EX3510-B is a WiFi 6 capable home gateway (family) based on the
BCM4906 SoC, with 512MiB of RAM and 512MiB of NAND flash. WiFi support
consists of a BCM6710 and a BCM6715 attached to separate PCIe buses.

Add an initial devicetree for this system, with support for:
- Onboard UART (per base dtsi)
- USB (2.0 only; superspeed devices are treated as high-speed due to an
    unknown cause)
- Both buttons (rear reset, front WPS)
- Almost all LEDs:
  - Power (red/green)
  - Internet (red/green)
  - WAN (green)
  - LAN (green; anode is connected to GPIO 13 so currently
      nonfunctioning)
  - USB (green)
  - WPS button (red/green)
  - Absent in DT: There are 2.4GHz/5.0GHz WiFi status LEDs connected to
      the WiFi chips instead of the SoC.
- NAND flash
- Embedded Ethernet switch
- Factory-programmed Ethernet MAC address

WiFi cannot be enabled at this time due to Linux lacking drivers for
both the PCIe controllers and the PCIe WiFi peripherals.

Signed-off-by: Sam Edwards <CFSworks@gmail.com>
Link: https://lore.kernel.org/r/20241009215454.1449508-3-CFSworks@gmail.com
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
arch/arm64/boot/dts/broadcom/bcmbca/Makefile
arch/arm64/boot/dts/broadcom/bcmbca/bcm4906-zyxel-ex3510b.dts [new file with mode: 0644]

index 27741b71ba9e57742897599bef7a8e778f9884d1..9a8461d91c8c4b0c4f06b374909ee88ab203cc22 100644 (file)
@@ -2,6 +2,7 @@
 dtb-$(CONFIG_ARCH_BCMBCA) += \
                                bcm4906-netgear-r8000p.dtb \
                                bcm4906-tplink-archer-c2300-v1.dtb \
+                               bcm4906-zyxel-ex3510b.dtb \
                                bcm4908-asus-gt-ac5300.dtb \
                                bcm4908-netgear-raxe500.dtb \
                                bcm94908.dtb \
diff --git a/arch/arm64/boot/dts/broadcom/bcmbca/bcm4906-zyxel-ex3510b.dts b/arch/arm64/boot/dts/broadcom/bcmbca/bcm4906-zyxel-ex3510b.dts
new file mode 100644 (file)
index 0000000..54e453b
--- /dev/null
@@ -0,0 +1,196 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+#include "bcm4906.dtsi"
+
+/ {
+       compatible = "zyxel,ex3510b", "brcm,bcm4906", "brcm,bcm4908", "brcm,bcmbca";
+       model = "Zyxel EX3510-B";
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x20000000>;
+       };
+
+       gpio-keys-polled {
+               compatible = "gpio-keys-polled";
+               poll-interval = <100>;
+
+               key-wps {
+                       label = "WPS";
+                       linux,code = <KEY_WPS_BUTTON>;
+                       gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
+               };
+
+               key-reset {
+                       label = "Reset";
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&leds {
+       pinctrl-0 = <&pins_led_0_a>, <&pins_led_2_a>, <&pins_led_3_a>,
+                   <&pins_led_4_a>, <&pins_led_10_a>, <&pins_led_12_a>,
+                   <&pins_led_14_a>, <&pins_led_15_a>, <&pins_led_21_a>;
+       pinctrl-names = "default";
+
+       led@0 {
+               reg = <0x0>;
+               function = LED_FUNCTION_POWER;
+               color = <LED_COLOR_ID_RED>;
+       };
+
+       led@2 {
+               reg = <0x2>;
+               function = LED_FUNCTION_WAN_ONLINE;
+               color = <LED_COLOR_ID_GREEN>;
+       };
+
+       led@3 {
+               reg = <0x3>;
+               function = LED_FUNCTION_WAN_ONLINE;
+               color = <LED_COLOR_ID_RED>;
+       };
+
+       led@4 {
+               reg = <0x4>;
+               function = LED_FUNCTION_USB;
+               color = <LED_COLOR_ID_GREEN>;
+               trigger-sources = <&ohci_port1>, <&ohci_port2>,
+                                 <&ehci_port1>, <&ehci_port2>,
+                                 <&xhci_port1>, <&xhci_port2>;
+               linux,default-trigger = "usbport";
+       };
+
+       led@a {
+               reg = <0xa>;
+               function = LED_FUNCTION_POWER;
+               color = <LED_COLOR_ID_GREEN>;
+               linux,default-trigger = "default-on";
+       };
+
+       led@c {
+               reg = <0xc>;
+               function = LED_FUNCTION_LAN;
+               color = <LED_COLOR_ID_GREEN>;
+               active-low;
+       };
+
+       led@e {
+               reg = <0xe>;
+               function = LED_FUNCTION_WPS;
+               color = <LED_COLOR_ID_GREEN>;
+               active-low;
+       };
+
+       led@f {
+               reg = <0xf>;
+               function = LED_FUNCTION_WPS;
+               color = <LED_COLOR_ID_RED>;
+               active-low;
+       };
+
+       led@15 {
+               reg = <0x15>;
+               function = LED_FUNCTION_WAN;
+               color = <LED_COLOR_ID_GREEN>;
+               active-low;
+       };
+};
+
+&enet {
+       nvmem-cells = <&base_mac_addr>;
+       nvmem-cell-names = "mac-address";
+};
+
+&usb_phy {
+       brcm,ioc = <1>;
+       brcm,ipp = <1>;
+       status = "okay";
+};
+
+&ehci {
+       status = "okay";
+};
+
+&ohci {
+       status = "okay";
+};
+
+&xhci {
+       status = "okay";
+};
+
+&ports {
+       port@0 {
+               label = "lan1";
+       };
+
+       port@1 {
+               label = "lan2";
+       };
+
+       port@2 {
+               label = "lan3";
+       };
+
+       port@3 {
+               label = "lan4";
+       };
+
+       port@7 {
+               reg = <7>;
+               phy-mode = "internal";
+               phy-handle = <&phy12>;
+               label = "wan";
+       };
+};
+
+&nand_controller {
+       status = "okay";
+};
+
+&nandcs {
+       brcm,nand-oob-sector-size = <27>;
+       nand-ecc-strength = <8>;
+       nand-ecc-step-size = <512>;
+       nand-on-flash-bbt;
+
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       partitions {
+               compatible = "brcm,bcm4908-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       compatible = "nvmem-cells";
+                       label = "cferom";
+                       reg = <0x0 0x100000>;
+                       read-only;
+
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       base_mac_addr: mac@106a0 {
+                               reg = <0x106a0 0x6>;
+                       };
+               };
+
+               partition@100000 {
+                       compatible = "brcm,bcm4908-firmware";
+                       reg = <0x100000 0x5f80000>;
+               };
+
+               partition@6080000 {
+                       compatible = "brcm,bcm4908-firmware";
+                       reg = <0x6080000 0x5f80000>;
+               };
+       };
+};