[PATCH] wifi: mt76: support per-band MAC addresses from OF child nodes
Daniel Golle
daniel at makrotopia.org
Wed Jul 12 19:50:04 PDT 2023
With dual-band-dual-congruent front-ends which appear as two independent
radios it is desirable to assign a per-band MAC address from device-tree,
eg. using nvmem-cells.
Support specifying MAC-address related properties in band-specific child
nodes, e.g.
mt7915 at 0,0 {
reg = <0x0000 0 0 0 0>;
#addr-cells = <1>;
#size-cells = <0>;
band at 0 {
/* 2.4 GHz */
reg = <0>;
nvmem-cells = <&macaddr 2>;
nvmem-cell-names = "mac-address";
};
band at 1 {
/* 5 GHz */
reg = <1>;
nvmem-cells = <&macaddr 3>;
nvmem-cell-names = "mac-address";
};
};
Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
drivers/net/wireless/mediatek/mt76/eeprom.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/mediatek/mt76/eeprom.c b/drivers/net/wireless/mediatek/mt76/eeprom.c
index dce851d42e083..90ee138843a55 100644
--- a/drivers/net/wireless/mediatek/mt76/eeprom.c
+++ b/drivers/net/wireless/mediatek/mt76/eeprom.c
@@ -106,7 +106,20 @@ void
mt76_eeprom_override(struct mt76_phy *phy)
{
struct mt76_dev *dev = phy->dev;
- struct device_node *np = dev->dev->of_node;
+ struct device_node *child_np, *np = dev->dev->of_node;
+ u32 reg;
+ int ret;
+
+ for_each_child_of_node(np, child_np) {
+ ret = of_property_read_u32(child_np, "reg", ®);
+ if (ret)
+ continue;
+
+ if (reg == phy->band_idx) {
+ np = child_np;
+ break;
+ }
+ }
of_get_mac_address(np, phy->macaddr);
--
2.41.0
More information about the linux-arm-kernel
mailing list