Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: ISC */
0002 /* Copyright (C) 2019 MediaTek Inc. */
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