1 /****************************************************************************** 2 * 3 * Copyright(c) 2007 - 2017 Realtek Corporation. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of version 2 of the GNU General Public License as 7 * published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 *****************************************************************************/ 15 #ifndef __HAL_PHY_H__ 16 #define __HAL_PHY_H__ 17 18 19 #if DISABLE_BB_RF 20 #define HAL_FW_ENABLE 0 21 #define HAL_MAC_ENABLE 0 22 #define HAL_BB_ENABLE 0 23 #define HAL_RF_ENABLE 0 24 #else /* FPGA_PHY and ASIC */ 25 #define HAL_FW_ENABLE 1 26 #define HAL_MAC_ENABLE 1 27 #define HAL_BB_ENABLE 1 28 #define HAL_RF_ENABLE 1 29 #endif 30 31 #define RF6052_MAX_TX_PWR 0x3F 32 #define RF6052_MAX_REG_88E 0xFF 33 #define RF6052_MAX_REG_92C 0x7F 34 35 #define RF6052_MAX_REG \ 36 ((RF6052_MAX_REG_88E > RF6052_MAX_REG_92C) ? RF6052_MAX_REG_88E : RF6052_MAX_REG_92C) 37 38 #define GET_RF6052_REAL_MAX_REG(_Adapter) \ 39 (IS_HARDWARE_TYPE_8188E(_Adapter) ? RF6052_MAX_REG_88E : RF6052_MAX_REG_92C) 40 41 #define RF6052_MAX_PATH 2 42 43 /* 44 * Antenna detection method, i.e., using single tone detection or RSSI reported from each antenna detected. 45 * Added by Roger, 2013.05.22. 46 * */ 47 #define ANT_DETECT_BY_SINGLE_TONE BIT0 48 #define ANT_DETECT_BY_RSSI BIT1 49 #define IS_ANT_DETECT_SUPPORT_SINGLE_TONE(__Adapter) ((GET_HAL_DATA(__Adapter)->AntDetection) & ANT_DETECT_BY_SINGLE_TONE) 50 #define IS_ANT_DETECT_SUPPORT_RSSI(__Adapter) ((GET_HAL_DATA(__Adapter)->AntDetection) & ANT_DETECT_BY_RSSI) 51 52 53 /*--------------------------Define Parameters-------------------------------*/ 54 typedef enum _RF_CHIP { 55 RF_CHIP_MIN = 0, /* 0 */ 56 RF_8225 = 1, /* 1 11b/g RF for verification only */ 57 RF_8256 = 2, /* 2 11b/g/n */ 58 RF_8258 = 3, /* 3 11a/b/g/n RF */ 59 RF_6052 = 4, /* 4 11b/g/n RF */ 60 RF_PSEUDO_11N = 5, /* 5, It is a temporality RF. */ 61 RF_CHIP_MAX 62 } RF_CHIP_E, *PRF_CHIP_E; 63 64 typedef enum _ANTENNA_PATH { 65 ANTENNA_NONE = 0, 66 ANTENNA_D = 1, 67 ANTENNA_C = 2, 68 ANTENNA_CD = 3, 69 ANTENNA_B = 4, 70 ANTENNA_BD = 5, 71 ANTENNA_BC = 6, 72 ANTENNA_BCD = 7, 73 ANTENNA_A = 8, 74 ANTENNA_AD = 9, 75 ANTENNA_AC = 10, 76 ANTENNA_ACD = 11, 77 ANTENNA_AB = 12, 78 ANTENNA_ABD = 13, 79 ANTENNA_ABC = 14, 80 ANTENNA_ABCD = 15 81 } ANTENNA_PATH; 82 83 typedef enum _RF_CONTENT { 84 radioa_txt = 0x1000, 85 radiob_txt = 0x1001, 86 radioc_txt = 0x1002, 87 radiod_txt = 0x1003 88 } RF_CONTENT; 89 90 typedef enum _BaseBand_Config_Type { 91 BaseBand_Config_PHY_REG = 0, /* Radio Path A */ 92 BaseBand_Config_AGC_TAB = 1, /* Radio Path B */ 93 BaseBand_Config_AGC_TAB_2G = 2, 94 BaseBand_Config_AGC_TAB_5G = 3, 95 BaseBand_Config_PHY_REG_PG 96 } BaseBand_Config_Type, *PBaseBand_Config_Type; 97 98 typedef enum _HW_BLOCK { 99 HW_BLOCK_MAC = 0, 100 HW_BLOCK_PHY0 = 1, 101 HW_BLOCK_PHY1 = 2, 102 HW_BLOCK_RF = 3, 103 HW_BLOCK_MAXIMUM = 4, /* Never use this */ 104 } HW_BLOCK_E, *PHW_BLOCK_E; 105 106 typedef enum _WIRELESS_MODE { 107 WIRELESS_MODE_UNKNOWN = 0x00, 108 WIRELESS_MODE_A = 0x01, 109 WIRELESS_MODE_B = 0x02, 110 WIRELESS_MODE_G = 0x04, 111 WIRELESS_MODE_AUTO = 0x08, 112 WIRELESS_MODE_N_24G = 0x10, 113 WIRELESS_MODE_N_5G = 0x20, 114 WIRELESS_MODE_AC_5G = 0x40, 115 WIRELESS_MODE_AC_24G = 0x80, 116 WIRELESS_MODE_AC_ONLY = 0x100, 117 } WIRELESS_MODE; 118 119 typedef enum _SwChnlCmdID { 120 CmdID_End, 121 CmdID_SetTxPowerLevel, 122 CmdID_BBRegWrite10, 123 CmdID_WritePortUlong, 124 CmdID_WritePortUshort, 125 CmdID_WritePortUchar, 126 CmdID_RF_WriteReg, 127 } SwChnlCmdID; 128 129 typedef struct _SwChnlCmd { 130 SwChnlCmdID CmdID; 131 u32 Para1; 132 u32 Para2; 133 u32 msDelay; 134 } SwChnlCmd; 135 136 typedef struct _R_ANTENNA_SELECT_OFDM { 137 u32 r_tx_antenna:4; 138 u32 r_ant_l:4; 139 u32 r_ant_non_ht:4; 140 u32 r_ant_ht1:4; 141 u32 r_ant_ht2:4; 142 u32 r_ant_ht_s1:4; 143 u32 r_ant_non_ht_s1:4; 144 u32 OFDM_TXSC:2; 145 u32 Reserved:2; 146 } R_ANTENNA_SELECT_OFDM; 147 148 typedef struct _R_ANTENNA_SELECT_CCK { 149 u8 r_cckrx_enable_2:2; 150 u8 r_cckrx_enable:2; 151 u8 r_ccktx_enable:4; 152 } R_ANTENNA_SELECT_CCK; 153 154 typedef struct RF_Shadow_Compare_Map { 155 /* Shadow register value */ 156 u32 Value; 157 /* Compare or not flag */ 158 u8 Compare; 159 /* Record If it had ever modified unpredicted */ 160 u8 ErrorOrNot; 161 /* Recorver Flag */ 162 u8 Recorver; 163 /* */ 164 u8 Driver_Write; 165 } RF_SHADOW_T; 166 167 /*--------------------------Exported Function prototype---------------------*/ 168 169 u32 170 PHY_CalculateBitShift( 171 u32 BitMask 172 ); 173 174 u32 175 PHY_RFShadowRead( 176 IN PADAPTER Adapter, 177 IN enum rf_path eRFPath, 178 IN u32 Offset); 179 180 VOID 181 PHY_RFShadowWrite( 182 IN PADAPTER Adapter, 183 IN enum rf_path eRFPath, 184 IN u32 Offset, 185 IN u32 Data); 186 187 BOOLEAN 188 PHY_RFShadowCompare( 189 IN PADAPTER Adapter, 190 IN enum rf_path eRFPath, 191 IN u32 Offset); 192 193 VOID 194 PHY_RFShadowRecorver( 195 IN PADAPTER Adapter, 196 IN enum rf_path eRFPath, 197 IN u32 Offset); 198 199 VOID 200 PHY_RFShadowCompareAll( 201 IN PADAPTER Adapter); 202 203 VOID 204 PHY_RFShadowRecorverAll( 205 IN PADAPTER Adapter); 206 207 VOID 208 PHY_RFShadowCompareFlagSet( 209 IN PADAPTER Adapter, 210 IN enum rf_path eRFPath, 211 IN u32 Offset, 212 IN u8 Type); 213 214 VOID 215 PHY_RFShadowRecorverFlagSet( 216 IN PADAPTER Adapter, 217 IN enum rf_path eRFPath, 218 IN u32 Offset, 219 IN u8 Type); 220 221 VOID 222 PHY_RFShadowCompareFlagSetAll( 223 IN PADAPTER Adapter); 224 225 VOID 226 PHY_RFShadowRecorverFlagSetAll( 227 IN PADAPTER Adapter); 228 229 VOID 230 PHY_RFShadowRefresh( 231 IN PADAPTER Adapter); 232 233 #endif /* __HAL_COMMON_H__ */ 234