1
1
openwrt/target/linux
Jonas Jelonek 12120ba3a0 realtek: pcs: rtl93xx: share IP mode register write
RTL930x and RTL931x program the same physical SerDes IP mode field
(page 0x1f reg 0x09, bits 11:7 hold the 5-bit mode value, bit 6 is
the "force mode" enable), but did so via two unrelated code paths:
RTL930x kept the force bit separate from the value in a __set helper,
while RTL931x had it baked into each switch-case constant.

Add a shared rtpcs_93xx_sds_set_ip_mode() that takes the rtpcs_sds_mode
enum, looks up the 5-bit value from the existing sds_hw_mode_vals
table, and writes value | force-bit in one place.

Convert both variants:
 - RTL930x: drop __rtpcs_930x_sds_set_ip_mode and the manual table
   lookup; __rtpcs_930x_sds_get_ip_mode is replaced by the shared
   rtpcs_93xx_sds_get_ip_mode, which reverse-looks the raw register
   value up in sds_hw_mode_vals[] and returns the matching enum
   rtpcs_sds_mode (or -ENOENT for an unmapped raw value). The
   wrapper that orchestrates power, CMU, state machine and rx-reset
   around the mode write is renamed to rtpcs_930x_sds_apply_ip_mode
   for clarity.
 - RTL931x: drop the per-mode switch and the leftover pr_info debug
   print; rename the symerr-clear + MAC-OFF + IP-mode-write wrapper
   to rtpcs_931x_sds_apply_ip_mode.

rtpcs_930x_sds_reconfigure_to_pll() now goes through the new shared
get/set helpers: it saves the current IP mode as an enum on entry
and restores it via the enum-taking setter after the PLL reconfigure.
This changes behavior by mapping the raw mode setting through the
hardware mode table, effectively blocking unknown modes which might be
set by bootloader or somewhere else. This is intended and might uncover
unknown behavior instead of hiding it.

As a side-effect, QSGMII is now properly set too for RTL931x. Most code
paths anyway already had support for this mode, but it was missing from
the mode setting.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23213
Signed-off-by: Robert Marko <robimarko@gmail.com>
2026-05-07 12:21:18 +02:00
..
airoha kernel: bump 6.12 to 6.12.81 2026-04-30 01:31:44 +02:00
apm821xx kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
armsr kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
at91 kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
ath79 ath79: add calibration variant for TP-Link EAP225-Wall v2 2026-05-07 11:12:15 +02:00
bcm27xx kernel: bump 6.12 to 6.12.83 2026-04-30 01:31:44 +02:00
bcm47xx kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
bcm53xx bcm53xx: add ramdisk to FEATURES 2026-04-29 09:56:37 +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 treewide: use _scoped for loop 2026-04-16 21:17:43 +02:00
gemini gemini/kernel: drop v6.12 and default to v6.18 2026-04-17 18:01:06 +02:00
generic treewide: remove unused archs leftovers 2026-05-07 10:58:47 +02:00
imx imx: cortexa9: ventana, fix profiles names in profiles.json 2026-04-23 01:13:36 +02:00
ipq40xx kernel: bump 6.12 to 6.12.82 2026-04-30 01:31:44 +02:00
ipq806x chromium: Add #{address,size}-cells to /firmware 2026-04-16 14:18:45 +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 lantiq: enable 6.18 testing kernel 2026-04-23 15:54:47 +02:00
layerscape layerscape: armv8_64b: traverse ten64-mtd fix ASU support 2026-04-16 20:38:51 +02:00
loongarch64 kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
malta malta: restore CONFIG_PAGE_BLOCK_MAX_ORDER=10 for 6.18 2026-04-11 18:11:03 +02:00
mediatek mediatek: add support for ELECOM WRC-X6000GSD 2026-05-03 01:14:11 +02:00
microchipsw microchipsw: use upstreamed QSGMII soft reset patch 2026-05-05 13:11:14 +02:00
mpc85xx mpc85xx: unify wrapper address of simple image devices 2026-05-05 14:09:38 +02:00
mvebu mvebu: use libdeflate for gzip 2026-04-23 20:36:17 +02:00
mxs mxs: drop support for 6.12 2026-04-16 14:55:36 +02:00
octeon octeon: enable 6.18 testing kernel 2026-04-26 10:03:37 +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 kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
qualcommax ipq50xx: add label-mac-device to Linksys MX5500 2026-04-29 10:07:09 +02:00
qualcommbe kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
ramips ramips: remove mediatek,firmware-eeprom 2026-05-05 13:14:07 +02:00
realtek realtek: pcs: rtl93xx: share IP mode register write 2026-05-07 12:21:18 +02:00
rockchip rockchip: update irq affinity for RK3528 devices 2026-04-26 14:28:31 +02:00
sifiveu sifiveu: drop support for 6.12 2026-04-19 13:21:21 +02:00
siflower generic: backport MSI affinity support for DW PCIe 2026-04-26 14:28:31 +02:00
starfive starfive: 6.18: update LED aliases 2026-05-06 22:42:25 +02:00
stm32 kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
sunxi sunxi: drop support for 6.12 2026-04-28 11:27:46 +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: enable HYPERV_VMBUS 2026-04-26 10:27:47 +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