Commit c7c68210 authored by Rosen Penev's avatar Rosen Penev Committed by Felix Fietkau
Browse files

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: default avatarRosen Penev <rosenp@gmail.com>
Link: https://patch.msgid.link/20250911221619.16035-1-rosenp@gmail.com


Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent cb6ebbdf
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -163,13 +163,16 @@ 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;
	struct device_node *np = dev->dev->of_node;
	int err;

	of_get_mac_address(np, phy->macaddr);
	err = of_get_mac_address(np, phy->macaddr);
	if (err == -EPROBE_DEFER)
		return err;

	if (!is_valid_ether_addr(phy->macaddr)) {
		eth_random_addr(phy->macaddr);
@@ -177,6 +180,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
Original line number Diff line number Diff line
@@ -1294,7 +1294,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
Original line number Diff line number Diff line
@@ -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
Original line number Diff line number Diff line
@@ -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
Original line number Diff line number Diff line
@@ -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;
Loading