realtek: mdio: clarify rtl93xx bus C22/C45 setup
authorMarkus Stockhausen <markus.stockhausen@gmx.de>
Tue, 10 Feb 2026 09:53:47 +0000 (10:53 +0100)
committerRobert Marko <robimarko@gmail.com>
Fri, 13 Feb 2026 11:53:46 +0000 (12:53 +0100)
Now that reset() and setup_polling() functions are split, clarify the
documentation about the C22/C45 register setup. It is important for
all phy accesses and must be configured during reset. Of course a side
effect is, that the SoC adapts its polling.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21968
Signed-off-by: Robert Marko <robimarko@gmail.com>
target/linux/realtek/files-6.12/drivers/net/mdio/mdio-realtek-otto.c

index 55bbd61f0bf2e1071456028a613538ef36ed2dcb..2387b91994ec50ff4065f65a66e7e768f663854a 100644 (file)
@@ -722,7 +722,7 @@ static int rtmdio_930x_reset(struct mii_bus *bus)
                regmap_update_bits(ctrl->map, RTMDIO_930X_SMI_PORT0_15_POLLING_SEL + reg, mask, val);
        }
 
-       /* Define c22/c45 bus polling */
+       /* Define C22/C45 bus feature set */
        for (int addr = 0; addr < RTMDIO_MAX_SMI_BUS; addr++) {
                mask = BIT(16 + addr);
                val = ctrl->smi_bus_isc45[addr] ? mask : 0;
@@ -825,14 +825,8 @@ static int rtmdio_931x_reset(struct mii_bus *bus)
                regmap_write(ctrl->map, RTMDIO_931X_SMI_PORT_POLLING_SEL + (i * 4), poll_sel[i]);
        }
 
-       /* Configure c22/c45 polling (bit 1 of SMI_SETX_FMT_SEL)
-        *
-        * NOTE: this seems to be needed before accessing the bus though
-        * it should only apply to the SMI polling. Not setting c22/c45 here
-        * apparently causes garbage being read below.
-        */
+       /* Define C22/C45 bus feature set */
        for (int i = 0; i < RTMDIO_MAX_SMI_BUS; i++) {
-               /* bus is polled in c45 */
                if (ctrl->smi_bus_isc45[i])
                        c45_mask |= 0x2 << (i * 2);  /* Std. C45, non-standard is 0x3 */
        }