1
1
openwrt/target/linux
Jonas Jelonek a4965dbf48
realtek: migrate PCS to fwnode_pcs provider/consumer API
PCS driver registers each SerDes as an fwnode_pcs provider in probe;
the resolver returns the cached or freshly-allocated rtpcs_link for
the requested (sds, link_idx) cell. DSA glue stops calling
rtpcs_create directly, drops .mac_select_pcs, and instead populates
phylink_config.num_available_pcs / fill_available_pcs from each
port's pcs-handle in phylink_get_caps. The rtl838x_port.pcs pointer
becomes a has_pcs bool populated at port probe via fwnode_property_
present, since nothing assigns the actual phylink_pcs anymore but the
"does this port use a PCS?" checks elsewhere still need a presence
flag.

Without .mac_select_pcs, phylink_major_config only searches the
pcs_list when state->interface is set in phylink_config.pcs_interfaces
(drivers/net/phy/phylink.c:1378). Populate it per port whenever the
port has a pcs-handle, listing the SerDes-routable interface modes for
each SoC variant -- without this, pcs_config / pcs_link_up are never
called and the SerDes is left unconfigured.

pcs_get_state still needs the MAC port number to index per-port link
status registers. Recover it at probe via rtpcs_map_links: walk the
sibling switch's ethernet-ports subtree (same backwards topology
lookup the sibling MDIO driver does for phy-handle), and for every
port whose pcs-handle resolves to one of our SerDes, store the port's
reg in sds->link_port[]. The resolver consults link_port[] when
allocating rtpcs_link and fails with -ENODEV if a consumer requested
a link the map step didn't record. Avoids a driver-side port_base
table that would have to encode per-SoC SerDes-to-port wiring (and
would silently break on non-contiguous variants); the DT is the
single source of truth.

Kconfig selects FWNODE_PCS.

Assisted-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Link: https://github.com/openwrt/openwrt/pull/23539
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
2026-05-31 12:52:41 +02:00
..
airoha airoha: Fix max RX size configuration 2026-05-31 12:12:49 +02:00
apm821xx apm821xx: slightly improve routing performance 2026-05-25 10:16:50 +02:00
armsr armsr: enable 6.18 as a testing kernel 2026-05-25 22:12:04 +02:00
at91 kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
ath79 ath79: add Cisco Meraki Z1 2026-05-28 10:38:36 +02:00
bcm27xx kernel: bump 6.12 to 6.12.91 2026-05-25 21:02:13 +02:00
bcm47xx bcm47xx: base-files: hack sysinfo to allow ASU sysupgrades 2026-05-25 23:27:34 +02:00
bcm53xx bcm53xx: enable 6.18 testing kernel 2026-05-24 20:36:09 +02:00
bcm4908 kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
bmips treewide: use _scoped for loop 2026-04-16 21:17:43 +02:00
d1 d1: drop support for 6.12 2026-04-21 16:13:37 +02:00
econet econet: add EN751627 subtarget and Zyxel EX3301-T0 board 2026-05-14 21:12:46 +02:00
gemini gemini/kernel: drop v6.12 and default to v6.18 2026-04-17 18:01:06 +02:00
generic generic: 6.18: update MxL862xx DSA switch driver 2026-05-27 19:01:52 +01:00
imx imx: cortexa9: ventana, fix profiles names in profiles.json 2026-04-23 01:13:36 +02:00
ipq40xx kernel: bump 6.18 to 6.18.33 2026-05-25 21:04:53 +02:00
ipq806x ipq806x: fix caldata loading for mr42/mr52 2026-05-18 21:14:22 +02:00
ixp4xx ixp4xx/kernel: drop v6.12 and default to v6.18 2026-04-16 08:35:38 +02:00
kirkwood kirkwood: switch to 6.18 kernel 2026-04-27 09:39:21 +02:00
lantiq kernel: bump 6.18 to 6.18.33 2026-05-25 21:04:53 +02:00
layerscape generic: 6.12: backport PCS standalone feature 2026-05-13 00:19:29 +02:00
loongarch64 loongarch64: add upstream dwmac-loongson patches for 2K3000/3B6000M 2026-05-26 00:58:05 +02:00
malta malta: drop 6.12 support 2026-05-07 18:15:54 +02:00
mediatek mediatek: add support for netis EAP930 V1 2026-05-26 00:50:00 +02:00
microchipsw kernel: sync target configs after JUMP_LABEL changes 2026-05-11 10:33:46 +02:00
mpc85xx mpc85xx: unify wrapper address of simple image devices 2026-05-05 14:09:38 +02:00
mvebu mvebu: cortexa53: uDPU/eDPU: update active bootscript as well 2026-05-26 19:35:42 +02:00
mxs mxs: drop support for 6.12 2026-04-16 14:55:36 +02:00
octeon octeon: drop v6.12 and default to v6.18 2026-05-23 19:13:22 +02:00
omap kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
pistachio pistachio: drop support for 6.12 2026-04-18 12:02:48 +02:00
qoriq qoriq: drop kernel config for 6.12 2026-05-24 23:43:54 +02:00
qualcommax qualcommax: ipq50xx: add support for ELECOM WRC-X3000GST2 2026-05-26 18:56:17 +02:00
qualcommbe qualcommbe: 6.18: refresh config 2026-05-28 10:47:03 +02:00
ramips ramips: add support for ELECOM WMC-C2533GST 2026-05-29 08:27:50 +02:00
realtek realtek: migrate PCS to fwnode_pcs provider/consumer API 2026-05-31 12:52:41 +02:00
rockchip rockchip: enable maskrom button for NanoPi R5C/R5S 2026-05-29 08:29:03 +02:00
sifiveu sifiveu: drop support for 6.12 2026-04-19 13:21:21 +02:00
siflower kernel: sync target configs after JUMP_LABEL changes 2026-05-11 10:33:46 +02:00
starfive kernel: bump 6.18 to 6.18.33 2026-05-25 21:04:53 +02:00
stm32 kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
sunxi sunxi: add T113-S3 support 2026-05-09 11:19:22 +02:00
tegra kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
uml kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
x86 x86: onie-installer: wire up sysupgrade via ONIE install mode 2026-05-23 17:23:54 +02:00
zynq kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
Makefile linux: fix missing default packages in profiles.json 2024-11-17 19:29:06 +01:00