diff options
Diffstat (limited to 'sys/contrib/dev/mediatek/mt76/mt7915/eeprom.c')
| -rw-r--r-- | sys/contrib/dev/mediatek/mt76/mt7915/eeprom.c | 33 | 
1 files changed, 32 insertions, 1 deletions
diff --git a/sys/contrib/dev/mediatek/mt76/mt7915/eeprom.c b/sys/contrib/dev/mediatek/mt76/mt7915/eeprom.c index c772d2e06e8c..0df2bd93c82e 100644 --- a/sys/contrib/dev/mediatek/mt76/mt7915/eeprom.c +++ b/sys/contrib/dev/mediatek/mt76/mt7915/eeprom.c @@ -147,7 +147,7 @@ static int mt7915_eeprom_load(struct mt7915_dev *dev)  		/* read eeprom data from efuse */  		block_num = DIV_ROUND_UP(eeprom_size, eeprom_blk_size);  		for (i = 0; i < block_num; i++) { -			ret = mt7915_mcu_get_eeprom(dev, i * eeprom_blk_size); +			ret = mt7915_mcu_get_eeprom(dev, i * eeprom_blk_size, NULL);  			if (ret < 0)  				return ret;  		} @@ -365,6 +365,37 @@ s8 mt7915_eeprom_get_power_delta(struct mt7915_dev *dev, int band)  	return val & MT_EE_RATE_DELTA_SIGN ? delta : -delta;  } +bool +mt7915_eeprom_has_background_radar(struct mt7915_dev *dev) +{ +	u8 val, buf[MT7915_EEPROM_BLOCK_SIZE]; +	u8 band_sel, tx_path, rx_path; +	int offs = MT_EE_WIFI_CONF + 1; + +	switch (mt76_chip(&dev->mt76)) { +	case 0x7915: +		return true; +	case 0x7906: +		/* read efuse to check background radar capability */ +		if (mt7915_mcu_get_eeprom(dev, offs, buf)) +			break; + +		val = buf[offs % MT7915_EEPROM_BLOCK_SIZE]; +		band_sel = u8_get_bits(val, MT_EE_WIFI_CONF0_BAND_SEL); +		tx_path = u8_get_bits(val, MT_EE_WIFI_CONF0_TX_PATH); +		rx_path = u8_get_bits(val, MT_EE_WIFI_CONF0_RX_PATH); + +		return (band_sel == MT_EE_V2_BAND_SEL_5GHZ && +			tx_path == rx_path && rx_path == 2); +	case 0x7981: +	case 0x7986: +	default: +		break; +	} + +	return false; +} +  const u8 mt7915_sku_group_len[] = {  	[SKU_CCK] = 4,  	[SKU_OFDM] = 8,  | 
