openwrt/target/linux
Markus Stockhausen 7a7ee72c4d realtek: mdio: add SerDes driver
Until now the SerDes access is realized with some helper functions
in the mdio bus. These were moved around a lot and had no real home.
End that temporary solution to move them where they belong.

The target design for the different Realtek drivers is as follows:

- dsa driver manages switch
- pcs driver manages SerDes on high level (to be developed)
- mdio driver manages SerDes on low level (this commit)

This driver adds the low level SerDes access via mdio. For debugging
purposes the user can interact with the SerDes in different ways.

First, there is a debug interface in
/sys/kernel/debug/realtek_otto_serdes/serdes.X/registers.
With that a dump of all registers can be shown.

> cat /sys/kernel/debug/realtek_otto_serdes/serdes.4/registers
Back SDS  4:   00   01   02   03   04   05   06   07   08
SDS        : 0C03 0F00 7060 7106 074D 0EBF 0F0F 0359 5248
SDS_EXT    : 0000 0000 85FA 8C6D 5CCC 0000 20D8 0003 79AA
...

Second, one can read/write registers via the mmd functions of the
mdio command line tool. Important to know: The registers are accessed
on the vendor specific MDIO_MMD_VEND1 device address (=30). Additionally
the SerDes page and register are concatenated into the the mmd register.
Top 8 bits are SerDes page and bottom 8 bits are SerDEs register.
E.g.

- mmd 0x0206 : SerDes page 0x02, SerDes register 0x06
- mmd 0x041f : SerDes page 0x04, SerDes register 0x1f

Read register 0x02 on page 0x03 of SerDes 0
> mdio realtek-serdes-mdio mmd 0:30 raw 0x0302

Write register 0x12 on page 0x02 of SerDes 1
> mdio realtek-serdes-mdio mmd 1:30 raw 0x0212 0x2222

For now this driver is only defined in the devicetree and activated
in the kernel build. There is no current consumer but at least
the debugging interface is available. Cleanup of the currently used
SerDes functions will come later.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20062
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-09-17 19:23:15 +02:00
..
airoha kernel: 6.12: refresh patches for airoha/econet on 6.12.45 2025-09-17 19:21:20 +02:00
apm821xx apm821xx: sata: refresh config 2025-07-27 18:22:31 +02:00
armsr armsr: Make kernel modules depend on target 2025-07-26 01:11:21 +02:00
at91 treewide: strip trailing whitespace 2025-05-20 00:47:37 +02:00
ath79 ath79: add nvmem handling for AR9285 devices 2025-09-12 01:20:49 +02:00
bcm27xx bcm27xx: Add padding after writing rootfs to image. 2025-09-14 11:46:19 +02:00
bcm47xx treewide: strip trailing whitespace 2025-05-20 00:47:37 +02:00
bcm53xx kernel: bump 6.6 to 6.6.103 2025-09-01 02:05:24 +02:00
bcm4908 bcm63xx-cfe: install into image staging dir 2025-04-13 10:44:19 +02:00
bmips kernel: bump 6.12 to 6.12.39 2025-07-19 11:59:56 +02:00
d1 kernel: remove duplicate PREEMPT settings 2025-06-08 15:59:55 +02:00
econet kernel: 6.12: refresh patches for airoha/econet on 6.12.45 2025-09-17 19:21:20 +02:00
gemini gemini: Add module for VSC73xx switches 2025-09-15 23:12:56 +02:00
generic kernel: kmod-dsa-ks8995: Backport DSA patches 2025-09-15 08:34:55 +02:00
imx kernel: bump 6.6 to 6.6.103 2025-09-01 02:05:24 +02:00
ipq40xx kernel: bump 6.12 to 6.12.44 2025-08-31 13:07:49 +02:00
ipq806x treewide: fix compatible string for ath10k 2025-08-25 10:35:39 +02:00
ixp4xx ixp4xx: Switch to kernel v6.12 2025-06-03 01:45:40 +02:00
kirkwood kirkwood: add kmod-ata-ahci as default to ix4-200d 2025-07-19 17:58:41 +02:00
lantiq lantiq: adapt upstream commit to some dts files 2025-09-07 11:42:46 +02:00
layerscape kernel: bump 6.12 to 6.12.43 2025-08-26 21:35:36 +02:00
loongarch64 loongarch64: switch to Linux 6.12 by default 2025-09-09 00:10:31 +02:00
malta malta: drop 6.6 support 2025-07-20 23:37:37 +02:00
mediatek mediatek: refresh patches 2025-09-15 21:38:29 +01:00
mpc85xx mpc85xx: tl-wdr4900: add back 5ghz LED 2025-08-13 09:57:05 +02:00
mvebu mvebu: switch to kernel 6.12 2025-08-04 22:57:18 +02:00
mxs mxs: drop 6.6 support 2025-05-24 16:15:53 +02:00
octeon octeon: ubnt-*: Add device specific DTS pruning 2025-07-09 10:39:29 +02:00
omap omap: enable 6.12 testing kernel 2025-08-22 20:18:16 +02:00
pistachio kernel: remove duplicate PREEMPT settings 2025-06-08 15:59:55 +02:00
qoriq kernel: Activate CONFIG_NET_SWITCHDEV in generic config 2025-03-15 13:54:59 +01:00
qualcommax qualcommax: ipq50xx: backport upstreamed patch for adding ipq5018 I2C node 2025-09-17 14:18:10 +02:00
qualcommbe kernel: bump 6.12 to 6.12.45 2025-09-07 11:42:46 +02:00
ramips ramips: e390ax: remove redundant 02_network MACs 2025-09-10 22:50:08 +02:00
realtek realtek: mdio: add SerDes driver 2025-09-17 19:23:15 +02:00
rockchip rockchip: add Lunzn FastRhino R66S support 2025-09-11 22:17:43 +02:00
sifiveu kernel: remove duplicate PREEMPT settings 2025-06-08 15:59:55 +02:00
siflower generic: backport support for Aeonsemi AS21xxx PHY 2025-09-03 00:58:48 +02:00
starfive kernel: bump 6.12 to 6.12.45 2025-09-07 11:42:46 +02:00
stm32 generic: 6.12: add new config symbols 2025-07-13 15:27:54 +02:00
sunxi sunxi: enable at24 support 2025-09-08 22:35:39 +02:00
tegra tegra: add 6.12 as testing kernel 2025-07-13 00:49:37 +02:00
uml kernel: bump 6.12 to 6.12.33 2025-06-12 12:42:15 +02:00
x86 x86: add Minisforum MS-A2 Mini PC 2025-08-10 12:12:05 +02:00
zynq zynq: disable unused Vitesse PHY 2025-09-08 14:21:50 +02:00
Makefile linux: fix missing default packages in profiles.json 2024-11-17 19:29:06 +01:00