* [PATCH net] net: mdio: realtek-rtl9300: fix RTL931x C22 extended page selection
@ 2026-09-18 21:19 Jonas Jelonek
2026-09-19 7:08 ` AW: " Markus Stockhausen
0 siblings, 1 reply; 2+ messages in thread
From: Jonas Jelonek @ 2026-09-18 21:19 UTC (permalink / raw)
To: Andrew Lunn, Heiner Kallweit, Russell King, David S . Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Markus Stockhausen,
netdev, linux-kernel
Cc: Jonas Jelonek
The RTL931x indirect access engine has a separate nine-bit extended page
field. The driver leaves it at zero, and otto_emdio_run_cmd() therefore
programs extended page zero for every Clause 22 transaction. This
overrides page selection made through PHY register 30, causing accesses
to private PHY pages to hit extended page zero instead.
Set the field to its 0x1ff "do not change" value for RTL931x Clause 22
reads and writes. This preserves extended page selection made through
PHY register 30 and restores access to its private register pages.
Fixes: 5ebdcac59aff ("net: mdio: realtek-rtl9300: Add support for RTL931x")
Signed-off-by: Jonas Jelonek <jonas@jonasjelonek.de>
---
drivers/net/mdio/mdio-realtek-rtl9300.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/mdio/mdio-realtek-rtl9300.c b/drivers/net/mdio/mdio-realtek-rtl9300.c
index afd52a1cd7f8..9ce2b7807532 100644
--- a/drivers/net/mdio/mdio-realtek-rtl9300.c
+++ b/drivers/net/mdio/mdio-realtek-rtl9300.c
@@ -88,6 +88,8 @@
#define RTL9310_SMI_INDRT_ACCESS_BC_PHYID_CTRL 0x0c14
#define RTL9310_BC_PORT_ID GENMASK(10, 5)
#define RTL9310_SMI_INDRT_ACCESS_CTRL_1 0x0c04
+#define RTL9310_SMI_INDRT_EXT_PAGE GENMASK(8, 0)
+#define RTL9310_SMI_INDRT_EXT_PAGE_NO_CHANGE 0x1ff
#define RTL9310_SMI_INDRT_ACCESS_CTRL_2_LOW 0x0c08
#define RTL9310_SMI_INDRT_ACCESS_CTRL_2_HIGH 0x0c0c
#define RTL9310_SMI_INDRT_ACCESS_CTRL_3 0x0c10 /* I/O fields flipped */
@@ -325,6 +327,8 @@ static int otto_emdio_9310_read_c22(struct mii_bus *bus, int port, int regnum, u
.broadcast = FIELD_PREP(RTL9310_BC_PORT_ID, port),
.c22_data = FIELD_PREP(RTL9310_PHY_CTRL_REG_ADDR, regnum) |
FIELD_PREP(RTL9310_PHY_CTRL_MAIN_PAGE, RAW_PAGE(priv)),
+ .ext_page = FIELD_PREP(RTL9310_SMI_INDRT_EXT_PAGE,
+ RTL9310_SMI_INDRT_EXT_PAGE_NO_CHANGE),
};
return otto_emdio_read_cmd(bus, RTL9310_PHY_CTRL_TYPE_C22, &cmd_data,
@@ -337,6 +341,8 @@ static int otto_emdio_9310_write_c22(struct mii_bus *bus, int port, int regnum,
struct otto_emdio_cmd_regs cmd_data = {
.c22_data = FIELD_PREP(RTL9310_PHY_CTRL_REG_ADDR, regnum) |
FIELD_PREP(RTL9310_PHY_CTRL_MAIN_PAGE, RAW_PAGE(priv)),
+ .ext_page = FIELD_PREP(RTL9310_SMI_INDRT_EXT_PAGE,
+ RTL9310_SMI_INDRT_EXT_PAGE_NO_CHANGE),
.io_data = FIELD_PREP(RTL9310_PHY_CTRL_INDATA, value),
.port_mask_high = (u32)(BIT_ULL(port) >> 32),
.port_mask_low = (u32)(BIT_ULL(port)),
base-commit: 46bc52d13594848023e681860df8700c8db14354
--
2.53.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* AW: [PATCH net] net: mdio: realtek-rtl9300: fix RTL931x C22 extended page selection
2026-09-18 21:19 [PATCH net] net: mdio: realtek-rtl9300: fix RTL931x C22 extended page selection Jonas Jelonek
@ 2026-09-19 7:08 ` Markus Stockhausen
0 siblings, 0 replies; 2+ messages in thread
From: Markus Stockhausen @ 2026-09-19 7:08 UTC (permalink / raw)
To: 'Jonas Jelonek', 'Andrew Lunn',
'Heiner Kallweit', 'Russell King',
'David S . Miller', 'Eric Dumazet',
'Jakub Kicinski', 'Paolo Abeni',
netdev, linux-kernel
> Von: Jonas Jelonek <jonas@jonasjelonek.de>
> Gesendet: Freitag, 18. September 2026 23:20
> Betreff: [PATCH net] net: mdio: realtek-rtl9300: fix RTL931x C22 extended
page selection
>
> The RTL931x indirect access engine has a separate nine-bit extended page
> field. The driver leaves it at zero, and otto_emdio_run_cmd() therefore
> programs extended page zero for every Clause 22 transaction. This
> overrides page selection made through PHY register 30, causing accesses
> to private PHY pages to hit extended page zero instead.
>
> Set the field to its 0x1ff "do not change" value for RTL931x Clause 22
> reads and writes. This preserves extended page selection made through
> PHY register 30 and restores access to its private register pages.
>
> Fixes: 5ebdcac59aff ("net: mdio: realtek-rtl9300: Add support for
RTL931x")
> Signed-off-by: Jonas Jelonek <jonas@jonasjelonek.de>
Acked-by: Markus Stockhausen <markus.stockhausen@gmx.de>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-19 7:08 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-18 21:19 [PATCH net] net: mdio: realtek-rtl9300: fix RTL931x C22 extended page selection Jonas Jelonek
2026-09-19 7:08 ` AW: " Markus Stockhausen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®