1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#define _HAL_PHY_C_
16
17#include <drv_types.h>
18
19
20
21
22
23
24
25
26
27
28
29
30u32 PHY_CalculateBitShift(u32 BitMask)
31{
32 u32 i;
33
34 for (i = 0; i <= 31; i++) {
35 if (((BitMask>>i) & 0x1) == 1)
36 break;
37 }
38
39 return i;
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
71u32 PHY_RFShadowRead(IN PADAPTER Adapter, IN u8 eRFPath, IN u32 Offset)
72{
73 return RF_Shadow[eRFPath][Offset].Value;
74
75}
76
77
78void PHY_RFShadowWrite(
79 IN PADAPTER Adapter, IN u8 eRFPath, IN u32 Offset, IN u32 Data
80)
81{
82 RF_Shadow[eRFPath][Offset].Value = (Data & bRFRegOffsetMask);
83 RF_Shadow[eRFPath][Offset].Driver_Write = true;
84
85}
86
87
88bool PHY_RFShadowCompare(IN PADAPTER Adapter, IN u8 eRFPath, IN u32 Offset)
89{
90 u32 reg;
91
92 if (RF_Shadow[eRFPath][Offset].Compare == true) {
93 reg = rtw_hal_read_rfreg(Adapter, eRFPath, Offset, bRFRegOffsetMask);
94
95 if (RF_Shadow[eRFPath][Offset].Value != reg) {
96
97 RF_Shadow[eRFPath][Offset].ErrorOrNot = true;
98
99
100
101 }
102 return RF_Shadow[eRFPath][Offset].ErrorOrNot;
103 }
104 return false;
105}
106
107
108void PHY_RFShadowRecorver(IN PADAPTER Adapter, IN u8 eRFPath, IN u32 Offset)
109{
110
111 if (RF_Shadow[eRFPath][Offset].ErrorOrNot == true) {
112
113 if (RF_Shadow[eRFPath][Offset].Recorver == true) {
114 rtw_hal_write_rfreg(Adapter, eRFPath, Offset, bRFRegOffsetMask,
115 RF_Shadow[eRFPath][Offset].Value);
116
117
118
119 }
120 }
121
122}
123
124
125void PHY_RFShadowCompareAll(IN PADAPTER Adapter)
126{
127 u8 eRFPath = 0;
128 u32 Offset = 0, maxReg = GET_RF6052_REAL_MAX_REG(Adapter);
129
130 for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++) {
131 for (Offset = 0; Offset < maxReg; Offset++) {
132 PHY_RFShadowCompare(Adapter, eRFPath, Offset);
133 }
134 }
135
136}
137
138
139void PHY_RFShadowRecorverAll(IN PADAPTER Adapter)
140{
141 u8 eRFPath = 0;
142 u32 Offset = 0, maxReg = GET_RF6052_REAL_MAX_REG(Adapter);
143
144 for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++) {
145 for (Offset = 0; Offset < maxReg; Offset++) {
146 PHY_RFShadowRecorver(Adapter, eRFPath, Offset);
147 }
148 }
149
150}
151
152
153void
154PHY_RFShadowCompareFlagSet(
155 IN PADAPTER Adapter, IN u8 eRFPath, IN u32 Offset, IN u8 Type
156)
157{
158
159 RF_Shadow[eRFPath][Offset].Compare = Type;
160
161}
162
163
164void PHY_RFShadowRecorverFlagSet(
165 IN PADAPTER Adapter, IN u8 eRFPath, IN u32 Offset, IN u8 Type
166)
167{
168
169 RF_Shadow[eRFPath][Offset].Recorver = Type;
170
171}
172
173
174void PHY_RFShadowCompareFlagSetAll(IN PADAPTER Adapter)
175{
176 u8 eRFPath = 0;
177 u32 Offset = 0, maxReg = GET_RF6052_REAL_MAX_REG(Adapter);
178
179 for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++) {
180 for (Offset = 0; Offset < maxReg; Offset++) {
181
182 if (Offset != 0x26 && Offset != 0x27)
183 PHY_RFShadowCompareFlagSet(Adapter, eRFPath, Offset, false);
184 else
185 PHY_RFShadowCompareFlagSet(Adapter, eRFPath, Offset, true);
186 }
187 }
188
189}
190
191
192void PHY_RFShadowRecorverFlagSetAll(IN PADAPTER Adapter)
193{
194 u8 eRFPath = 0;
195 u32 Offset = 0, maxReg = GET_RF6052_REAL_MAX_REG(Adapter);
196
197 for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++) {
198 for (Offset = 0; Offset < maxReg; Offset++) {
199
200 if (Offset != 0x26 && Offset != 0x27)
201 PHY_RFShadowRecorverFlagSet(Adapter, eRFPath, Offset, false);
202 else
203 PHY_RFShadowRecorverFlagSet(Adapter, eRFPath, Offset, true);
204 }
205 }
206
207}
208
209void PHY_RFShadowRefresh(IN PADAPTER Adapter)
210{
211 u8 eRFPath = 0;
212 u32 Offset = 0, maxReg = GET_RF6052_REAL_MAX_REG(Adapter);
213
214 for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++) {
215 for (Offset = 0; Offset < maxReg; Offset++) {
216 RF_Shadow[eRFPath][Offset].Value = 0;
217 RF_Shadow[eRFPath][Offset].Compare = false;
218 RF_Shadow[eRFPath][Offset].Recorver = false;
219 RF_Shadow[eRFPath][Offset].ErrorOrNot = false;
220 RF_Shadow[eRFPath][Offset].Driver_Write = false;
221 }
222 }
223
224}
225