0001
0002
0003
0004 #ifndef __MT7615_EEPROM_H
0005 #define __MT7615_EEPROM_H
0006
0007 #include "mt7615.h"
0008
0009
0010 #define MT7615_EEPROM_DCOC_OFFSET MT7615_EEPROM_SIZE
0011 #define MT7615_EEPROM_DCOC_SIZE 256
0012 #define MT7615_EEPROM_DCOC_COUNT 34
0013
0014 #define MT7615_EEPROM_TXDPD_OFFSET (MT7615_EEPROM_SIZE + \
0015 MT7615_EEPROM_DCOC_COUNT * \
0016 MT7615_EEPROM_DCOC_SIZE)
0017 #define MT7615_EEPROM_TXDPD_SIZE 216
0018 #define MT7615_EEPROM_TXDPD_COUNT (44 + 3)
0019
0020 #define MT7615_EEPROM_FULL_SIZE (MT7615_EEPROM_TXDPD_OFFSET + \
0021 MT7615_EEPROM_TXDPD_COUNT * \
0022 MT7615_EEPROM_TXDPD_SIZE)
0023
0024 enum mt7615_eeprom_field {
0025 MT_EE_CHIP_ID = 0x000,
0026 MT_EE_VERSION = 0x002,
0027 MT_EE_MAC_ADDR = 0x004,
0028 MT_EE_NIC_CONF_0 = 0x034,
0029 MT_EE_NIC_CONF_1 = 0x036,
0030 MT_EE_WIFI_CONF = 0x03e,
0031 MT_EE_CALDATA_FLASH = 0x052,
0032 MT_EE_TX0_2G_TARGET_POWER = 0x058,
0033 MT_EE_TX0_5G_G0_TARGET_POWER = 0x070,
0034 MT7663_EE_5G_RATE_POWER = 0x089,
0035 MT_EE_TX1_5G_G0_TARGET_POWER = 0x098,
0036 MT_EE_2G_RATE_POWER = 0x0be,
0037 MT_EE_5G_RATE_POWER = 0x0d5,
0038 MT7663_EE_TX0_2G_TARGET_POWER = 0x0e3,
0039 MT_EE_EXT_PA_2G_TARGET_POWER = 0x0f2,
0040 MT_EE_EXT_PA_5G_TARGET_POWER = 0x0f3,
0041 MT_EE_TX2_5G_G0_TARGET_POWER = 0x142,
0042 MT_EE_TX3_5G_G0_TARGET_POWER = 0x16a,
0043 MT7663_EE_HW_CONF1 = 0x1b0,
0044 MT7663_EE_TX0_5G_G0_TARGET_POWER = 0x245,
0045 MT7663_EE_TX1_5G_G0_TARGET_POWER = 0x2b5,
0046
0047 MT7615_EE_MAX = 0x3bf,
0048 MT7622_EE_MAX = 0x3db,
0049 MT7663_EE_MAX = 0x400,
0050 };
0051
0052 #define MT_EE_RATE_POWER_MASK GENMASK(5, 0)
0053 #define MT_EE_RATE_POWER_SIGN BIT(6)
0054 #define MT_EE_RATE_POWER_EN BIT(7)
0055
0056 #define MT_EE_CALDATA_FLASH_TX_DPD BIT(0)
0057 #define MT_EE_CALDATA_FLASH_RX_CAL BIT(1)
0058
0059 #define MT_EE_NIC_CONF_TX_MASK GENMASK(7, 4)
0060 #define MT_EE_NIC_CONF_RX_MASK GENMASK(3, 0)
0061
0062 #define MT_EE_HW_CONF1_TX_MASK GENMASK(2, 0)
0063
0064 #define MT_EE_NIC_CONF_TSSI_2G BIT(5)
0065 #define MT_EE_NIC_CONF_TSSI_5G BIT(6)
0066
0067 #define MT_EE_NIC_WIFI_CONF_BAND_SEL GENMASK(5, 4)
0068 enum mt7615_eeprom_band {
0069 MT_EE_DUAL_BAND,
0070 MT_EE_5GHZ,
0071 MT_EE_2GHZ,
0072 MT_EE_DBDC,
0073 };
0074
0075 enum mt7615_channel_group {
0076 MT_CH_5G_JAPAN,
0077 MT_CH_5G_UNII_1,
0078 MT_CH_5G_UNII_2A,
0079 MT_CH_5G_UNII_2B,
0080 MT_CH_5G_UNII_2E_1,
0081 MT_CH_5G_UNII_2E_2,
0082 MT_CH_5G_UNII_2E_3,
0083 MT_CH_5G_UNII_3,
0084 __MT_CH_MAX
0085 };
0086
0087 static inline enum mt7615_channel_group
0088 mt7615_get_channel_group(int channel)
0089 {
0090 if (channel >= 184 && channel <= 196)
0091 return MT_CH_5G_JAPAN;
0092 if (channel <= 48)
0093 return MT_CH_5G_UNII_1;
0094 if (channel <= 64)
0095 return MT_CH_5G_UNII_2A;
0096 if (channel <= 114)
0097 return MT_CH_5G_UNII_2E_1;
0098 if (channel <= 144)
0099 return MT_CH_5G_UNII_2E_2;
0100 if (channel <= 161)
0101 return MT_CH_5G_UNII_2E_3;
0102 return MT_CH_5G_UNII_3;
0103 }
0104
0105 static inline bool
0106 mt7615_ext_pa_enabled(struct mt7615_dev *dev, enum nl80211_band band)
0107 {
0108 u8 *eep = dev->mt76.eeprom.data;
0109
0110 if (band == NL80211_BAND_5GHZ)
0111 return !(eep[MT_EE_NIC_CONF_1 + 1] & MT_EE_NIC_CONF_TSSI_5G);
0112 else
0113 return !(eep[MT_EE_NIC_CONF_1 + 1] & MT_EE_NIC_CONF_TSSI_2G);
0114 }
0115
0116 #endif