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