Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: ISC */
0002 /* Copyright (C) 2020 MediaTek Inc. */
0003 
0004 #ifndef __MT7915_EEPROM_H
0005 #define __MT7915_EEPROM_H
0006 
0007 #include "mt7915.h"
0008 
0009 struct cal_data {
0010     u8 count;
0011     u16 offset[60];
0012 };
0013 
0014 enum mt7915_eeprom_field {
0015     MT_EE_CHIP_ID =     0x000,
0016     MT_EE_VERSION =     0x002,
0017     MT_EE_MAC_ADDR =    0x004,
0018     MT_EE_MAC_ADDR2 =   0x00a,
0019     MT_EE_DDIE_FT_VERSION = 0x050,
0020     MT_EE_DO_PRE_CAL =  0x062,
0021     MT_EE_WIFI_CONF =   0x190,
0022     MT_EE_RATE_DELTA_2G =   0x252,
0023     MT_EE_RATE_DELTA_5G =   0x29d,
0024     MT_EE_TX0_POWER_2G =    0x2fc,
0025     MT_EE_TX0_POWER_5G =    0x34b,
0026     MT_EE_RATE_DELTA_2G_V2 = 0x7d3,
0027     MT_EE_RATE_DELTA_5G_V2 = 0x81e,
0028     MT_EE_RATE_DELTA_6G_V2 = 0x884, /* 6g fields only appear in eeprom v2 */
0029     MT_EE_TX0_POWER_2G_V2 = 0x441,
0030     MT_EE_TX0_POWER_5G_V2 = 0x445,
0031     MT_EE_TX0_POWER_6G_V2 = 0x465,
0032     MT_EE_ADIE_FT_VERSION = 0x9a0,
0033 
0034     __MT_EE_MAX =       0xe00,
0035     __MT_EE_MAX_V2 =    0x1000,
0036     /* 0xe10 ~ 0x5780 used to save group cal data */
0037     MT_EE_PRECAL =      0xe10,
0038     MT_EE_PRECAL_V2 =   0x1010
0039 };
0040 
0041 #define MT_EE_WIFI_CAL_GROUP            BIT(0)
0042 #define MT_EE_WIFI_CAL_DPD          GENMASK(2, 1)
0043 #define MT_EE_CAL_UNIT              1024
0044 #define MT_EE_CAL_GROUP_SIZE            (49 * MT_EE_CAL_UNIT + 16)
0045 #define MT_EE_CAL_DPD_SIZE          (54 * MT_EE_CAL_UNIT)
0046 
0047 #define MT_EE_WIFI_CONF0_TX_PATH        GENMASK(2, 0)
0048 #define MT_EE_WIFI_CONF0_BAND_SEL       GENMASK(7, 6)
0049 #define MT_EE_WIFI_CONF1_BAND_SEL       GENMASK(7, 6)
0050 #define MT_EE_WIFI_CONF_STREAM_NUM      GENMASK(7, 5)
0051 #define MT_EE_WIFI_CONF3_TX_PATH_B0     GENMASK(1, 0)
0052 #define MT_EE_WIFI_CONF3_TX_PATH_B1     GENMASK(5, 4)
0053 #define MT_EE_WIFI_CONF7_TSSI0_2G       BIT(0)
0054 #define MT_EE_WIFI_CONF7_TSSI0_5G       BIT(2)
0055 #define MT_EE_WIFI_CONF7_TSSI1_5G       BIT(4)
0056 
0057 #define MT_EE_RATE_DELTA_MASK           GENMASK(5, 0)
0058 #define MT_EE_RATE_DELTA_SIGN           BIT(6)
0059 #define MT_EE_RATE_DELTA_EN         BIT(7)
0060 
0061 #define MT_EE_NSS_MAX_MA7915            4
0062 #define MT_EE_NSS_MAX_DBDC_MA7915       2
0063 #define MT_EE_NSS_MAX_MA7986            4
0064 #define MT_EE_NSS_MAX_DBDC_MA7986       4
0065 
0066 enum mt7915_adie_sku {
0067     MT7976_ONE_ADIE_DBDC = 0x7,
0068     MT7975_ONE_ADIE = 0x8,
0069     MT7976_ONE_ADIE = 0xa,
0070     MT7975_DUAL_ADIE = 0xd,
0071     MT7976_DUAL_ADIE = 0xf,
0072 };
0073 
0074 enum mt7915_eeprom_band {
0075     MT_EE_BAND_SEL_DEFAULT,
0076     MT_EE_BAND_SEL_5GHZ,
0077     MT_EE_BAND_SEL_2GHZ,
0078     MT_EE_BAND_SEL_DUAL,
0079 };
0080 
0081 enum {
0082     MT_EE_V2_BAND_SEL_2GHZ,
0083     MT_EE_V2_BAND_SEL_5GHZ,
0084     MT_EE_V2_BAND_SEL_6GHZ,
0085     MT_EE_V2_BAND_SEL_5GHZ_6GHZ,
0086 };
0087 
0088 enum mt7915_sku_rate_group {
0089     SKU_CCK,
0090     SKU_OFDM,
0091     SKU_HT_BW20,
0092     SKU_HT_BW40,
0093     SKU_VHT_BW20,
0094     SKU_VHT_BW40,
0095     SKU_VHT_BW80,
0096     SKU_VHT_BW160,
0097     SKU_HE_RU26,
0098     SKU_HE_RU52,
0099     SKU_HE_RU106,
0100     SKU_HE_RU242,
0101     SKU_HE_RU484,
0102     SKU_HE_RU996,
0103     SKU_HE_RU2x996,
0104     MAX_SKU_RATE_GROUP_NUM,
0105 };
0106 
0107 static inline int
0108 mt7915_get_channel_group_5g(int channel, bool is_7976)
0109 {
0110     if (is_7976) {
0111         if (channel <= 64)
0112             return 0;
0113         if (channel <= 96)
0114             return 1;
0115         if (channel <= 128)
0116             return 2;
0117         if (channel <= 144)
0118             return 3;
0119         return 4;
0120     }
0121 
0122     if (channel >= 184 && channel <= 196)
0123         return 0;
0124     if (channel <= 48)
0125         return 1;
0126     if (channel <= 64)
0127         return 2;
0128     if (channel <= 96)
0129         return 3;
0130     if (channel <= 112)
0131         return 4;
0132     if (channel <= 128)
0133         return 5;
0134     if (channel <= 144)
0135         return 6;
0136     return 7;
0137 }
0138 
0139 static inline int
0140 mt7915_get_channel_group_6g(int channel)
0141 {
0142     if (channel <= 29)
0143         return 0;
0144 
0145     return DIV_ROUND_UP(channel - 29, 32);
0146 }
0147 
0148 static inline bool
0149 mt7915_tssi_enabled(struct mt7915_dev *dev, enum nl80211_band band)
0150 {
0151     u8 *eep = dev->mt76.eeprom.data;
0152     u8 val = eep[MT_EE_WIFI_CONF + 7];
0153 
0154     if (band == NL80211_BAND_2GHZ)
0155         return val & MT_EE_WIFI_CONF7_TSSI0_2G;
0156 
0157     if (dev->dbdc_support)
0158         return val & MT_EE_WIFI_CONF7_TSSI1_5G;
0159     else
0160         return val & MT_EE_WIFI_CONF7_TSSI0_5G;
0161 }
0162 
0163 extern const u8 mt7915_sku_group_len[MAX_SKU_RATE_GROUP_NUM];
0164 
0165 #endif