wifi: mt76: mt76_eeprom_override to int

mt76_eeprom_override has of_get_mac_address, which can return
-EPROBE_DEFER if the nvmem driver gets loaded after mt76 for some
reason.

Make sure this gets passed to probe so that nvmem mac overrides always
work.

Signed-off-by: Rosen Penev <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
Rosen Penev
2025-09-15 09:52:25 +02:00
committed by Felix Fietkau
parent d4a79d50ff
commit 9b770cb3da
13 changed files with 46 additions and 25 deletions
+17 -7
View File
@@ -163,7 +163,7 @@ static int mt76_get_of_eeprom(struct mt76_dev *dev, void *eep, int len)
return mt76_get_of_data_from_nvmem(dev, eep, "eeprom", len);
}
void
int
mt76_eeprom_override(struct mt76_phy *phy)
{
struct mt76_dev *dev = phy->dev;
@@ -177,14 +177,22 @@ mt76_eeprom_override(struct mt76_phy *phy)
if (ret)
continue;
if (reg == phy->band_idx) {
found_mac = !of_get_mac_address(band_np, phy->macaddr);
break;
}
if (reg != phy->band_idx)
continue;
ret = of_get_mac_address(band_np, phy->macaddr);
if (ret == -EPROBE_DEFER)
return ret;
found_mac = !ret;
break;
}
if (!found_mac)
of_get_mac_address(np, phy->macaddr);
if (!found_mac) {
ret = of_get_mac_address(np, phy->macaddr);
if (ret == -EPROBE_DEFER)
return ret;
}
if (!is_valid_ether_addr(phy->macaddr)) {
eth_random_addr(phy->macaddr);
@@ -192,6 +200,8 @@ mt76_eeprom_override(struct mt76_phy *phy)
"Invalid MAC address, using random address %pM\n",
phy->macaddr);
}
return 0;
}
EXPORT_SYMBOL_GPL(mt76_eeprom_override);
+1 -1
View File
@@ -1299,7 +1299,7 @@ void mt76_seq_puts_array(struct seq_file *file, const char *str,
s8 *val, int len);
int mt76_eeprom_init(struct mt76_dev *dev, int len);
void mt76_eeprom_override(struct mt76_phy *phy);
int mt76_eeprom_override(struct mt76_phy *phy);
int mt76_get_of_data_from_mtd(struct mt76_dev *dev, void *eep, int offset, int len);
int mt76_get_of_data_from_nvmem(struct mt76_dev *dev, void *eep,
const char *cell_name, int len);
+1 -2
View File
@@ -182,7 +182,6 @@ int mt7603_eeprom_init(struct mt7603_dev *dev)
dev->mphy.antenna_mask = 1;
dev->mphy.chainmask = dev->mphy.antenna_mask;
mt76_eeprom_override(&dev->mphy);
return 0;
return mt76_eeprom_override(&dev->mphy);
}
+1 -3
View File
@@ -351,8 +351,6 @@ int mt7615_eeprom_init(struct mt7615_dev *dev, u32 addr)
memcpy(dev->mphy.macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR,
ETH_ALEN);
mt76_eeprom_override(&dev->mphy);
return 0;
return mt76_eeprom_override(&dev->mphy);
}
EXPORT_SYMBOL_GPL(mt7615_eeprom_init);
+4 -1
View File
@@ -570,7 +570,10 @@ int mt7615_register_ext_phy(struct mt7615_dev *dev)
ETH_ALEN);
mphy->macaddr[0] |= 2;
mphy->macaddr[0] ^= BIT(7);
mt76_eeprom_override(mphy);
ret = mt76_eeprom_override(mphy);
if (ret)
return ret;
/* second phy can only handle 5 GHz */
mphy->cap.has_5ghz = true;
+5 -1
View File
@@ -332,7 +332,11 @@ int mt76x0_eeprom_init(struct mt76x02_dev *dev)
memcpy(dev->mphy.macaddr, (u8 *)dev->mt76.eeprom.data + MT_EE_MAC_ADDR,
ETH_ALEN);
mt76_eeprom_override(&dev->mphy);
err = mt76_eeprom_override(&dev->mphy);
if (err)
return err;
mt76x02_mac_setaddr(dev, dev->mphy.macaddr);
mt76x0_set_chip_cap(dev);
+3 -1
View File
@@ -499,7 +499,9 @@ int mt76x2_eeprom_init(struct mt76x02_dev *dev)
mt76x02_eeprom_parse_hw_cap(dev);
mt76x2_eeprom_get_macaddr(dev);
mt76_eeprom_override(&dev->mphy);
ret = mt76_eeprom_override(&dev->mphy);
if (ret)
return ret;
dev->mphy.macaddr[0] &= ~BIT(1);
return 0;
+1 -3
View File
@@ -284,9 +284,7 @@ int mt7915_eeprom_init(struct mt7915_dev *dev)
memcpy(dev->mphy.macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR,
ETH_ALEN);
mt76_eeprom_override(&dev->mphy);
return 0;
return mt76_eeprom_override(&dev->mphy);
}
int mt7915_eeprom_get_target_power(struct mt7915_dev *dev,
+3 -1
View File
@@ -705,7 +705,9 @@ mt7915_register_ext_phy(struct mt7915_dev *dev, struct mt7915_phy *phy)
mphy->macaddr[0] |= 2;
mphy->macaddr[0] ^= BIT(7);
}
mt76_eeprom_override(mphy);
ret = mt76_eeprom_override(mphy);
if (ret)
return ret;
/* init wiphy according to mphy and phy */
mt7915_init_wiphy(phy);
+3 -1
View File
@@ -189,7 +189,9 @@ static int __mt7921_init_hardware(struct mt792x_dev *dev)
if (ret)
goto out;
mt76_eeprom_override(&dev->mphy);
ret = mt76_eeprom_override(&dev->mphy);
if (ret)
goto out;
ret = mt7921_mcu_set_eeprom(dev);
if (ret)
+3 -1
View File
@@ -249,7 +249,9 @@ static int __mt7925_init_hardware(struct mt792x_dev *dev)
if (ret)
goto out;
mt76_eeprom_override(&dev->mphy);
ret = mt76_eeprom_override(&dev->mphy);
if (ret)
goto out;
ret = mt7925_mcu_set_eeprom(dev);
if (ret)
+1 -2
View File
@@ -334,9 +334,8 @@ int mt7996_eeprom_init(struct mt7996_dev *dev)
return ret;
memcpy(dev->mphy.macaddr, dev->mt76.eeprom.data + MT_EE_MAC_ADDR, ETH_ALEN);
mt76_eeprom_override(&dev->mphy);
return 0;
return mt76_eeprom_override(&dev->mphy);
}
int mt7996_eeprom_get_target_power(struct mt7996_dev *dev,
+3 -1
View File
@@ -703,7 +703,9 @@ static int mt7996_register_phy(struct mt7996_dev *dev, enum mt76_band_id band)
if (band == MT_BAND2)
mphy->macaddr[0] ^= BIT(6);
}
mt76_eeprom_override(mphy);
ret = mt76_eeprom_override(mphy);
if (ret)
goto error;
/* init wiphy according to mphy and phy */
mt7996_init_wiphy_band(mphy->hw, phy);