brintos

brintos / linux-shallow public Read only

0
0
Text · 1.8 KiB · 43430ef Raw
84 lines · c
1/* SPDX-License-Identifier: ISC */2/*3 * Copyright (C) 2016 Felix Fietkau <nbd@nbd.name>4 */5 6#ifndef __MT76x2_EEPROM_H7#define __MT76x2_EEPROM_H8 9#include "../mt76x02_eeprom.h"10 11enum mt76x2_cal_channel_group {12	MT_CH_5G_JAPAN,13	MT_CH_5G_UNII_1,14	MT_CH_5G_UNII_2,15	MT_CH_5G_UNII_2E_1,16	MT_CH_5G_UNII_2E_2,17	MT_CH_5G_UNII_3,18	__MT_CH_MAX19};20 21struct mt76x2_tx_power_info {22	u8 target_power;23 24	s8 delta_bw40;25	s8 delta_bw80;26 27	struct {28		s8 tssi_slope;29		s8 tssi_offset;30		s8 target_power;31		s8 delta;32	} chain[MT_MAX_CHAINS];33};34 35struct mt76x2_temp_comp {36	u8 temp_25_ref;37	int lower_bound; /* J */38	int upper_bound; /* J */39	unsigned int high_slope; /* J / dB */40	unsigned int low_slope; /* J / dB */41};42 43void mt76x2_get_rate_power(struct mt76x02_dev *dev, struct mt76x02_rate_power *t,44			   struct ieee80211_channel *chan);45void mt76x2_get_power_info(struct mt76x02_dev *dev,46			   struct mt76x2_tx_power_info *t,47			   struct ieee80211_channel *chan);48int mt76x2_get_temp_comp(struct mt76x02_dev *dev, struct mt76x2_temp_comp *t);49void mt76x2_read_rx_gain(struct mt76x02_dev *dev);50 51static inline bool52mt76x2_has_ext_lna(struct mt76x02_dev *dev)53{54	u32 val = mt76x02_eeprom_get(dev, MT_EE_NIC_CONF_1);55 56	if (dev->mphy.chandef.chan->band == NL80211_BAND_2GHZ)57		return val & MT_EE_NIC_CONF_1_LNA_EXT_2G;58	else59		return val & MT_EE_NIC_CONF_1_LNA_EXT_5G;60}61 62static inline bool63mt76x2_temp_tx_alc_enabled(struct mt76x02_dev *dev)64{65	u16 val;66 67	val = mt76x02_eeprom_get(dev, MT_EE_TX_POWER_EXT_PA_5G);68	if (!(val & BIT(15)))69		return false;70 71	return mt76x02_eeprom_get(dev, MT_EE_NIC_CONF_1) &72	       MT_EE_NIC_CONF_1_TEMP_TX_ALC;73}74 75static inline bool76mt76x2_tssi_enabled(struct mt76x02_dev *dev)77{78	return !mt76x2_temp_tx_alc_enabled(dev) &&79	       (mt76x02_eeprom_get(dev, MT_EE_NIC_CONF_1) &80		MT_EE_NIC_CONF_1_TX_ALC_EN);81}82 83#endif84