0001
0002
0003
0004 #ifndef __RTL8821AE_DEF_H__
0005 #define __RTL8821AE_DEF_H__
0006
0007
0008 #define USE_SPECIFIC_FW_TO_SUPPORT_WOWLAN 1
0009
0010
0011
0012 #define MGN_1M 0x02
0013 #define MGN_2M 0x04
0014 #define MGN_5_5M 0x0b
0015 #define MGN_11M 0x16
0016
0017 #define MGN_6M 0x0c
0018 #define MGN_9M 0x12
0019 #define MGN_12M 0x18
0020 #define MGN_18M 0x24
0021 #define MGN_24M 0x30
0022 #define MGN_36M 0x48
0023 #define MGN_48M 0x60
0024 #define MGN_54M 0x6c
0025
0026
0027 #define MGN_MCS0 0x80
0028 #define MGN_MCS1 0x81
0029 #define MGN_MCS2 0x82
0030 #define MGN_MCS3 0x83
0031 #define MGN_MCS4 0x84
0032 #define MGN_MCS5 0x85
0033 #define MGN_MCS6 0x86
0034 #define MGN_MCS7 0x87
0035 #define MGN_MCS8 0x88
0036 #define MGN_MCS9 0x89
0037 #define MGN_MCS10 0x8a
0038 #define MGN_MCS11 0x8b
0039 #define MGN_MCS12 0x8c
0040 #define MGN_MCS13 0x8d
0041 #define MGN_MCS14 0x8e
0042 #define MGN_MCS15 0x8f
0043
0044 #define MGN_VHT1SS_MCS0 0x90
0045 #define MGN_VHT1SS_MCS1 0x91
0046 #define MGN_VHT1SS_MCS2 0x92
0047 #define MGN_VHT1SS_MCS3 0x93
0048 #define MGN_VHT1SS_MCS4 0x94
0049 #define MGN_VHT1SS_MCS5 0x95
0050 #define MGN_VHT1SS_MCS6 0x96
0051 #define MGN_VHT1SS_MCS7 0x97
0052 #define MGN_VHT1SS_MCS8 0x98
0053 #define MGN_VHT1SS_MCS9 0x99
0054 #define MGN_VHT2SS_MCS0 0x9a
0055 #define MGN_VHT2SS_MCS1 0x9b
0056 #define MGN_VHT2SS_MCS2 0x9c
0057 #define MGN_VHT2SS_MCS3 0x9d
0058 #define MGN_VHT2SS_MCS4 0x9e
0059 #define MGN_VHT2SS_MCS5 0x9f
0060 #define MGN_VHT2SS_MCS6 0xa0
0061 #define MGN_VHT2SS_MCS7 0xa1
0062 #define MGN_VHT2SS_MCS8 0xa2
0063 #define MGN_VHT2SS_MCS9 0xa3
0064
0065 #define MGN_VHT3SS_MCS0 0xa4
0066 #define MGN_VHT3SS_MCS1 0xa5
0067 #define MGN_VHT3SS_MCS2 0xa6
0068 #define MGN_VHT3SS_MCS3 0xa7
0069 #define MGN_VHT3SS_MCS4 0xa8
0070 #define MGN_VHT3SS_MCS5 0xa9
0071 #define MGN_VHT3SS_MCS6 0xaa
0072 #define MGN_VHT3SS_MCS7 0xab
0073 #define MGN_VHT3SS_MCS8 0xac
0074 #define MGN_VHT3SS_MCS9 0xad
0075
0076 #define MGN_MCS0_SG 0xc0
0077 #define MGN_MCS1_SG 0xc1
0078 #define MGN_MCS2_SG 0xc2
0079 #define MGN_MCS3_SG 0xc3
0080 #define MGN_MCS4_SG 0xc4
0081 #define MGN_MCS5_SG 0xc5
0082 #define MGN_MCS6_SG 0xc6
0083 #define MGN_MCS7_SG 0xc7
0084 #define MGN_MCS8_SG 0xc8
0085 #define MGN_MCS9_SG 0xc9
0086 #define MGN_MCS10_SG 0xca
0087 #define MGN_MCS11_SG 0xcb
0088 #define MGN_MCS12_SG 0xcc
0089 #define MGN_MCS13_SG 0xcd
0090 #define MGN_MCS14_SG 0xce
0091 #define MGN_MCS15_SG 0xcf
0092
0093 #define MGN_UNKNOWN 0xff
0094
0095
0096 #define WIFI_NAV_UPPER_US 30000
0097 #define HAL_92C_NAV_UPPER_UNIT 128
0098
0099 #define MAX_RX_DMA_BUFFER_SIZE 0x3E80
0100
0101 #define HAL_PRIME_CHNL_OFFSET_DONT_CARE 0
0102 #define HAL_PRIME_CHNL_OFFSET_LOWER 1
0103 #define HAL_PRIME_CHNL_OFFSET_UPPER 2
0104
0105 #define RX_MPDU_QUEUE 0
0106 #define RX_CMD_QUEUE 1
0107
0108 #define MAX_RX_DMA_BUFFER_SIZE_8812 0x3E80
0109
0110 #define CHIP_BONDING_IDENTIFIER(_value) (((_value)>>22)&0x3)
0111
0112 #define CHIP_8812 BIT(2)
0113 #define CHIP_8821 (BIT(0)|BIT(2))
0114
0115 #define CHIP_8821A (BIT(0)|BIT(2))
0116 #define NORMAL_CHIP BIT(3)
0117 #define RF_TYPE_1T1R (~(BIT(4)|BIT(5)|BIT(6)))
0118 #define RF_TYPE_1T2R BIT(4)
0119 #define RF_TYPE_2T2R BIT(5)
0120 #define CHIP_VENDOR_UMC BIT(7)
0121 #define B_CUT_VERSION BIT(12)
0122 #define C_CUT_VERSION BIT(13)
0123 #define D_CUT_VERSION ((BIT(12)|BIT(13)))
0124 #define E_CUT_VERSION BIT(14)
0125 #define RF_RL_ID (BIT(31)|BIT(30)|BIT(29)|BIT(28))
0126
0127 enum version_8821ae {
0128 VERSION_TEST_CHIP_1T1R_8812 = 0x0004,
0129 VERSION_TEST_CHIP_2T2R_8812 = 0x0024,
0130 VERSION_NORMAL_TSMC_CHIP_1T1R_8812 = 0x100c,
0131 VERSION_NORMAL_TSMC_CHIP_2T2R_8812 = 0x102c,
0132 VERSION_NORMAL_TSMC_CHIP_1T1R_8812_C_CUT = 0x200c,
0133 VERSION_NORMAL_TSMC_CHIP_2T2R_8812_C_CUT = 0x202c,
0134 VERSION_TEST_CHIP_8821 = 0x0005,
0135 VERSION_NORMAL_TSMC_CHIP_8821 = 0x000d,
0136 VERSION_NORMAL_TSMC_CHIP_8821_B_CUT = 0x100d,
0137 VERSION_UNKNOWN = 0xFF,
0138 };
0139
0140 enum vht_data_sc {
0141 VHT_DATA_SC_DONOT_CARE = 0,
0142 VHT_DATA_SC_20_UPPER_OF_80MHZ = 1,
0143 VHT_DATA_SC_20_LOWER_OF_80MHZ = 2,
0144 VHT_DATA_SC_20_UPPERST_OF_80MHZ = 3,
0145 VHT_DATA_SC_20_LOWEST_OF_80MHZ = 4,
0146 VHT_DATA_SC_20_RECV1 = 5,
0147 VHT_DATA_SC_20_RECV2 = 6,
0148 VHT_DATA_SC_20_RECV3 = 7,
0149 VHT_DATA_SC_20_RECV4 = 8,
0150 VHT_DATA_SC_40_UPPER_OF_80MHZ = 9,
0151 VHT_DATA_SC_40_LOWER_OF_80MHZ = 10,
0152 };
0153
0154
0155 #define IC_TYPE_MASK (BIT(0)|BIT(1)|BIT(2))
0156 #define CHIP_TYPE_MASK BIT(3)
0157 #define RF_TYPE_MASK (BIT(4)|BIT(5)|BIT(6))
0158 #define MANUFACTUER_MASK BIT(7)
0159 #define ROM_VERSION_MASK (BIT(11)|BIT(10)|BIT(9)|BIT(8))
0160 #define CUT_VERSION_MASK (BIT(15)|BIT(14)|BIT(13)|BIT(12))
0161
0162
0163 #define GET_CVID_IC_TYPE(version) ((version) & IC_TYPE_MASK)
0164 #define GET_CVID_CHIP_TYPE(version) ((version) & CHIP_TYPE_MASK)
0165 #define GET_CVID_RF_TYPE(version) ((version) & RF_TYPE_MASK)
0166 #define GET_CVID_MANUFACTUER(version) ((version) & MANUFACTUER_MASK)
0167 #define GET_CVID_ROM_VERSION(version) ((version) & ROM_VERSION_MASK)
0168 #define GET_CVID_CUT_VERSION(version) ((version) & CUT_VERSION_MASK)
0169
0170 #define IS_1T1R(version) ((GET_CVID_RF_TYPE(version)) ? false : true)
0171 #define IS_1T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_1T2R)\
0172 ? true : false)
0173 #define IS_2T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_2T2R)\
0174 ? true : false)
0175
0176 #define IS_8812_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8812) ? \
0177 true : false)
0178 #define IS_8821_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8821) ? \
0179 true : false)
0180
0181 #define IS_VENDOR_8812A_TEST_CHIP(version) ((IS_8812_SERIES(version)) ? \
0182 ((IS_NORMAL_CHIP(version)) ? \
0183 false : true) : false)
0184 #define IS_VENDOR_8812A_MP_CHIP(version) ((IS_8812_SERIES(version)) ? \
0185 ((IS_NORMAL_CHIP(version)) ? \
0186 true : false) : false)
0187 #define IS_VENDOR_8812A_C_CUT(version) ((IS_8812_SERIES(version)) ? \
0188 ((GET_CVID_CUT_VERSION(version) == \
0189 C_CUT_VERSION) ? \
0190 true : false) : false)
0191
0192 #define IS_VENDOR_8821A_TEST_CHIP(version) ((IS_8821_SERIES(version)) ? \
0193 ((IS_NORMAL_CHIP(version)) ? \
0194 false : true) : false)
0195 #define IS_VENDOR_8821A_MP_CHIP(version) ((IS_8821_SERIES(version)) ? \
0196 ((IS_NORMAL_CHIP(version)) ? \
0197 true : false) : false)
0198 #define IS_VENDOR_8821A_B_CUT(version) ((IS_8821_SERIES(version)) ? \
0199 ((GET_CVID_CUT_VERSION(version) == \
0200 B_CUT_VERSION) ? \
0201 true : false) : false)
0202 enum board_type {
0203 ODM_BOARD_DEFAULT = 0,
0204 ODM_BOARD_MINICARD = BIT(0),
0205 ODM_BOARD_SLIM = BIT(1),
0206 ODM_BOARD_BT = BIT(2),
0207 ODM_BOARD_EXT_PA = BIT(3),
0208 ODM_BOARD_EXT_LNA = BIT(4),
0209 ODM_BOARD_EXT_TRSW = BIT(5),
0210 ODM_BOARD_EXT_PA_5G = BIT(6),
0211 ODM_BOARD_EXT_LNA_5G = BIT(7),
0212 };
0213
0214 enum rf_optype {
0215 RF_OP_BY_SW_3WIRE = 0,
0216 RF_OP_BY_FW,
0217 RF_OP_MAX
0218 };
0219
0220 enum rf_power_state {
0221 RF_ON,
0222 RF_OFF,
0223 RF_SLEEP,
0224 RF_SHUT_DOWN,
0225 };
0226
0227 enum power_save_mode {
0228 POWER_SAVE_MODE_ACTIVE,
0229 POWER_SAVE_MODE_SAVE,
0230 };
0231
0232 enum power_polocy_config {
0233 POWERCFG_MAX_POWER_SAVINGS,
0234 POWERCFG_GLOBAL_POWER_SAVINGS,
0235 POWERCFG_LOCAL_POWER_SAVINGS,
0236 POWERCFG_LENOVO,
0237 };
0238
0239 enum interface_select_pci {
0240 INTF_SEL1_MINICARD = 0,
0241 INTF_SEL0_PCIE = 1,
0242 INTF_SEL2_RSV = 2,
0243 INTF_SEL3_RSV = 3,
0244 };
0245
0246 enum rtl_desc_qsel {
0247 QSLT_BK = 0x2,
0248 QSLT_BE = 0x0,
0249 QSLT_VI = 0x5,
0250 QSLT_VO = 0x7,
0251 QSLT_BEACON = 0x10,
0252 QSLT_HIGH = 0x11,
0253 QSLT_MGNT = 0x12,
0254 QSLT_CMD = 0x13,
0255 };
0256
0257 struct phy_sts_cck_8821ae_t {
0258 u8 adc_pwdb_X[4];
0259 u8 sq_rpt;
0260 u8 cck_agc_rpt;
0261 };
0262
0263 struct h2c_cmd_8821ae {
0264 u8 element_id;
0265 u32 cmd_len;
0266 u8 *p_cmdbuffer;
0267 };
0268
0269 #endif