From 5815884c3a2a6d56d4fb0d1019276caea4bba9ba Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Mon, 9 Oct 2023 13:15:52 -0700 Subject: [PATCH] apm821xx: migrate to DSA The qca8k driver is upstream, unlike swconfig. This applies to the mx60 and wndr4700 only. Fixed up LED definitions as well. RTL83xx DSA for WNDAP62300/660 is not working. Signed-off-by: Rosen Penev Link: https://github.com/openwrt/openwrt/pull/14037 Signed-off-by: Robert Marko --- .../apm821xx/base-files/etc/board.d/01_leds | 12 +- .../base-files/etc/board.d/02_network | 3 +- .../etc/uci-defaults/05_fix-compat-version | 2 +- target/linux/apm821xx/dts/meraki-mx60.dts | 240 +++++++++++++++++- .../linux/apm821xx/dts/netgear-wndr4700.dts | 93 ++++++- target/linux/apm821xx/image/nand.mk | 6 +- target/linux/apm821xx/nand/config-default | 12 +- 7 files changed, 328 insertions(+), 40 deletions(-) diff --git a/target/linux/apm821xx/base-files/etc/board.d/01_leds b/target/linux/apm821xx/base-files/etc/board.d/01_leds index c384d24a30..f83888deeb 100644 --- a/target/linux/apm821xx/base-files/etc/board.d/01_leds +++ b/target/linux/apm821xx/base-files/etc/board.d/01_leds @@ -14,14 +14,6 @@ meraki,mr24) ucidef_set_led_wlan "wlan2g_0" "WIFI 2.4GHz-0" "green:wlan-3" "phy0radio" ;; -meraki,mx60) - ucidef_set_led_switch "wan" "WAN" "green:wan" "switch0" "0x20" - ucidef_set_led_switch "lan1" "LAN1" "green:lan-0" "switch0" "0x10" - ucidef_set_led_switch "lan2" "LAN2" "green:lan-1" "switch0" "0x08" - ucidef_set_led_switch "lan3" "LAN3" "green:lan-2" "switch0" "0x04" - ucidef_set_led_switch "lan4" "LAN4" "green:lan-3" "switch0" "0x02" - ;; - netgear,wndap620) ucidef_set_led_switch "lan_act" "LAN (Activity)" "green:activity" "switch0" "0x04" "0x0f" "rx tx" ucidef_set_led_switch "lan_100" "LAN 100Mbps" "amber:lan" "switch0" "0x04" "0x04" "link" @@ -39,8 +31,8 @@ netgear,wndap660) ;; netgear,wndr4700) - ucidef_set_led_switch "wan_green" "WAN (green)" "green:wan" "switch0" "0x20" - ucidef_set_led_netdev "wan_yellow" "WAN (yellow)" "yellow:wan" "eth0.2" "tx rx" + ucidef_set_led_netdev "wan_green" "WAN (green)" "green:wan" "wan" "link" + ucidef_set_led_netdev "wan_yellow" "WAN (yellow)" "yellow:wan" "wan" "tx rx" ;; esac diff --git a/target/linux/apm821xx/base-files/etc/board.d/02_network b/target/linux/apm821xx/base-files/etc/board.d/02_network index 756ea348b4..dfcf4be8b9 100644 --- a/target/linux/apm821xx/base-files/etc/board.d/02_network +++ b/target/linux/apm821xx/base-files/etc/board.d/02_network @@ -20,8 +20,7 @@ netgear,wndap660) ;; meraki,mx60|\ netgear,wndr4700) - ucidef_add_switch "switch0" \ - "0@eth0" "4:lan" "3:lan" "2:lan" "1:lan" "5:wan" + ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan" ;; *) diff --git a/target/linux/apm821xx/base-files/etc/uci-defaults/05_fix-compat-version b/target/linux/apm821xx/base-files/etc/uci-defaults/05_fix-compat-version index d34b4051be..00d3954e5f 100644 --- a/target/linux/apm821xx/base-files/etc/uci-defaults/05_fix-compat-version +++ b/target/linux/apm821xx/base-files/etc/uci-defaults/05_fix-compat-version @@ -5,7 +5,7 @@ meraki,mx60|\ netgear,wndap620|\ netgear,wndap660|\ netgear,wndr4700) - uci set system.@system[0].compat_version="2.0" + uci set system.@system[0].compat_version="3.0" uci commit system ;; esac diff --git a/target/linux/apm821xx/dts/meraki-mx60.dts b/target/linux/apm821xx/dts/meraki-mx60.dts index d9568d9263..6e4df54bd2 100644 --- a/target/linux/apm821xx/dts/meraki-mx60.dts +++ b/target/linux/apm821xx/dts/meraki-mx60.dts @@ -92,23 +92,241 @@ &EMAC0 { status = "okay"; - phy-handle = <&phy0>; + + fixed-link { + speed = <1000>; + full-duplex; + }; mdio { #address-cells = <1>; #size-cells = <0>; - phy0: ethernet-phy@0 { + + phy_port1: phy@0 { compatible = "ethernet-phy-id004d.d034"; reg = <0>; - qca,mib-poll-interval = <500>; - - qca,ar8327-initvals = < - 0x0010 0x40000000 - 0x0624 0x007f7f7f - 0x0004 0x07a00000 /* PAD0_MODE */ - 0x000c 0x01000000 /* PAD6_MODE */ - 0x007c 0x0000007e /* PORT0_STATUS */ - >; + }; + + phy_port2: phy@1 { + compatible = "ethernet-phy-id004d.d034"; + reg = <1>; + }; + + phy_port3: phy@2 { + compatible = "ethernet-phy-id004d.d034"; + reg = <2>; + }; + + phy_port4: phy@3 { + compatible = "ethernet-phy-id004d.d034"; + reg = <3>; + }; + + phy_port5: phy@4 { + compatible = "ethernet-phy-id004d.d034"; + reg = <4>; + }; + + switch0@10 { + compatible = "qca,qca8327"; + reg = <0x10>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + ethernet = <&EMAC0>; + phy-mode = "rgmii-id"; + tx-internal-delay-ps = <2000>; + + fixed-link { + speed = <1000>; + full-duplex; + }; + }; + + port@1 { + reg = <1>; + label = "lan4"; + phy-mode = "internal"; + phy-handle = <&phy_port1>; + + leds { + #address-cells = <1>; + #size-cells = <0>; + + led@0 { + reg = <0>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <0>; + default-state = "keep"; + }; + + led@1 { + reg = <1>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <1>; + default-state = "keep"; + }; + + led@2 { + reg = <2>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <2>; + default-state = "keep"; + }; + }; + }; + + port@2 { + reg = <2>; + label = "lan3"; + phy-mode = "internal"; + phy-handle = <&phy_port2>; + + leds { + #address-cells = <1>; + #size-cells = <0>; + + led@0 { + reg = <0>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <0>; + default-state = "keep"; + }; + + led@1 { + reg = <1>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <1>; + default-state = "keep"; + }; + + led@2 { + reg = <2>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <2>; + default-state = "keep"; + }; + }; + }; + + port@3 { + reg = <3>; + label = "lan2"; + phy-mode = "internal"; + phy-handle = <&phy_port3>; + + leds { + #address-cells = <1>; + #size-cells = <0>; + + led@0 { + reg = <0>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <0>; + default-state = "keep"; + }; + + led@1 { + reg = <1>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <1>; + default-state = "keep"; + }; + + led@2 { + reg = <2>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <2>; + default-state = "keep"; + }; + }; + }; + + port@4 { + reg = <4>; + label = "lan1"; + phy-mode = "internal"; + phy-handle = <&phy_port4>; + + leds { + #address-cells = <1>; + #size-cells = <0>; + + led@0 { + reg = <0>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <0>; + default-state = "keep"; + }; + + led@1 { + reg = <1>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <1>; + default-state = "keep"; + }; + + led@2 { + reg = <2>; + color = ; + function = LED_FUNCTION_LAN; + function-enumerator = <2>; + default-state = "keep"; + }; + }; + }; + + port@5 { + reg = <5>; + label = "wan"; + phy-mode = "internal"; + phy-handle = <&phy_port5>; + + leds { + #address-cells = <1>; + #size-cells = <0>; + + led@0 { + reg = <0>; + color = ; + function = LED_FUNCTION_WAN; + function-enumerator = <0>; + default-state = "keep"; + }; + + led@1 { + reg = <1>; + color = ; + function = LED_FUNCTION_WAN; + function-enumerator = <1>; + default-state = "keep"; + }; + + led@2 { + reg = <2>; + color = ; + function = LED_FUNCTION_WAN; + function-enumerator = <2>; + default-state = "keep"; + }; + }; + }; + }; }; }; }; diff --git a/target/linux/apm821xx/dts/netgear-wndr4700.dts b/target/linux/apm821xx/dts/netgear-wndr4700.dts index 851a3192b3..4ef05937d3 100644 --- a/target/linux/apm821xx/dts/netgear-wndr4700.dts +++ b/target/linux/apm821xx/dts/netgear-wndr4700.dts @@ -350,24 +350,93 @@ &EMAC0 { status = "okay"; - phy-handle = <&phy0>; fifo-entry-size = <10>; + fixed-link { + speed = <1000>; + full-duplex; + }; + mdio { #address-cells = <1>; #size-cells = <0>; - phy0: ethernet-phy@0 { - device_type = "ethernet-phy"; + + phy_port1: phy@0 { reg = <0>; - qca,mib-poll-interval = <500>; - - qca,ar8327-initvals = < - 0x0010 0x40000000 - 0x0624 0x007f7f7f - 0x0004 0x07a00000 /* PAD0_MODE */ - 0x000c 0x01000000 /* PAD6_MODE */ - 0x007c 0x0000007e /* PORT0_STATUS */ - >; + }; + + phy_port2: phy@1 { + reg = <1>; + }; + + phy_port3: phy@2 { + reg = <2>; + }; + + phy_port4: phy@3 { + reg = <3>; + }; + + phy_port5: phy@4 { + reg = <4>; + }; + + switch0@10 { + compatible = "qca,qca8327"; + reg = <0x10>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + label = "cpu"; + ethernet = <&EMAC0>; + phy-mode = "rgmii-id"; + tx-internal-delay-ps = <2000>; + + fixed-link { + speed = <1000>; + full-duplex; + }; + }; + + port@1 { + reg = <1>; + label = "lan4"; + phy-mode = "internal"; + phy-handle = <&phy_port1>; + }; + + port@2 { + reg = <2>; + label = "lan3"; + phy-mode = "internal"; + phy-handle = <&phy_port2>; + }; + + port@3 { + reg = <3>; + label = "lan2"; + phy-mode = "internal"; + phy-handle = <&phy_port3>; + }; + + port@4 { + reg = <4>; + label = "lan1"; + phy-mode = "internal"; + phy-handle = <&phy_port4>; + }; + + port@5 { + reg = <5>; + label = "wan"; + phy-mode = "internal"; + phy-handle = <&phy_port5>; + }; + }; }; }; }; diff --git a/target/linux/apm821xx/image/nand.mk b/target/linux/apm821xx/image/nand.mk index 69eb386126..92bdaa87d0 100644 --- a/target/linux/apm821xx/image/nand.mk +++ b/target/linux/apm821xx/image/nand.mk @@ -50,8 +50,9 @@ define Device/meraki_mx60 KERNEL := kernel-bin | libdeflate-gzip | MuImage-initramfs gzip IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata UBINIZE_OPTS := -E 5 - DEVICE_COMPAT_VERSION := 2.0 + DEVICE_COMPAT_VERSION := 3.0 DEVICE_COMPAT_MESSAGE := uboot's bootcmd has to be updated to support standard multi-image uImages. \ + Network swconfig configuration cannot be upgraded to DSA. \ Upgrade via sysupgrade mechanism is not possible. endef TARGET_DEVICES += meraki_mx60 @@ -88,6 +89,9 @@ endef TARGET_DEVICES += netgear_wndap660 define Device/netgear_wndr4700 + DEVICE_COMPAT_VERSION := 3.0 + DEVICE_COMPAT_MESSAGE := Network swconfig configuration cannot be upgraded to DSA. \ + Upgrade via sysupgrade mechanism is not possible. DEVICE_VENDOR := NETGEAR DEVICE_MODEL := Centria N900 WNDR4700 DEVICE_ALT0_VENDOR := NETGEAR diff --git a/target/linux/apm821xx/nand/config-default b/target/linux/apm821xx/nand/config-default index 7070b34b93..ab7d790870 100644 --- a/target/linux/apm821xx/nand/config-default +++ b/target/linux/apm821xx/nand/config-default @@ -1,5 +1,3 @@ -CONFIG_AT803X_PHY=y -CONFIG_AR8216_PHY=y # CONFIG_SATA_DWC_OLD_DMA is not set CONFIG_IKAREM=y # CONFIG_PCI_DISABLE_COMMON_QUIRKS is not set @@ -26,6 +24,15 @@ CONFIG_MTD_UBI=y CONFIG_MTD_UBI_BEB_LIMIT=20 CONFIG_MTD_UBI_BLOCK=y CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_NET_DEVLINK=y +CONFIG_NET_DSA=y +CONFIG_NET_DSA_QCA8K=y +CONFIG_NET_DSA_QCA8K_LEDS_SUPPORT=y +CONFIG_NET_DSA_TAG_QCA=y +CONFIG_NET_SWITCHDEV=y +CONFIG_PHYLINK=y +CONFIG_QCA83XX_PHY=y +CONFIG_QCOM_NET_PHYLIB=y CONFIG_UBIFS_FS=y CONFIG_RTL8366_SMI=y CONFIG_RTL8367B_PHY=y @@ -33,4 +40,3 @@ CONFIG_SENSORS_LM90=y CONFIG_SENSORS_TC654=y CONFIG_SWCONFIG=y CONFIG_SWCONFIG_LEDS=y - -- 2.30.2