Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions mt7996/eeprom.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,36 @@ mt7996_eeprom_parse_stream(const u8 *eeprom, u8 band_idx, u8 *path,
}
}

static void
mt7996_eeprom_fixup_tx_power(struct mt7996_dev *dev, const u8 *def)
{
u8 *eeprom = dev->mt76.eeprom.data;
int i;
bool zeros_detected = false;

if (!eeprom[MT_EE_TX0_POWER_2G]) {
eeprom[MT_EE_TX0_POWER_2G] = def[MT_EE_TX0_POWER_2G];
zeros_detected = true;
}

for (i = MT_EE_TX0_POWER_5G; i < MT_EE_TX0_POWER_5G + 5; ++i) {
if (!eeprom[i]) {
eeprom[i] = def[i];
zeros_detected = true;
}
}

for (i = MT_EE_TX0_POWER_6G; i < MT_EE_TX0_POWER_6G + 8; ++i) {
if (!eeprom[i]) {
eeprom[i] = def[i];
zeros_detected = true;
}
}

if (zeros_detected)
dev_warn(dev->mt76.dev, "eeprom tx_power zeros detected, using defaults\n");
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you need to add in your function the line dev->flash_mode = true;. That's because the code won't go to the out part where the firmware is set to be used. We have a long discussion about this here: openwrt/openwrt#19503 (comment).


static bool mt7996_eeprom_variant_valid(struct mt7996_dev *dev, const u8 *def)
{
#define FEM_INT 0
Expand Down Expand Up @@ -142,6 +172,8 @@ mt7996_eeprom_check_or_use_default(struct mt7996_dev *dev, bool use_default)
goto out;
}

mt7996_eeprom_fixup_tx_power(dev, fw->data);

if (!use_default && mt7996_eeprom_variant_valid(dev, fw->data))
goto out;

Expand Down