From patchwork Thu Apr 4 14:28:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stijn Tintel X-Patchwork-Id: 1919840 X-Patchwork-Delegate: stijn@linux-ipv6.be Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=e4pyrj8g; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=linux-ipv6.be header.i=@linux-ipv6.be header.a=rsa-sha256 header.s=502B7754-045F-11E5-BBC5-64595FD46BE8 header.b=aaGThJ3O; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.openwrt.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=patchwork.ozlabs.org) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4V9PCX4kzwz1yYn for ; Fri, 5 Apr 2024 01:29:58 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:To :From:Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=nEl9fbrbJmeSzMwFaM3fU9loxYdu3TiOhiHHbmkVY6E=; b=e4pyrj8gjEO4fB lcAdSBgFFPi8PjPp86y/iA1ho8QhHFSEfallF5VrfVpQZ9DOfTznakehjyXHlu9Xod9ls+ZO4bP5i c50mXnr3CCzwksG9WD1PoQ3/vdzBx95tdSRAvTjF4zGnkKd4n1s5ijM4rGJu8p8fzkKDgfzwR5+ZE +YVG0D9NkeRlNlE6xCG/IpiL3OfnJLgYWHn7u0K9zT9vieHXiDweHoE3jIFWAUsUmasUgz2usPZmS muAgyl1bid3DEoHVDftUnzNuJrHyzb0M2cXGWb8+tgvgrH8+1lNa3ETqfphPXh3UpGLXu4pb4Bj18 +/Y7zKrPU+Yq66aF0weQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rsO4l-0000000322V-15IP; Thu, 04 Apr 2024 14:28:23 +0000 Received: from mail.tintel.eu ([2001:41d0:a:6e77:0:ff:fe5c:6a54]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rsO4g-0000000320i-2Ntx for openwrt-devel@lists.openwrt.org; Thu, 04 Apr 2024 14:28:20 +0000 Received: from localhost (localhost [IPv6:::1]) by mail.tintel.eu (Postfix) with ESMTP id B47C24828E37 for ; Thu, 4 Apr 2024 16:28:11 +0200 (CEST) Received: from mail.tintel.eu ([IPv6:::1]) by localhost (mail.tintel.eu [IPv6:::1]) (amavis, port 10032) with ESMTP id 7aLbb32ewGim for ; Thu, 4 Apr 2024 16:28:10 +0200 (CEST) Received: from localhost (localhost [IPv6:::1]) by mail.tintel.eu (Postfix) with ESMTP id A90B9434DE74 for ; Thu, 4 Apr 2024 16:28:10 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.tintel.eu A90B9434DE74 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-ipv6.be; s=502B7754-045F-11E5-BBC5-64595FD46BE8; t=1712240890; bh=kp9CaiD+QKkp1IodWQUBzAXxVNx6J4k7rQcwMp7zGgg=; h=From:To:Date:Message-ID:MIME-Version; b=aaGThJ3OGqGdnYKpV3sE0mT9miTwhgQhebKfUFI9qTza/FQYXoiY5j7RZNL1/RGjl g9RGcTVuCIBLXpQyHYjSuwj97lsW5Fjy6JO43Eo3PAs8n/83n+fFo74uKN3QkjCGaa o+nvRguYHIBDZz35lOUcJ05t+nAZToqjB0dylYqs= X-Virus-Scanned: amavis at mail.tintel.eu Received: from mail.tintel.eu ([IPv6:::1]) by localhost (mail.tintel.eu [IPv6:::1]) (amavis, port 10026) with ESMTP id nR7ekIvPB0YF for ; Thu, 4 Apr 2024 16:28:10 +0200 (CEST) Received: from taz.sof.bg.adlevio.net (unknown [IPv6:2001:67c:21bc:20::10]) by mail.tintel.eu (Postfix) with ESMTPS id 6425B4828E39 for ; Thu, 4 Apr 2024 16:28:09 +0200 (CEST) From: stijn@linux-ipv6.be To: openwrt-devel@lists.openwrt.org Subject: [PATCH] realtek/rtl839x: Edgecore ECS4100-12PH support Date: Thu, 4 Apr 2024 17:28:06 +0300 Message-ID: <20240404142806.459873-1-stijn@linux-ipv6.be> X-Mailer: git-send-email 2.43.2 MIME-Version: 1.0 X-Rspamd-Pre-Result: action=no action; module=multimap; Matched map: IP_WHITELIST X-Rspamd-Server: skulls X-Rspamd-Queue-Id: 6425B4828E39 X-Spamd-Result: default: False [2.49 / 15.00]; RDNS_NONE(1.00)[]; R_SPF_FAIL(1.00)[-all]; R_MISSING_CHARSET(0.50)[]; MIME_GOOD(-0.10)[text/plain]; ONCE_RECEIVED(0.10)[]; MX_GOOD(-0.01)[]; DIRECT_TO_MX(0.00)[git-send-email 2.43.2]; FROM_NO_DN(0.00)[]; ASN(0.00)[asn:200533, ipnet:2001:67c:21bc::/48, country:BG]; IP_WHITELIST(0.00)[2001:67c:21bc:20::10]; MIME_TRACE(0.00)[0:+]; R_DKIM_NA(0.00)[]; FROM_EQ_ENVFROM(0.00)[] X-Rspamd-Action: no action X-Rspamd-Pre-Result: action=no action; module=multimap; Matched map: IP_WHITELIST X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240404_072819_112071_2C9942BB X-CRM114-Status: GOOD ( 16.58 ) X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Add support for the Edgecore ECS4100-12PH, an 8-port PoE Gigabit Ethernet switch with 2 combo RJ45/SFP and 2 SFP ports. Hardware: * SoC: RTL8392M * RAM: 256MiB * Flash: 32MiB SPI-NOR * Ethernet: * 8x GbE RJ45 PoE (built-in RTL8218B) * 2x GbE RJ45 / SFP combo * 2x SFP * Console: RJ45 RS232 port on front panel * PoE: Nuv [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org Add support for the Edgecore ECS4100-12PH, an 8-port PoE Gigabit Ethernet switch with 2 combo RJ45/SFP and 2 SFP ports. Hardware: * SoC: RTL8392M * RAM: 256MiB * Flash: 32MiB SPI-NOR * Ethernet: * 8x GbE RJ45 PoE (built-in RTL8218B) * 2x GbE RJ45 / SFP combo * 2x SFP * Console: RJ45 RS232 port on front panel * PoE: Nuvoton M0516 + 2x Broadcom BCM59121 PSE Installation via bootloader: * open serial console (baud rate 115200) * interrupt boot process by pressing any key during boot * boot the OpenWrt initramfs: # rtk network on # setenv bootcmd 'mtdparts default;sf probe 0;sf read 0x81000000 0x00200000 0x400000;bootm' # tftpboot 0x8f000000 /tftpboot/openwrt-realtek-rtl839x-edgecore_ecs4100-12ph-initramfs-kernel.bin # bootm * copy openwrt-realtek-rtl839x-edgecore_ecs4100-12ph-squashfs-sysupgrade.bin to /tmp and use sysupgrade to install it: # sysupgrade /tmp/openwrt-realtek-rtl839x-edgecore_ecs4100-12ph-squashfs-sysupgrade.bin Signed-off-by: Stijn Tintel --- I took the DTS from the TIP OpenWiFi project. It was introduced in the initial commit of their Github repo [1]. I added gpio1 and label-mac-device, and changed rtl838x-soc in the compatible line to rtl839x-soc. The info page and photo on svanheule's website suggest RTL8392M, while my units use RTL8393M. My units have the exact same P/N and revision on the PCB as in the photo. Since there appear to be units based on RTL8392M, I'll keep the original DTS filename unless someone tells me otherwise. All 4 SFP slots seem to detect SFP insertion and removal, however I didn't manage to get a link on either of the ports. As I have very limited experience with SFP/fiber on Linux, I'd appreciate some guidance on how to test this properly. [1] https://github.com/Telecominfraproject/wlan-ap/commit/528a778e3864064bfccd8295abd1ec23da778843 --- package/boot/uboot-envtools/files/realtek | 1 + .../realtek/base-files/etc/board.d/02_network | 7 +- .../rtl8392_edgecore_ecs4100-12ph.dts | 305 ++++++++++++++++++ target/linux/realtek/image/rtl839x.mk | 8 + 4 files changed, 318 insertions(+), 3 deletions(-) create mode 100644 target/linux/realtek/dts-5.15/rtl8392_edgecore_ecs4100-12ph.dts diff --git a/package/boot/uboot-envtools/files/realtek b/package/boot/uboot-envtools/files/realtek index cd2446432d..4137133061 100644 --- a/package/boot/uboot-envtools/files/realtek +++ b/package/boot/uboot-envtools/files/realtek @@ -37,6 +37,7 @@ zyxel,gs1900-24hp-v2) [ -n "$idx2" ] && \ ubootenv_add_uci_sys_config "/dev/mtd$idx2" "0x0" "0x1000" "0x10000" ;; +edgecore,ecs4100-12ph|\ tplink,sg2008p-v1|\ tplink,sg2210p-v3|\ tplink,sg2452p-v4) diff --git a/target/linux/realtek/base-files/etc/board.d/02_network b/target/linux/realtek/base-files/etc/board.d/02_network index db1d99f4ec..b41eb59b2b 100644 --- a/target/linux/realtek/base-files/etc/board.d/02_network +++ b/target/linux/realtek/base-files/etc/board.d/02_network @@ -80,6 +80,10 @@ d-link,dgs-1210-28mp-f) ucidef_set_poe 370 "lan8 lan7 lan6 lan5 lan4 lan3 lan2 lan1 lan16 lan15 lan14 lan13 lan12 lan11 lan10 lan9 lan24 lan23 lan22 lan21 lan20 lan19 lan18 lan17" ;; +edgecore,ecs4100-12ph|\ +netgear,gs110tpp-v1) + ucidef_set_poe 130 "$(filter_port_list "$lan_list" "lan9 lan10")" + ;; engenius,ews2910p) ucidef_set_poe 60 "$(filter_port_list "$lan_list" "lan9 lan10")" ;; @@ -89,9 +93,6 @@ hpe,1920-8g-poe-65w) hpe,1920-8g-poe-180w) ucidef_set_poe 180 "$(filter_port_list_reversed "$lan_list" "lan9 lan10")" ;; -netgear,gs110tpp-v1) - ucidef_set_poe 130 "$(filter_port_list "$lan_list" "lan9 lan10")" - ;; netgear,gs110tup-v1) ucidef_set_poe 240 "$(filter_port_list "$lan_list" "lan9 lan10")" ;; diff --git a/target/linux/realtek/dts-5.15/rtl8392_edgecore_ecs4100-12ph.dts b/target/linux/realtek/dts-5.15/rtl8392_edgecore_ecs4100-12ph.dts new file mode 100644 index 0000000000..067bf24f5a --- /dev/null +++ b/target/linux/realtek/dts-5.15/rtl8392_edgecore_ecs4100-12ph.dts @@ -0,0 +1,305 @@ +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "rtl839x.dtsi" + +#include +#include + +/ { + compatible = "edgecore,ecs4100-12ph", "realtek,rtl839x-soc"; + model = "Edgecore ECS4100-12PH Switch"; + + aliases { + label-mac-device = ðernet0; + led-boot = &led_sys; + led-failsafe = &led_sys; + led-running = &led_sys; + led-upgrade = &led_sys; + }; + + chosen { + bootargs = "console=ttyS0,115200"; + }; + + memory@0 { + device_type = "memory"; + reg = <0x0 0x10000000>; + }; + + gpio1: rtl8231-gpio { + compatible = "realtek,rtl8231-gpio"; + #gpio-cells = <2>; + indirect-access-bus-id = <3>; + gpio-controller; + }; + + /* i2c of the left SFP cage: port 9 */ + i2c0: i2c-gpio-0 { + compatible = "i2c-gpio"; + sda-gpios = <&gpio1 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + scl-gpios = <&gpio1 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + i2c-gpio,delay-us = <2>; + #address-cells = <1>; + #size-cells = <0>; + }; + + sfp0: sfp-p9 { + compatible = "sff,sfp"; + i2c-bus = <&i2c0>; + los-gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>; + mod-def0-gpio = <&gpio1 8 GPIO_ACTIVE_LOW>; + }; + + i2c1: i2c-gpio-1 { + compatible = "i2c-gpio"; + sda-gpios = <&gpio1 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + scl-gpios = <&gpio1 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + i2c-gpio,delay-us = <2>; + #address-cells = <1>; + #size-cells = <0>; + }; + + sfp1: sfp-p10 { + compatible = "sff,sfp"; + i2c-bus = <&i2c1>; + los-gpio = <&gpio0 14 GPIO_ACTIVE_HIGH>; + mod-def0-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>; + }; + + i2c2: i2c-gpio-2 { + compatible = "i2c-gpio"; + sda-gpios = <&gpio1 22 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + scl-gpios = <&gpio1 23 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + i2c-gpio,delay-us = <2>; + #address-cells = <1>; + #size-cells = <0>; + }; + + sfp2: sfp-p11 { + compatible = "sff,sfp"; + i2c-bus = <&i2c2>; + los-gpio = <&gpio0 21 GPIO_ACTIVE_HIGH>; + mod-def0-gpio = <&gpio1 24 GPIO_ACTIVE_LOW>; + }; + + i2c3: i2c-gpio-3 { + compatible = "i2c-gpio"; + sda-gpios = <&gpio1 11 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + scl-gpios = <&gpio1 12 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + i2c-gpio,delay-us = <2>; + #address-cells = <1>; + #size-cells = <0>; + }; + + sfp3: sfp-p12 { + compatible = "sff,sfp"; + i2c-bus = <&i2c3>; + los-gpio = <&gpio0 22 GPIO_ACTIVE_HIGH>; + mod-def0-gpio = <&gpio1 13 GPIO_ACTIVE_LOW>; + }; + + i2c4: i2c-gpio-4 { + compatible = "i2c-gpio"; + sda-gpios = <&gpio1 29 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + scl-gpios = <&gpio1 30 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + i2c-gpio,delay-us = <2>; + #address-cells = <1>; + #size-cells = <0>; + + adt7470@2f { + compatible = "adi,adt7470"; + reg = <0x2f>; + }; + + lm75b@48 { + compatible = "nxp,lm75a"; + reg = <0x48>; + }; + + eeprom@506 { + compatible = "atmel,24c32"; + reg = <0x56>; + }; + }; + + watchdog { + compatible = "linux,wdt-gpio"; + gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; + hw_algo = "toggle"; + hw_margin_ms = <1200>; + }; + + reboot@0 { + compatible = "edgecore,reboot"; + gpios = <&gpio1 26 GPIO_ACTIVE_HIGH>; + }; + + fan0: gpio-fan { + #cooling-cells = <2>; + compatible = "gpio-fan"; + gpio-fan,speed-map = <0 0 3000 1>; + gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; + status = "okay"; + }; +}; + +&gpio0 { + poe_enable { + gpio-hog; + gpios = <16 GPIO_ACTIVE_HIGH>; + output-high; + }; + + poe_reset { + gpio-hog; + gpios = <18 GPIO_ACTIVE_HIGH>; + output-high; + }; +}; + +&spi0 { + status = "okay"; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <10000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "u-boot"; + reg = <0x0 0x40000>; + read-only; + }; + partition@100000 { + label = "u-boot-env"; + reg = <0x100000 0x100000>; + read-only; + }; + partition@200000 { + label = "firmware"; + reg = <0x200000 0xdf0000>; + compatible = "openwrt,uimage", "denx,uimage"; + }; + partition@ff0000 { + label = "certificates"; + reg = <0xff0000 0x10000>; + }; + }; + }; +}; + +ðernet0 { + mdio: mdio-bus { + compatible = "realtek,rtl838x-mdio"; + regmap = <ðernet0>; + #address-cells = <1>; + #size-cells = <0>; + + INTERNAL_PHY(0) + INTERNAL_PHY(1) + INTERNAL_PHY(2) + INTERNAL_PHY(3) + INTERNAL_PHY(4) + INTERNAL_PHY(5) + INTERNAL_PHY(6) + INTERNAL_PHY(7) + + phy48: ethernet-phy@48 { + reg = <48>; + compatible = "ethernet-phy-ieee802.3-c22"; + sfp = <&sfp0>; + }; + + phy49: ethernet-phy@49 { + reg = <49>; + compatible = "ethernet-phy-ieee802.3-c22"; + sfp = <&sfp1>; + }; + + phy50: ethernet-phy@50 { + reg = <50>; + compatible = "ethernet-phy-ieee802.3-c22"; + sfp = <&sfp2>; + }; + + phy51: ethernet-phy@51 { + reg = <51>; + compatible = "ethernet-phy-ieee802.3-c22"; + sfp = <&sfp3>; + }; + }; +}; + +&switch0 { + ext_io: ext-io@e4 { + compatible = "realtek,rtl8390-eio", "syscon"; + reg = <0xe4 0x17c>; + + led_sys: sys-led { + active-low; + label = "green:status"; + linux,default-trigger = "default-on"; + }; + }; + ports { + #address-cells = <1>; + #size-cells = <0>; + + SWITCH_PORT(0, 1, qsgmii) + SWITCH_PORT(1, 2, qsgmii) + SWITCH_PORT(2, 3, qsgmii) + SWITCH_PORT(3, 4, qsgmii) + SWITCH_PORT(4, 5, qsgmii) + SWITCH_PORT(5, 6, qsgmii) + SWITCH_PORT(6, 7, qsgmii) + SWITCH_PORT(7, 8, qsgmii) + + port@48 { + reg = <48>; + label = "lan9"; + phy-mode = "sgmii"; + phy-handle = <&phy48>; + managed = "in-band-status"; + }; + + port@49 { + reg = <49>; + label = "lan10"; + phy-mode = "sgmii"; + phy-handle = <&phy49>; + managed = "in-band-status"; + }; + + port@50 { + reg = <50>; + label = "lan11"; + phy-mode = "sgmii"; + phy-handle = <&phy50>; + managed = "in-band-status"; + }; + + port@51 { + reg = <51>; + label = "lan12"; + phy-mode = "sgmii"; + phy-handle = <&phy51>; + managed = "in-band-status"; + }; + + port@52 { + ethernet = <ðernet0>; + reg = <52>; + phy-mode = "qsgmii"; + + fixed-link { + speed = <1000>; + full-duplex; + }; + }; + }; +}; diff --git a/target/linux/realtek/image/rtl839x.mk b/target/linux/realtek/image/rtl839x.mk index 65078e0c44..90a58180fd 100644 --- a/target/linux/realtek/image/rtl839x.mk +++ b/target/linux/realtek/image/rtl839x.mk @@ -9,6 +9,14 @@ define Device/d-link_dgs-1210-52 endef TARGET_DEVICES += d-link_dgs-1210-52 +define Device/edgecore_ecs4100-12ph + SOC := rtl8392 + DEVICE_VENDOR := Edgecore + DEVICE_MODEL := ECS4100-12PH + IMAGE_SIZE := 14336k +endef +TARGET_DEVICES += edgecore_ecs4100-12ph + # When the factory image won't fit anymore, it can be removed. # New installation will be performed booting the initramfs image from # ram and then flashing the sysupgrade image from OpenWrt