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