[PATCH net-next v2 06/10] net: ethernet: oa_tc6: Add MMS register formatting macro

From: Ciprian Regus via B4 Relay

Date: Tue May 26 2026 - 17:53:56 EST


From: Ciprian Regus <ciprian.regus@xxxxxxxxxx>

The Open Alliance TC6 standard defines multiple memory maps for the
MAC-PHY's register space. These are used to separate standard, vendor
and PHY MMD specific registers. Add a macro to make it more clear which
memory map each register is part of and allow easier definition.

Signed-off-by: Ciprian Regus <ciprian.regus@xxxxxxxxxx>

---
v2 changelog:
- New patch
---
drivers/net/ethernet/oa_tc6.c | 4 ++--
include/linux/oa_tc6.h | 3 +++
2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/oa_tc6.c b/drivers/net/ethernet/oa_tc6.c
index 904bd790159d..876891ca9859 100644
--- a/drivers/net/ethernet/oa_tc6.c
+++ b/drivers/net/ethernet/oa_tc6.c
@@ -471,7 +471,7 @@ int oa_tc6_mdiobus_read_c45(struct mii_bus *bus, int addr, int devnum,
if (ret < 0)
return ret;

- ret = oa_tc6_read_register(tc6, (ret << 16) | regnum, &regval);
+ ret = oa_tc6_read_register(tc6, OA_TC6_MMS_REG(ret, regnum), &regval);
if (ret)
return ret;

@@ -489,7 +489,7 @@ int oa_tc6_mdiobus_write_c45(struct mii_bus *bus, int addr, int devnum,
if (ret < 0)
return ret;

- return oa_tc6_write_register(tc6, (ret << 16) | regnum, val);
+ return oa_tc6_write_register(tc6, OA_TC6_MMS_REG(ret, regnum), val);
}
EXPORT_SYMBOL_GPL(oa_tc6_mdiobus_write_c45);

diff --git a/include/linux/oa_tc6.h b/include/linux/oa_tc6.h
index ad6f17218603..8b56a132c9e3 100644
--- a/include/linux/oa_tc6.h
+++ b/include/linux/oa_tc6.h
@@ -10,6 +10,9 @@
#include <linux/etherdevice.h>
#include <linux/spi/spi.h>

+#define OA_TC6_MMS_REG(mms, reg) \
+ ((((mms) & GENMASK(3, 0)) << 16) | ((reg) & GENMASK(15, 0)))
+
/* OPEN Alliance TC6 registers */

#define OA_TC6_REG_PHYID 0x0001

--
2.43.0