Lines Matching +full:0 +full:x80040000

55 MODULE_PARM_DESC(dma_agg_pages, "Set DMA aggregation pages (range 1-127, 0 to disable)");
57 #define USB_VENDOR_ID_REALTEK 0x0bda
68 { .bitrate = 10, .hw_value = DESC_RATE_1M, .flags = 0 },
69 { .bitrate = 20, .hw_value = DESC_RATE_2M, .flags = 0 },
70 { .bitrate = 55, .hw_value = DESC_RATE_5_5M, .flags = 0 },
71 { .bitrate = 110, .hw_value = DESC_RATE_11M, .flags = 0 },
72 { .bitrate = 60, .hw_value = DESC_RATE_6M, .flags = 0 },
73 { .bitrate = 90, .hw_value = DESC_RATE_9M, .flags = 0 },
74 { .bitrate = 120, .hw_value = DESC_RATE_12M, .flags = 0 },
75 { .bitrate = 180, .hw_value = DESC_RATE_18M, .flags = 0 },
76 { .bitrate = 240, .hw_value = DESC_RATE_24M, .flags = 0 },
77 { .bitrate = 360, .hw_value = DESC_RATE_36M, .flags = 0 },
78 { .bitrate = 480, .hw_value = DESC_RATE_48M, .flags = 0 },
79 { .bitrate = 540, .hw_value = DESC_RATE_54M, .flags = 0 },
121 {0x800, 0x80040000}, {0x804, 0x00000003},
122 {0x808, 0x0000fc00}, {0x80c, 0x0000000a},
123 {0x810, 0x10001331}, {0x814, 0x020c3d10},
124 {0x818, 0x02200385}, {0x81c, 0x00000000},
125 {0x820, 0x01000100}, {0x824, 0x00390004},
126 {0x828, 0x00000000}, {0x82c, 0x00000000},
127 {0x830, 0x00000000}, {0x834, 0x00000000},
128 {0x838, 0x00000000}, {0x83c, 0x00000000},
129 {0x840, 0x00010000}, {0x844, 0x00000000},
130 {0x848, 0x00000000}, {0x84c, 0x00000000},
131 {0x850, 0x00000000}, {0x854, 0x00000000},
132 {0x858, 0x569a569a}, {0x85c, 0x001b25a4},
133 {0x860, 0x66f60110}, {0x864, 0x061f0130},
134 {0x868, 0x00000000}, {0x86c, 0x32323200},
135 {0x870, 0x07000760}, {0x874, 0x22004000},
136 {0x878, 0x00000808}, {0x87c, 0x00000000},
137 {0x880, 0xc0083070}, {0x884, 0x000004d5},
138 {0x888, 0x00000000}, {0x88c, 0xccc000c0},
139 {0x890, 0x00000800}, {0x894, 0xfffffffe},
140 {0x898, 0x40302010}, {0x89c, 0x00706050},
141 {0x900, 0x00000000}, {0x904, 0x00000023},
142 {0x908, 0x00000000}, {0x90c, 0x81121111},
143 {0xa00, 0x00d047c8}, {0xa04, 0x80ff000c},
144 {0xa08, 0x8c838300}, {0xa0c, 0x2e68120f},
145 {0xa10, 0x9500bb78}, {0xa14, 0x11144028},
146 {0xa18, 0x00881117}, {0xa1c, 0x89140f00},
147 {0xa20, 0x1a1b0000}, {0xa24, 0x090e1317},
148 {0xa28, 0x00000204}, {0xa2c, 0x00d30000},
149 {0xa70, 0x101fbf00}, {0xa74, 0x00000007},
150 {0xa78, 0x00000900},
151 {0xc00, 0x48071d40}, {0xc04, 0x03a05611},
152 {0xc08, 0x000000e4}, {0xc0c, 0x6c6c6c6c},
153 {0xc10, 0x08800000}, {0xc14, 0x40000100},
154 {0xc18, 0x08800000}, {0xc1c, 0x40000100},
155 {0xc20, 0x00000000}, {0xc24, 0x00000000},
156 {0xc28, 0x00000000}, {0xc2c, 0x00000000},
157 {0xc30, 0x69e9ac44}, {0xc34, 0x469652af},
158 {0xc38, 0x49795994}, {0xc3c, 0x0a97971c},
159 {0xc40, 0x1f7c403f}, {0xc44, 0x000100b7},
160 {0xc48, 0xec020107}, {0xc4c, 0x007f037f},
161 {0xc50, 0x69543420}, {0xc54, 0x43bc0094},
162 {0xc58, 0x69543420}, {0xc5c, 0x433c0094},
163 {0xc60, 0x00000000}, {0xc64, 0x7112848b},
164 {0xc68, 0x47c00bff}, {0xc6c, 0x00000036},
165 {0xc70, 0x2c7f000d}, {0xc74, 0x018610db},
166 {0xc78, 0x0000001f}, {0xc7c, 0x00b91612},
167 {0xc80, 0x40000100}, {0xc84, 0x20f60000},
168 {0xc88, 0x40000100}, {0xc8c, 0x20200000},
169 {0xc90, 0x00121820}, {0xc94, 0x00000000},
170 {0xc98, 0x00121820}, {0xc9c, 0x00007f7f},
171 {0xca0, 0x00000000}, {0xca4, 0x00000080},
172 {0xca8, 0x00000000}, {0xcac, 0x00000000},
173 {0xcb0, 0x00000000}, {0xcb4, 0x00000000},
174 {0xcb8, 0x00000000}, {0xcbc, 0x28000000},
175 {0xcc0, 0x00000000}, {0xcc4, 0x00000000},
176 {0xcc8, 0x00000000}, {0xccc, 0x00000000},
177 {0xcd0, 0x00000000}, {0xcd4, 0x00000000},
178 {0xcd8, 0x64b22427}, {0xcdc, 0x00766932},
179 {0xce0, 0x00222222}, {0xce4, 0x00000000},
180 {0xce8, 0x37644302}, {0xcec, 0x2f97d40c},
181 {0xd00, 0x00080740}, {0xd04, 0x00020401},
182 {0xd08, 0x0000907f}, {0xd0c, 0x20010201},
183 {0xd10, 0xa0633333}, {0xd14, 0x3333bc43},
184 {0xd18, 0x7a8f5b6b}, {0xd2c, 0xcc979975},
185 {0xd30, 0x00000000}, {0xd34, 0x80608000},
186 {0xd38, 0x00000000}, {0xd3c, 0x00027293},
187 {0xd40, 0x00000000}, {0xd44, 0x00000000},
188 {0xd48, 0x00000000}, {0xd4c, 0x00000000},
189 {0xd50, 0x6437140a}, {0xd54, 0x00000000},
190 {0xd58, 0x00000000}, {0xd5c, 0x30032064},
191 {0xd60, 0x4653de68}, {0xd64, 0x04518a3c},
192 {0xd68, 0x00002101}, {0xd6c, 0x2a201c16},
193 {0xd70, 0x1812362e}, {0xd74, 0x322c2220},
194 {0xd78, 0x000e3c24}, {0xe00, 0x2a2a2a2a},
195 {0xe04, 0x2a2a2a2a}, {0xe08, 0x03902a2a},
196 {0xe10, 0x2a2a2a2a}, {0xe14, 0x2a2a2a2a},
197 {0xe18, 0x2a2a2a2a}, {0xe1c, 0x2a2a2a2a},
198 {0xe28, 0x00000000}, {0xe30, 0x1000dc1f},
199 {0xe34, 0x10008c1f}, {0xe38, 0x02140102},
200 {0xe3c, 0x681604c2}, {0xe40, 0x01007c00},
201 {0xe44, 0x01004800}, {0xe48, 0xfb000000},
202 {0xe4c, 0x000028d1}, {0xe50, 0x1000dc1f},
203 {0xe54, 0x10008c1f}, {0xe58, 0x02140102},
204 {0xe5c, 0x28160d05}, {0xe60, 0x00000008},
205 {0xe68, 0x001b25a4}, {0xe6c, 0x631b25a0},
206 {0xe70, 0x631b25a0}, {0xe74, 0x081b25a0},
207 {0xe78, 0x081b25a0}, {0xe7c, 0x081b25a0},
208 {0xe80, 0x081b25a0}, {0xe84, 0x631b25a0},
209 {0xe88, 0x081b25a0}, {0xe8c, 0x631b25a0},
210 {0xed0, 0x631b25a0}, {0xed4, 0x631b25a0},
211 {0xed8, 0x631b25a0}, {0xedc, 0x001b25a0},
212 {0xee0, 0x001b25a0}, {0xeec, 0x6b1b25a0},
213 {0xf14, 0x00000003}, {0xf4c, 0x00000000},
214 {0xf00, 0x00000300},
215 {0xffff, 0xffffffff},
219 {0x024, 0x0011800f}, {0x028, 0x00ffdb83},
220 {0x800, 0x80040002}, {0x804, 0x00000003},
221 {0x808, 0x0000fc00}, {0x80c, 0x0000000a},
222 {0x810, 0x10000330}, {0x814, 0x020c3d10},
223 {0x818, 0x02200385}, {0x81c, 0x00000000},
224 {0x820, 0x01000100}, {0x824, 0x00390004},
225 {0x828, 0x01000100}, {0x82c, 0x00390004},
226 {0x830, 0x27272727}, {0x834, 0x27272727},
227 {0x838, 0x27272727}, {0x83c, 0x27272727},
228 {0x840, 0x00010000}, {0x844, 0x00010000},
229 {0x848, 0x27272727}, {0x84c, 0x27272727},
230 {0x850, 0x00000000}, {0x854, 0x00000000},
231 {0x858, 0x569a569a}, {0x85c, 0x0c1b25a4},
232 {0x860, 0x66e60230}, {0x864, 0x061f0130},
233 {0x868, 0x27272727}, {0x86c, 0x2b2b2b27},
234 {0x870, 0x07000700}, {0x874, 0x22184000},
235 {0x878, 0x08080808}, {0x87c, 0x00000000},
236 {0x880, 0xc0083070}, {0x884, 0x000004d5},
237 {0x888, 0x00000000}, {0x88c, 0xcc0000c0},
238 {0x890, 0x00000800}, {0x894, 0xfffffffe},
239 {0x898, 0x40302010}, {0x89c, 0x00706050},
240 {0x900, 0x00000000}, {0x904, 0x00000023},
241 {0x908, 0x00000000}, {0x90c, 0x81121313},
242 {0xa00, 0x00d047c8}, {0xa04, 0x80ff000c},
243 {0xa08, 0x8c838300}, {0xa0c, 0x2e68120f},
244 {0xa10, 0x9500bb78}, {0xa14, 0x11144028},
245 {0xa18, 0x00881117}, {0xa1c, 0x89140f00},
246 {0xa20, 0x1a1b0000}, {0xa24, 0x090e1317},
247 {0xa28, 0x00000204}, {0xa2c, 0x00d30000},
248 {0xa70, 0x101fbf00}, {0xa74, 0x00000007},
249 {0xc00, 0x48071d40}, {0xc04, 0x03a05633},
250 {0xc08, 0x000000e4}, {0xc0c, 0x6c6c6c6c},
251 {0xc10, 0x08800000}, {0xc14, 0x40000100},
252 {0xc18, 0x08800000}, {0xc1c, 0x40000100},
253 {0xc20, 0x00000000}, {0xc24, 0x00000000},
254 {0xc28, 0x00000000}, {0xc2c, 0x00000000},
255 {0xc30, 0x69e9ac44}, {0xc34, 0x469652cf},
256 {0xc38, 0x49795994}, {0xc3c, 0x0a97971c},
257 {0xc40, 0x1f7c403f}, {0xc44, 0x000100b7},
258 {0xc48, 0xec020107}, {0xc4c, 0x007f037f},
259 {0xc50, 0x69543420}, {0xc54, 0x43bc0094},
260 {0xc58, 0x69543420}, {0xc5c, 0x433c0094},
261 {0xc60, 0x00000000}, {0xc64, 0x5116848b},
262 {0xc68, 0x47c00bff}, {0xc6c, 0x00000036},
263 {0xc70, 0x2c7f000d}, {0xc74, 0x2186115b},
264 {0xc78, 0x0000001f}, {0xc7c, 0x00b99612},
265 {0xc80, 0x40000100}, {0xc84, 0x20f60000},
266 {0xc88, 0x40000100}, {0xc8c, 0xa0e40000},
267 {0xc90, 0x00121820}, {0xc94, 0x00000000},
268 {0xc98, 0x00121820}, {0xc9c, 0x00007f7f},
269 {0xca0, 0x00000000}, {0xca4, 0x00000080},
270 {0xca8, 0x00000000}, {0xcac, 0x00000000},
271 {0xcb0, 0x00000000}, {0xcb4, 0x00000000},
272 {0xcb8, 0x00000000}, {0xcbc, 0x28000000},
273 {0xcc0, 0x00000000}, {0xcc4, 0x00000000},
274 {0xcc8, 0x00000000}, {0xccc, 0x00000000},
275 {0xcd0, 0x00000000}, {0xcd4, 0x00000000},
276 {0xcd8, 0x64b22427}, {0xcdc, 0x00766932},
277 {0xce0, 0x00222222}, {0xce4, 0x00000000},
278 {0xce8, 0x37644302}, {0xcec, 0x2f97d40c},
279 {0xd00, 0x00080740}, {0xd04, 0x00020403},
280 {0xd08, 0x0000907f}, {0xd0c, 0x20010201},
281 {0xd10, 0xa0633333}, {0xd14, 0x3333bc43},
282 {0xd18, 0x7a8f5b6b}, {0xd2c, 0xcc979975},
283 {0xd30, 0x00000000}, {0xd34, 0x80608000},
284 {0xd38, 0x00000000}, {0xd3c, 0x00027293},
285 {0xd40, 0x00000000}, {0xd44, 0x00000000},
286 {0xd48, 0x00000000}, {0xd4c, 0x00000000},
287 {0xd50, 0x6437140a}, {0xd54, 0x00000000},
288 {0xd58, 0x00000000}, {0xd5c, 0x30032064},
289 {0xd60, 0x4653de68}, {0xd64, 0x04518a3c},
290 {0xd68, 0x00002101}, {0xd6c, 0x2a201c16},
291 {0xd70, 0x1812362e}, {0xd74, 0x322c2220},
292 {0xd78, 0x000e3c24}, {0xe00, 0x2a2a2a2a},
293 {0xe04, 0x2a2a2a2a}, {0xe08, 0x03902a2a},
294 {0xe10, 0x2a2a2a2a}, {0xe14, 0x2a2a2a2a},
295 {0xe18, 0x2a2a2a2a}, {0xe1c, 0x2a2a2a2a},
296 {0xe28, 0x00000000}, {0xe30, 0x1000dc1f},
297 {0xe34, 0x10008c1f}, {0xe38, 0x02140102},
298 {0xe3c, 0x681604c2}, {0xe40, 0x01007c00},
299 {0xe44, 0x01004800}, {0xe48, 0xfb000000},
300 {0xe4c, 0x000028d1}, {0xe50, 0x1000dc1f},
301 {0xe54, 0x10008c1f}, {0xe58, 0x02140102},
302 {0xe5c, 0x28160d05}, {0xe60, 0x00000010},
303 {0xe68, 0x001b25a4}, {0xe6c, 0x63db25a4},
304 {0xe70, 0x63db25a4}, {0xe74, 0x0c1b25a4},
305 {0xe78, 0x0c1b25a4}, {0xe7c, 0x0c1b25a4},
306 {0xe80, 0x0c1b25a4}, {0xe84, 0x63db25a4},
307 {0xe88, 0x0c1b25a4}, {0xe8c, 0x63db25a4},
308 {0xed0, 0x63db25a4}, {0xed4, 0x63db25a4},
309 {0xed8, 0x63db25a4}, {0xedc, 0x001b25a4},
310 {0xee0, 0x001b25a4}, {0xeec, 0x6fdb25a4},
311 {0xf14, 0x00000003}, {0xf4c, 0x00000000},
312 {0xf00, 0x00000300},
313 {0xffff, 0xffffffff},
317 {0x024, 0x0011800f}, {0x028, 0x00ffdb83},
318 {0x040, 0x000c0004}, {0x800, 0x80040000},
319 {0x804, 0x00000001}, {0x808, 0x0000fc00},
320 {0x80c, 0x0000000a}, {0x810, 0x10005388},
321 {0x814, 0x020c3d10}, {0x818, 0x02200385},
322 {0x81c, 0x00000000}, {0x820, 0x01000100},
323 {0x824, 0x00390204}, {0x828, 0x00000000},
324 {0x82c, 0x00000000}, {0x830, 0x00000000},
325 {0x834, 0x00000000}, {0x838, 0x00000000},
326 {0x83c, 0x00000000}, {0x840, 0x00010000},
327 {0x844, 0x00000000}, {0x848, 0x00000000},
328 {0x84c, 0x00000000}, {0x850, 0x00000000},
329 {0x854, 0x00000000}, {0x858, 0x569a569a},
330 {0x85c, 0x001b25a4}, {0x860, 0x66e60230},
331 {0x864, 0x061f0130}, {0x868, 0x00000000},
332 {0x86c, 0x20202000}, {0x870, 0x03000300},
333 {0x874, 0x22004000}, {0x878, 0x00000808},
334 {0x87c, 0x00ffc3f1}, {0x880, 0xc0083070},
335 {0x884, 0x000004d5}, {0x888, 0x00000000},
336 {0x88c, 0xccc000c0}, {0x890, 0x00000800},
337 {0x894, 0xfffffffe}, {0x898, 0x40302010},
338 {0x89c, 0x00706050}, {0x900, 0x00000000},
339 {0x904, 0x00000023}, {0x908, 0x00000000},
340 {0x90c, 0x81121111}, {0xa00, 0x00d047c8},
341 {0xa04, 0x80ff000c}, {0xa08, 0x8c838300},
342 {0xa0c, 0x2e68120f}, {0xa10, 0x9500bb78},
343 {0xa14, 0x11144028}, {0xa18, 0x00881117},
344 {0xa1c, 0x89140f00}, {0xa20, 0x15160000},
345 {0xa24, 0x070b0f12}, {0xa28, 0x00000104},
346 {0xa2c, 0x00d30000}, {0xa70, 0x101fbf00},
347 {0xa74, 0x00000007}, {0xc00, 0x48071d40},
348 {0xc04, 0x03a05611}, {0xc08, 0x000000e4},
349 {0xc0c, 0x6c6c6c6c}, {0xc10, 0x08800000},
350 {0xc14, 0x40000100}, {0xc18, 0x08800000},
351 {0xc1c, 0x40000100}, {0xc20, 0x00000000},
352 {0xc24, 0x00000000}, {0xc28, 0x00000000},
353 {0xc2c, 0x00000000}, {0xc30, 0x69e9ac44},
354 {0xc34, 0x469652cf}, {0xc38, 0x49795994},
355 {0xc3c, 0x0a97971c}, {0xc40, 0x1f7c403f},
356 {0xc44, 0x000100b7}, {0xc48, 0xec020107},
357 {0xc4c, 0x007f037f}, {0xc50, 0x6954342e},
358 {0xc54, 0x43bc0094}, {0xc58, 0x6954342f},
359 {0xc5c, 0x433c0094}, {0xc60, 0x00000000},
360 {0xc64, 0x5116848b}, {0xc68, 0x47c00bff},
361 {0xc6c, 0x00000036}, {0xc70, 0x2c46000d},
362 {0xc74, 0x018610db}, {0xc78, 0x0000001f},
363 {0xc7c, 0x00b91612}, {0xc80, 0x24000090},
364 {0xc84, 0x20f60000}, {0xc88, 0x24000090},
365 {0xc8c, 0x20200000}, {0xc90, 0x00121820},
366 {0xc94, 0x00000000}, {0xc98, 0x00121820},
367 {0xc9c, 0x00007f7f}, {0xca0, 0x00000000},
368 {0xca4, 0x00000080}, {0xca8, 0x00000000},
369 {0xcac, 0x00000000}, {0xcb0, 0x00000000},
370 {0xcb4, 0x00000000}, {0xcb8, 0x00000000},
371 {0xcbc, 0x28000000}, {0xcc0, 0x00000000},
372 {0xcc4, 0x00000000}, {0xcc8, 0x00000000},
373 {0xccc, 0x00000000}, {0xcd0, 0x00000000},
374 {0xcd4, 0x00000000}, {0xcd8, 0x64b22427},
375 {0xcdc, 0x00766932}, {0xce0, 0x00222222},
376 {0xce4, 0x00000000}, {0xce8, 0x37644302},
377 {0xcec, 0x2f97d40c}, {0xd00, 0x00080740},
378 {0xd04, 0x00020401}, {0xd08, 0x0000907f},
379 {0xd0c, 0x20010201}, {0xd10, 0xa0633333},
380 {0xd14, 0x3333bc43}, {0xd18, 0x7a8f5b6b},
381 {0xd2c, 0xcc979975}, {0xd30, 0x00000000},
382 {0xd34, 0x80608000}, {0xd38, 0x00000000},
383 {0xd3c, 0x00027293}, {0xd40, 0x00000000},
384 {0xd44, 0x00000000}, {0xd48, 0x00000000},
385 {0xd4c, 0x00000000}, {0xd50, 0x6437140a},
386 {0xd54, 0x00000000}, {0xd58, 0x00000000},
387 {0xd5c, 0x30032064}, {0xd60, 0x4653de68},
388 {0xd64, 0x04518a3c}, {0xd68, 0x00002101},
389 {0xd6c, 0x2a201c16}, {0xd70, 0x1812362e},
390 {0xd74, 0x322c2220}, {0xd78, 0x000e3c24},
391 {0xe00, 0x24242424}, {0xe04, 0x24242424},
392 {0xe08, 0x03902024}, {0xe10, 0x24242424},
393 {0xe14, 0x24242424}, {0xe18, 0x24242424},
394 {0xe1c, 0x24242424}, {0xe28, 0x00000000},
395 {0xe30, 0x1000dc1f}, {0xe34, 0x10008c1f},
396 {0xe38, 0x02140102}, {0xe3c, 0x681604c2},
397 {0xe40, 0x01007c00}, {0xe44, 0x01004800},
398 {0xe48, 0xfb000000}, {0xe4c, 0x000028d1},
399 {0xe50, 0x1000dc1f}, {0xe54, 0x10008c1f},
400 {0xe58, 0x02140102}, {0xe5c, 0x28160d05},
401 {0xe60, 0x00000008}, {0xe68, 0x001b25a4},
402 {0xe6c, 0x631b25a0}, {0xe70, 0x631b25a0},
403 {0xe74, 0x081b25a0}, {0xe78, 0x081b25a0},
404 {0xe7c, 0x081b25a0}, {0xe80, 0x081b25a0},
405 {0xe84, 0x631b25a0}, {0xe88, 0x081b25a0},
406 {0xe8c, 0x631b25a0}, {0xed0, 0x631b25a0},
407 {0xed4, 0x631b25a0}, {0xed8, 0x631b25a0},
408 {0xedc, 0x001b25a0}, {0xee0, 0x001b25a0},
409 {0xeec, 0x6b1b25a0}, {0xee8, 0x31555448},
410 {0xf14, 0x00000003}, {0xf4c, 0x00000000},
411 {0xf00, 0x00000300},
412 {0xffff, 0xffffffff},
416 {0xc78, 0x7b000001}, {0xc78, 0x7b010001},
417 {0xc78, 0x7b020001}, {0xc78, 0x7b030001},
418 {0xc78, 0x7b040001}, {0xc78, 0x7b050001},
419 {0xc78, 0x7a060001}, {0xc78, 0x79070001},
420 {0xc78, 0x78080001}, {0xc78, 0x77090001},
421 {0xc78, 0x760a0001}, {0xc78, 0x750b0001},
422 {0xc78, 0x740c0001}, {0xc78, 0x730d0001},
423 {0xc78, 0x720e0001}, {0xc78, 0x710f0001},
424 {0xc78, 0x70100001}, {0xc78, 0x6f110001},
425 {0xc78, 0x6e120001}, {0xc78, 0x6d130001},
426 {0xc78, 0x6c140001}, {0xc78, 0x6b150001},
427 {0xc78, 0x6a160001}, {0xc78, 0x69170001},
428 {0xc78, 0x68180001}, {0xc78, 0x67190001},
429 {0xc78, 0x661a0001}, {0xc78, 0x651b0001},
430 {0xc78, 0x641c0001}, {0xc78, 0x631d0001},
431 {0xc78, 0x621e0001}, {0xc78, 0x611f0001},
432 {0xc78, 0x60200001}, {0xc78, 0x49210001},
433 {0xc78, 0x48220001}, {0xc78, 0x47230001},
434 {0xc78, 0x46240001}, {0xc78, 0x45250001},
435 {0xc78, 0x44260001}, {0xc78, 0x43270001},
436 {0xc78, 0x42280001}, {0xc78, 0x41290001},
437 {0xc78, 0x402a0001}, {0xc78, 0x262b0001},
438 {0xc78, 0x252c0001}, {0xc78, 0x242d0001},
439 {0xc78, 0x232e0001}, {0xc78, 0x222f0001},
440 {0xc78, 0x21300001}, {0xc78, 0x20310001},
441 {0xc78, 0x06320001}, {0xc78, 0x05330001},
442 {0xc78, 0x04340001}, {0xc78, 0x03350001},
443 {0xc78, 0x02360001}, {0xc78, 0x01370001},
444 {0xc78, 0x00380001}, {0xc78, 0x00390001},
445 {0xc78, 0x003a0001}, {0xc78, 0x003b0001},
446 {0xc78, 0x003c0001}, {0xc78, 0x003d0001},
447 {0xc78, 0x003e0001}, {0xc78, 0x003f0001},
448 {0xc78, 0x7b400001}, {0xc78, 0x7b410001},
449 {0xc78, 0x7b420001}, {0xc78, 0x7b430001},
450 {0xc78, 0x7b440001}, {0xc78, 0x7b450001},
451 {0xc78, 0x7a460001}, {0xc78, 0x79470001},
452 {0xc78, 0x78480001}, {0xc78, 0x77490001},
453 {0xc78, 0x764a0001}, {0xc78, 0x754b0001},
454 {0xc78, 0x744c0001}, {0xc78, 0x734d0001},
455 {0xc78, 0x724e0001}, {0xc78, 0x714f0001},
456 {0xc78, 0x70500001}, {0xc78, 0x6f510001},
457 {0xc78, 0x6e520001}, {0xc78, 0x6d530001},
458 {0xc78, 0x6c540001}, {0xc78, 0x6b550001},
459 {0xc78, 0x6a560001}, {0xc78, 0x69570001},
460 {0xc78, 0x68580001}, {0xc78, 0x67590001},
461 {0xc78, 0x665a0001}, {0xc78, 0x655b0001},
462 {0xc78, 0x645c0001}, {0xc78, 0x635d0001},
463 {0xc78, 0x625e0001}, {0xc78, 0x615f0001},
464 {0xc78, 0x60600001}, {0xc78, 0x49610001},
465 {0xc78, 0x48620001}, {0xc78, 0x47630001},
466 {0xc78, 0x46640001}, {0xc78, 0x45650001},
467 {0xc78, 0x44660001}, {0xc78, 0x43670001},
468 {0xc78, 0x42680001}, {0xc78, 0x41690001},
469 {0xc78, 0x406a0001}, {0xc78, 0x266b0001},
470 {0xc78, 0x256c0001}, {0xc78, 0x246d0001},
471 {0xc78, 0x236e0001}, {0xc78, 0x226f0001},
472 {0xc78, 0x21700001}, {0xc78, 0x20710001},
473 {0xc78, 0x06720001}, {0xc78, 0x05730001},
474 {0xc78, 0x04740001}, {0xc78, 0x03750001},
475 {0xc78, 0x02760001}, {0xc78, 0x01770001},
476 {0xc78, 0x00780001}, {0xc78, 0x00790001},
477 {0xc78, 0x007a0001}, {0xc78, 0x007b0001},
478 {0xc78, 0x007c0001}, {0xc78, 0x007d0001},
479 {0xc78, 0x007e0001}, {0xc78, 0x007f0001},
480 {0xc78, 0x3800001e}, {0xc78, 0x3801001e},
481 {0xc78, 0x3802001e}, {0xc78, 0x3803001e},
482 {0xc78, 0x3804001e}, {0xc78, 0x3805001e},
483 {0xc78, 0x3806001e}, {0xc78, 0x3807001e},
484 {0xc78, 0x3808001e}, {0xc78, 0x3c09001e},
485 {0xc78, 0x3e0a001e}, {0xc78, 0x400b001e},
486 {0xc78, 0x440c001e}, {0xc78, 0x480d001e},
487 {0xc78, 0x4c0e001e}, {0xc78, 0x500f001e},
488 {0xc78, 0x5210001e}, {0xc78, 0x5611001e},
489 {0xc78, 0x5a12001e}, {0xc78, 0x5e13001e},
490 {0xc78, 0x6014001e}, {0xc78, 0x6015001e},
491 {0xc78, 0x6016001e}, {0xc78, 0x6217001e},
492 {0xc78, 0x6218001e}, {0xc78, 0x6219001e},
493 {0xc78, 0x621a001e}, {0xc78, 0x621b001e},
494 {0xc78, 0x621c001e}, {0xc78, 0x621d001e},
495 {0xc78, 0x621e001e}, {0xc78, 0x621f001e},
496 {0xffff, 0xffffffff}
500 {0xc78, 0x7b000001}, {0xc78, 0x7b010001},
501 {0xc78, 0x7b020001}, {0xc78, 0x7b030001},
502 {0xc78, 0x7b040001}, {0xc78, 0x7b050001},
503 {0xc78, 0x7b060001}, {0xc78, 0x7b070001},
504 {0xc78, 0x7b080001}, {0xc78, 0x7a090001},
505 {0xc78, 0x790a0001}, {0xc78, 0x780b0001},
506 {0xc78, 0x770c0001}, {0xc78, 0x760d0001},
507 {0xc78, 0x750e0001}, {0xc78, 0x740f0001},
508 {0xc78, 0x73100001}, {0xc78, 0x72110001},
509 {0xc78, 0x71120001}, {0xc78, 0x70130001},
510 {0xc78, 0x6f140001}, {0xc78, 0x6e150001},
511 {0xc78, 0x6d160001}, {0xc78, 0x6c170001},
512 {0xc78, 0x6b180001}, {0xc78, 0x6a190001},
513 {0xc78, 0x691a0001}, {0xc78, 0x681b0001},
514 {0xc78, 0x671c0001}, {0xc78, 0x661d0001},
515 {0xc78, 0x651e0001}, {0xc78, 0x641f0001},
516 {0xc78, 0x63200001}, {0xc78, 0x62210001},
517 {0xc78, 0x61220001}, {0xc78, 0x60230001},
518 {0xc78, 0x46240001}, {0xc78, 0x45250001},
519 {0xc78, 0x44260001}, {0xc78, 0x43270001},
520 {0xc78, 0x42280001}, {0xc78, 0x41290001},
521 {0xc78, 0x402a0001}, {0xc78, 0x262b0001},
522 {0xc78, 0x252c0001}, {0xc78, 0x242d0001},
523 {0xc78, 0x232e0001}, {0xc78, 0x222f0001},
524 {0xc78, 0x21300001}, {0xc78, 0x20310001},
525 {0xc78, 0x06320001}, {0xc78, 0x05330001},
526 {0xc78, 0x04340001}, {0xc78, 0x03350001},
527 {0xc78, 0x02360001}, {0xc78, 0x01370001},
528 {0xc78, 0x00380001}, {0xc78, 0x00390001},
529 {0xc78, 0x003a0001}, {0xc78, 0x003b0001},
530 {0xc78, 0x003c0001}, {0xc78, 0x003d0001},
531 {0xc78, 0x003e0001}, {0xc78, 0x003f0001},
532 {0xc78, 0x7b400001}, {0xc78, 0x7b410001},
533 {0xc78, 0x7b420001}, {0xc78, 0x7b430001},
534 {0xc78, 0x7b440001}, {0xc78, 0x7b450001},
535 {0xc78, 0x7b460001}, {0xc78, 0x7b470001},
536 {0xc78, 0x7b480001}, {0xc78, 0x7a490001},
537 {0xc78, 0x794a0001}, {0xc78, 0x784b0001},
538 {0xc78, 0x774c0001}, {0xc78, 0x764d0001},
539 {0xc78, 0x754e0001}, {0xc78, 0x744f0001},
540 {0xc78, 0x73500001}, {0xc78, 0x72510001},
541 {0xc78, 0x71520001}, {0xc78, 0x70530001},
542 {0xc78, 0x6f540001}, {0xc78, 0x6e550001},
543 {0xc78, 0x6d560001}, {0xc78, 0x6c570001},
544 {0xc78, 0x6b580001}, {0xc78, 0x6a590001},
545 {0xc78, 0x695a0001}, {0xc78, 0x685b0001},
546 {0xc78, 0x675c0001}, {0xc78, 0x665d0001},
547 {0xc78, 0x655e0001}, {0xc78, 0x645f0001},
548 {0xc78, 0x63600001}, {0xc78, 0x62610001},
549 {0xc78, 0x61620001}, {0xc78, 0x60630001},
550 {0xc78, 0x46640001}, {0xc78, 0x45650001},
551 {0xc78, 0x44660001}, {0xc78, 0x43670001},
552 {0xc78, 0x42680001}, {0xc78, 0x41690001},
553 {0xc78, 0x406a0001}, {0xc78, 0x266b0001},
554 {0xc78, 0x256c0001}, {0xc78, 0x246d0001},
555 {0xc78, 0x236e0001}, {0xc78, 0x226f0001},
556 {0xc78, 0x21700001}, {0xc78, 0x20710001},
557 {0xc78, 0x06720001}, {0xc78, 0x05730001},
558 {0xc78, 0x04740001}, {0xc78, 0x03750001},
559 {0xc78, 0x02760001}, {0xc78, 0x01770001},
560 {0xc78, 0x00780001}, {0xc78, 0x00790001},
561 {0xc78, 0x007a0001}, {0xc78, 0x007b0001},
562 {0xc78, 0x007c0001}, {0xc78, 0x007d0001},
563 {0xc78, 0x007e0001}, {0xc78, 0x007f0001},
564 {0xc78, 0x3800001e}, {0xc78, 0x3801001e},
565 {0xc78, 0x3802001e}, {0xc78, 0x3803001e},
566 {0xc78, 0x3804001e}, {0xc78, 0x3805001e},
567 {0xc78, 0x3806001e}, {0xc78, 0x3807001e},
568 {0xc78, 0x3808001e}, {0xc78, 0x3c09001e},
569 {0xc78, 0x3e0a001e}, {0xc78, 0x400b001e},
570 {0xc78, 0x440c001e}, {0xc78, 0x480d001e},
571 {0xc78, 0x4c0e001e}, {0xc78, 0x500f001e},
572 {0xc78, 0x5210001e}, {0xc78, 0x5611001e},
573 {0xc78, 0x5a12001e}, {0xc78, 0x5e13001e},
574 {0xc78, 0x6014001e}, {0xc78, 0x6015001e},
575 {0xc78, 0x6016001e}, {0xc78, 0x6217001e},
576 {0xc78, 0x6218001e}, {0xc78, 0x6219001e},
577 {0xc78, 0x621a001e}, {0xc78, 0x621b001e},
578 {0xc78, 0x621c001e}, {0xc78, 0x621d001e},
579 {0xc78, 0x621e001e}, {0xc78, 0x621f001e},
580 {0xffff, 0xffffffff}
620 if (priv->rtl_chip == RTL8710B && addr <= 0xff) in rtl8xxxu_read8()
621 addr |= 0x8000; in rtl8xxxu_read8()
624 len = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), in rtl8xxxu_read8()
626 addr, 0, &priv->usb_buf.val8, sizeof(u8), in rtl8xxxu_read8()
632 dev_info(&udev->dev, "%s(%04x) = 0x%02x, len %i\n", in rtl8xxxu_read8()
643 if (priv->rtl_chip == RTL8710B && addr <= 0xff) in rtl8xxxu_read16()
644 addr |= 0x8000; in rtl8xxxu_read16()
647 len = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), in rtl8xxxu_read16()
649 addr, 0, &priv->usb_buf.val16, sizeof(u16), in rtl8xxxu_read16()
655 dev_info(&udev->dev, "%s(%04x) = 0x%04x, len %i\n", in rtl8xxxu_read16()
666 if (priv->rtl_chip == RTL8710B && addr <= 0xff) in rtl8xxxu_read32()
667 addr |= 0x8000; in rtl8xxxu_read32()
670 len = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), in rtl8xxxu_read32()
672 addr, 0, &priv->usb_buf.val32, sizeof(u32), in rtl8xxxu_read32()
678 dev_info(&udev->dev, "%s(%04x) = 0x%08x, len %i\n", in rtl8xxxu_read32()
688 if (priv->rtl_chip == RTL8710B && addr <= 0xff) in rtl8xxxu_write8()
689 addr |= 0x8000; in rtl8xxxu_write8()
693 ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), in rtl8xxxu_write8()
695 addr, 0, &priv->usb_buf.val8, sizeof(u8), in rtl8xxxu_write8()
701 dev_info(&udev->dev, "%s(%04x) = 0x%02x\n", in rtl8xxxu_write8()
711 if (priv->rtl_chip == RTL8710B && addr <= 0xff) in rtl8xxxu_write16()
712 addr |= 0x8000; in rtl8xxxu_write16()
716 ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), in rtl8xxxu_write16()
718 addr, 0, &priv->usb_buf.val16, sizeof(u16), in rtl8xxxu_write16()
723 dev_info(&udev->dev, "%s(%04x) = 0x%04x\n", in rtl8xxxu_write16()
733 if (priv->rtl_chip == RTL8710B && addr <= 0xff) in rtl8xxxu_write32()
734 addr |= 0x8000; in rtl8xxxu_write32()
738 ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), in rtl8xxxu_write32()
740 addr, 0, &priv->usb_buf.val32, sizeof(u32), in rtl8xxxu_write32()
745 dev_info(&udev->dev, "%s(%04x) = 0x%08x\n", in rtl8xxxu_write32()
839 for (i = 0; i < count; i++) { in rtl8xxxu_writeN()
840 ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), in rtl8xxxu_writeN()
842 addr, 0, buf, blocksize, in rtl8xxxu_writeN()
852 ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), in rtl8xxxu_writeN()
854 addr, 0, buf, remainder, in rtl8xxxu_writeN()
901 retval &= 0xfffff; in rtl8xxxu_read_rfreg()
904 dev_info(&priv->udev->dev, "%s(%02x) = 0x%06x\n", in rtl8xxxu_read_rfreg()
910 * The RTL8723BU driver indicates that registers 0xb2 and 0xb6 can
921 dev_info(&priv->udev->dev, "%s(%02x) = 0x%06x\n", in rtl8xxxu_write_rfreg()
929 val32 &= ~0x20000; in rtl8xxxu_write_rfreg()
938 retval = 0; in rtl8xxxu_write_rfreg()
944 val32 |= 0x20000; in rtl8xxxu_write_rfreg()
955 int mbox_nr, retry, retval = 0; in rtl8xxxu_gen1_h2c_cmd()
1005 int mbox_nr, retry, retval = 0; in rtl8xxxu_gen2_h2c_cmd()
1058 val8 |= BIT(0) | BIT(3); in rtl8xxxu_gen1_enable_rf()
1085 rtl8xxxu_write32(priv, REG_RX_WAIT_CCA, 0x63db25a0); in rtl8xxxu_gen1_enable_rf()
1087 rtl8xxxu_write32(priv, REG_RX_WAIT_CCA, 0x631b25a0); in rtl8xxxu_gen1_enable_rf()
1089 rtl8xxxu_write_rfreg(priv, RF_A, RF6052_REG_AC, 0x32d95); in rtl8xxxu_gen1_enable_rf()
1091 rtl8xxxu_write_rfreg(priv, RF_B, RF6052_REG_AC, 0x32d95); in rtl8xxxu_gen1_enable_rf()
1093 rtl8xxxu_write8(priv, REG_TXPAUSE, 0x00); in rtl8xxxu_gen1_enable_rf()
1122 rtl8xxxu_write32(priv, REG_RX_WAIT_CCA, 0x00db25a0); in rtl8xxxu_gen1_disable_rf()
1124 rtl8xxxu_write32(priv, REG_RX_WAIT_CCA, 0x001b25a0); in rtl8xxxu_gen1_disable_rf()
1127 rtl8xxxu_write_rfreg(priv, RF_A, RF6052_REG_AC, 0); in rtl8xxxu_gen1_disable_rf()
1129 rtl8xxxu_write_rfreg(priv, RF_B, RF6052_REG_AC, 0); in rtl8xxxu_gen1_disable_rf()
1131 sps0 &= ~(BIT(0) | BIT(3)); in rtl8xxxu_gen1_disable_rf()
1143 rtl8xxxu_write8(priv, REG_TBTT_PROHIBIT + 1, 0x64); in rtl8xxxu_stop_tx_beacon()
1145 val8 &= ~BIT(0); in rtl8xxxu_stop_tx_beacon()
1157 rtl8xxxu_write8(priv, REG_TBTT_PROHIBIT + 1, 0x80); in rtl8xxxu_start_tx_beacon()
1159 val8 &= 0xF0; in rtl8xxxu_start_tx_beacon()
1167 * group 0: channels 1 - 3
1171 * Note: We index from 0 in the code
1178 group = 0; in rtl8xxxu_gen1_channel_to_group()
1195 group = 0; in rtl8xxxu_gen2_channel_to_group()
1247 sec_ch_above = 0; in rtl8xxxu_gen1_config_channel()
1279 val32 &= ~OFDM_LSTF_PRIME_CH_MASK; /* 0xc00 */ in rtl8xxxu_gen1_config_channel()
1311 val8 = 0x0e; in rtl8xxxu_gen1_config_channel()
1313 val8 = 0x0a; in rtl8xxxu_gen1_config_channel()
1318 rtl8xxxu_write16(priv, REG_R2T_SIFS, 0x0808); in rtl8xxxu_gen1_config_channel()
1319 rtl8xxxu_write16(priv, REG_T2T_SIFS, 0x0a0a); in rtl8xxxu_gen1_config_channel()
1346 subchannel = 0; in rtl8xxxu_gen2_config_channel()
1354 subchannel = 0; in rtl8xxxu_gen2_config_channel()
1377 sec_ch_above = 0; in rtl8xxxu_gen2_config_channel()
1400 val32 &= ~OFDM_LSTF_PRIME_CH_MASK; /* 0xc00 */ in rtl8xxxu_gen2_config_channel()
1433 val8 = 0x0e; in rtl8xxxu_gen2_config_channel()
1435 val8 = 0x0a; in rtl8xxxu_gen2_config_channel()
1440 rtl8xxxu_write16(priv, REG_R2T_SIFS, 0x0808); in rtl8xxxu_gen2_config_channel()
1441 rtl8xxxu_write16(priv, REG_T2T_SIFS, 0x0a0a); in rtl8xxxu_gen2_config_channel()
1473 cck[0] = priv->cck_tx_power_index_A[group]; in rtl8xxxu_gen1_set_tx_power()
1477 if (cck[0] > 0x20) in rtl8xxxu_gen1_set_tx_power()
1478 cck[0] = 0x20; in rtl8xxxu_gen1_set_tx_power()
1479 if (cck[1] > 0x20) in rtl8xxxu_gen1_set_tx_power()
1480 cck[1] = 0x20; in rtl8xxxu_gen1_set_tx_power()
1483 ofdm[0] = priv->ht40_1s_tx_power_index_A[group]; in rtl8xxxu_gen1_set_tx_power()
1486 ofdmbase[0] = ofdm[0] + priv->ofdm_tx_power_index_diff[group].a; in rtl8xxxu_gen1_set_tx_power()
1489 mcsbase[0] = ofdm[0]; in rtl8xxxu_gen1_set_tx_power()
1492 mcsbase[0] += priv->ht20_tx_power_index_diff[group].a; in rtl8xxxu_gen1_set_tx_power()
1497 if (ofdm[0] > priv->ht40_2s_tx_power_index_diff[group].a) in rtl8xxxu_gen1_set_tx_power()
1498 ofdm[0] -= priv->ht40_2s_tx_power_index_diff[group].a; in rtl8xxxu_gen1_set_tx_power()
1507 __func__, cck[0], cck[1], ofdm[0], ofdm[1]); in rtl8xxxu_gen1_set_tx_power()
1509 for (i = 0; i < RTL8723A_MAX_RF_PATHS; i++) { in rtl8xxxu_gen1_set_tx_power()
1517 val32 &= 0xffff00ff; in rtl8xxxu_gen1_set_tx_power()
1518 val32 |= (cck[0] << 8); in rtl8xxxu_gen1_set_tx_power()
1522 val32 &= 0xff; in rtl8xxxu_gen1_set_tx_power()
1523 val32 |= ((cck[0] << 8) | (cck[0] << 16) | (cck[0] << 24)); in rtl8xxxu_gen1_set_tx_power()
1527 val32 &= 0xffffff00; in rtl8xxxu_gen1_set_tx_power()
1532 val32 &= 0xff; in rtl8xxxu_gen1_set_tx_power()
1536 ofdm_a = ofdmbase[0] | ofdmbase[0] << 8 | in rtl8xxxu_gen1_set_tx_power()
1537 ofdmbase[0] << 16 | ofdmbase[0] << 24; in rtl8xxxu_gen1_set_tx_power()
1551 mcs_a = mcsbase[0] | mcsbase[0] << 8 | in rtl8xxxu_gen1_set_tx_power()
1552 mcsbase[0] << 16 | mcsbase[0] << 24; in rtl8xxxu_gen1_set_tx_power()
1573 val8 = u32_get_bits(mcs_a + power_base->reg_0e1c, 0xff000000); in rtl8xxxu_gen1_set_tx_power()
1574 for (i = 0; i < 3; i++) { in rtl8xxxu_gen1_set_tx_power()
1576 val8 = max_t(int, val8 - base, 0); in rtl8xxxu_gen1_set_tx_power()
1582 val8 = u32_get_bits(mcs_b + power_base->reg_0868, 0xff000000); in rtl8xxxu_gen1_set_tx_power()
1583 for (i = 0; i < 3; i++) { in rtl8xxxu_gen1_set_tx_power()
1585 val8 = max_t(int, val8 - base, 0); in rtl8xxxu_gen1_set_tx_power()
1613 case 0: in rtl8xxxu_set_linktype()
1614 val8 = rtl8xxxu_read8(priv, REG_MSR) & 0x0c; in rtl8xxxu_set_linktype()
1618 val8 = rtl8xxxu_read8(priv, REG_MSR) & 0x03; in rtl8xxxu_set_linktype()
1743 return 0; in rtl8xxxu_config_endpoints_no_sie()
1754 rtl8xxxu_write8(priv, REG_EFUSE_CTRL + 1, offset & 0xff); in rtl8xxxu_read_efuse8()
1756 val8 &= 0xfc; in rtl8xxxu_read_efuse8()
1757 val8 |= (offset >> 8) & 0x03; in rtl8xxxu_read_efuse8()
1761 rtl8xxxu_write8(priv, REG_EFUSE_CTRL + 3, val8 & 0x7f); in rtl8xxxu_read_efuse8()
1765 for (i = 0; i < RTL8XXXU_MAX_REG_POLL; i++) { in rtl8xxxu_read_efuse8()
1777 *data = val32 & 0xff; in rtl8xxxu_read_efuse8()
1778 return 0; in rtl8xxxu_read_efuse8()
1784 int i, ret = 0; in rtl8xxxu_read_efuse()
1806 /* 1.2V Power: From VDDON with Power Cut(0x0000[15]), default valid */ in rtl8xxxu_read_efuse()
1812 /* Reset: 0x0000[28], default valid */ in rtl8xxxu_read_efuse()
1820 * Clock: Gated(0x0008[5]) 8M(0x0008[1]) clock from ANA, default valid in rtl8xxxu_read_efuse()
1828 /* Default value is 0xff */ in rtl8xxxu_read_efuse()
1829 memset(priv->efuse_wifi.raw, 0xff, EFUSE_MAP_LEN); in rtl8xxxu_read_efuse()
1831 efuse_addr = 0; in rtl8xxxu_read_efuse()
1836 if (ret || header == 0xff) in rtl8xxxu_read_efuse()
1839 if ((header & 0x1f) == 0x0f) { /* extended header */ in rtl8xxxu_read_efuse()
1840 offset = (header & 0xe0) >> 5; in rtl8xxxu_read_efuse()
1847 if ((extheader & 0x0f) == 0x0f) in rtl8xxxu_read_efuse()
1850 offset |= ((extheader & 0xf0) >> 1); in rtl8xxxu_read_efuse()
1851 word_mask = extheader & 0x0f; in rtl8xxxu_read_efuse()
1853 offset = (header >> 4) & 0x0f; in rtl8xxxu_read_efuse()
1854 word_mask = header & 0x0f; in rtl8xxxu_read_efuse()
1861 for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) { in rtl8xxxu_read_efuse()
1896 "Dumping efuse for RTL%s (0x%02x bytes):\n", in rtl8xxxu_dump_efuse()
1909 val8 &= ~BIT(0); in rtl8xxxu_reset_8051()
1917 val8 |= BIT(0); in rtl8xxxu_reset_8051()
1928 int ret = 0, i; in rtl8xxxu_start_firmware()
1937 for (i = 0; i < RTL8XXXU_FIRMWARE_POLL_MAX; i++) { in rtl8xxxu_start_firmware()
1961 for (i = 0; i < RTL8XXXU_FIRMWARE_POLL_MAX; i++) { in rtl8xxxu_start_firmware()
1979 rtl8xxxu_write8(priv, REG_HMTFR, 0x0f); in rtl8xxxu_start_firmware()
2018 rtl8xxxu_write8(priv, reg_mcu_fw_dl, 0x00); in rtl8xxxu_download_firmware()
2033 /* We must set 0x8090[8]=1 before download FW. */ in rtl8xxxu_download_firmware()
2035 val8 |= BIT(0); in rtl8xxxu_download_firmware()
2049 for (i = 0; i < pages; i++) { in rtl8xxxu_download_firmware()
2050 val8 = rtl8xxxu_read8(priv, reg_mcu_fw_dl + 2) & 0xF8; in rtl8xxxu_download_firmware()
2065 val8 = rtl8xxxu_read8(priv, reg_mcu_fw_dl + 2) & 0xF8; in rtl8xxxu_download_firmware()
2076 ret = 0; in rtl8xxxu_download_firmware()
2090 int ret = 0; in rtl8xxxu_load_firmware()
2113 switch (signature & 0xfff0) { in rtl8xxxu_load_firmware()
2114 case 0x92e0: in rtl8xxxu_load_firmware()
2115 case 0x92c0: in rtl8xxxu_load_firmware()
2116 case 0x88e0: in rtl8xxxu_load_firmware()
2117 case 0x88c0: in rtl8xxxu_load_firmware()
2118 case 0x5300: in rtl8xxxu_load_firmware()
2119 case 0x2300: in rtl8xxxu_load_firmware()
2120 case 0x88f0: in rtl8xxxu_load_firmware()
2121 case 0x10b0: in rtl8xxxu_load_firmware()
2122 case 0x92f0: in rtl8xxxu_load_firmware()
2126 dev_warn(dev, "%s: Invalid firmware signature: 0x%04x\n", in rtl8xxxu_load_firmware()
2130 dev_info(dev, "Firmware revision %i.%i (signature 0x%04x)\n", in rtl8xxxu_load_firmware()
2145 rtl8xxxu_write8(priv, REG_HMTFR + 3, 0x20); in rtl8xxxu_firmware_self_reset()
2147 for (i = 100; i > 0; i--) { in rtl8xxxu_firmware_self_reset()
2174 for (i = 0; ; i++) { in rtl8xxxu_init_mac()
2178 if (reg == 0xffff && val == 0xff) in rtl8xxxu_init_mac()
2196 rtl8xxxu_write8(priv, REG_MAX_AGGR_NUM, 0x0a); in rtl8xxxu_init_mac()
2199 rtl8xxxu_write16(priv, REG_MAX_AGGR_NUM, 0x0707); in rtl8xxxu_init_mac()
2205 return 0; in rtl8xxxu_init_mac()
2215 for (i = 0; ; i++) { in rtl8xxxu_init_phy_regs()
2219 if (reg == 0xffff && val == 0xffffffff) in rtl8xxxu_init_phy_regs()
2231 return 0; in rtl8xxxu_init_phy_regs()
2246 rtl8xxxu_write8(priv, REG_AFE_PLL_CTRL + 1, 0xff); in rtl8xxxu_gen1_init_phy_bb()
2259 /* 6. 0x1f[7:0] = 0x07 */ in rtl8xxxu_gen1_init_phy_bb()
2272 rtl8xxxu_write8(priv, REG_OFDM0_AGC_PARM1 + 2, 0x50); in rtl8xxxu_gen1_init_phy_bb()
2281 ldohci12 = 0x57; in rtl8xxxu_gen1_init_phy_bb()
2303 val32 &= ~(BIT(0) | BIT(1)); in rtl8xxxu_init_phy_bb()
2308 val32 &= ~0x300033; in rtl8xxxu_init_phy_bb()
2309 val32 |= 0x200022; in rtl8xxxu_init_phy_bb()
2314 val32 &= 0x00ffffff; in rtl8xxxu_init_phy_bb()
2315 val32 |= 0x40000000; in rtl8xxxu_init_phy_bb()
2360 rtl8xxxu_write32(priv, REG_AFE_XTAL_CTRL, 0x000f81fb); in rtl8xxxu_init_phy_bb()
2362 return 0; in rtl8xxxu_init_phy_bb()
2373 for (i = 0; ; i++) { in rtl8xxxu_init_rf_regs()
2377 if (reg == 0xff && val == 0xffffffff) in rtl8xxxu_init_rf_regs()
2381 case 0xfe: in rtl8xxxu_init_rf_regs()
2384 case 0xfd: in rtl8xxxu_init_rf_regs()
2387 case 0xfc: in rtl8xxxu_init_rf_regs()
2390 case 0xfb: in rtl8xxxu_init_rf_regs()
2393 case 0xfa: in rtl8xxxu_init_rf_regs()
2396 case 0xf9: in rtl8xxxu_init_rf_regs()
2410 return 0; in rtl8xxxu_init_rf_regs()
2445 val32 |= BIT(20); /* 0x10 << 16 */ in rtl8xxxu_init_phy_rf()
2475 return 0; in rtl8xxxu_init_phy_rf()
2481 int count = 0; in rtl8xxxu_llt_write()
2491 ret = 0; in rtl8xxxu_llt_write()
2512 for (i = 0; i < last_tx_page; i++) { in rtl8xxxu_init_llt_table()
2518 ret = rtl8xxxu_llt_write(priv, last_tx_page, 0xff); in rtl8xxxu_init_llt_table()
2541 int ret = 0; in rtl8xxxu_auto_llt_table()
2568 int ret = 0; in rtl8xxxu_init_queue_priority()
2580 hi = 0; in rtl8xxxu_init_queue_priority()
2591 hip = 0; in rtl8xxxu_init_queue_priority()
2592 mgp = 0; in rtl8xxxu_init_queue_priority()
2593 bkp = 0; in rtl8xxxu_init_queue_priority()
2594 bep = 0; in rtl8xxxu_init_queue_priority()
2595 vip = 0; in rtl8xxxu_init_queue_priority()
2596 vop = 0; in rtl8xxxu_init_queue_priority()
2610 hi = 0; in rtl8xxxu_init_queue_priority()
2611 lo = 0; in rtl8xxxu_init_queue_priority()
2621 hip = 0; in rtl8xxxu_init_queue_priority()
2622 mgp = 0; in rtl8xxxu_init_queue_priority()
2625 vip = 0; in rtl8xxxu_init_queue_priority()
2626 vop = 0; in rtl8xxxu_init_queue_priority()
2655 val32 &= 0x7; in rtl8xxxu_init_queue_priority()
2665 val16 &= 0x7; in rtl8xxxu_init_queue_priority()
2684 usb_sndbulkpipe(priv->udev, priv->out_ep[0]); in rtl8xxxu_init_queue_priority()
2690 usb_sndbulkpipe(priv->udev, priv->out_ep[0]); in rtl8xxxu_init_queue_priority()
2709 x = result[candidate][0]; in rtl8xxxu_fill_iqk_matrix_a()
2710 if ((x & 0x00000200) != 0) in rtl8xxxu_fill_iqk_matrix_a()
2711 x = x | 0xfffffc00; in rtl8xxxu_fill_iqk_matrix_a()
2715 val32 &= ~0x3ff; in rtl8xxxu_fill_iqk_matrix_a()
2721 if ((x * oldval >> 7) & 0x1) in rtl8xxxu_fill_iqk_matrix_a()
2726 if ((y & 0x00000200) != 0) in rtl8xxxu_fill_iqk_matrix_a()
2727 y = y | 0xfffffc00; in rtl8xxxu_fill_iqk_matrix_a()
2731 val32 &= ~0xf0000000; in rtl8xxxu_fill_iqk_matrix_a()
2732 val32 |= (((tx0_c & 0x3c0) >> 6) << 28); in rtl8xxxu_fill_iqk_matrix_a()
2736 val32 &= ~0x003f0000; in rtl8xxxu_fill_iqk_matrix_a()
2737 val32 |= ((tx0_c & 0x3f) << 16); in rtl8xxxu_fill_iqk_matrix_a()
2742 if ((y * oldval >> 7) & 0x1) in rtl8xxxu_fill_iqk_matrix_a()
2754 val32 &= ~0x3ff; in rtl8xxxu_fill_iqk_matrix_a()
2755 val32 |= (reg & 0x3ff); in rtl8xxxu_fill_iqk_matrix_a()
2758 reg = result[candidate][3] & 0x3F; in rtl8xxxu_fill_iqk_matrix_a()
2761 val32 &= ~0xfc00; in rtl8xxxu_fill_iqk_matrix_a()
2762 val32 |= ((reg << 10) & 0xfc00); in rtl8xxxu_fill_iqk_matrix_a()
2765 reg = (result[candidate][3] >> 6) & 0xF; in rtl8xxxu_fill_iqk_matrix_a()
2768 val32 &= ~0xf0000000; in rtl8xxxu_fill_iqk_matrix_a()
2787 if ((x & 0x00000200) != 0) in rtl8xxxu_fill_iqk_matrix_b()
2788 x = x | 0xfffffc00; in rtl8xxxu_fill_iqk_matrix_b()
2792 val32 &= ~0x3ff; in rtl8xxxu_fill_iqk_matrix_b()
2798 if ((x * oldval >> 7) & 0x1) in rtl8xxxu_fill_iqk_matrix_b()
2803 if ((y & 0x00000200) != 0) in rtl8xxxu_fill_iqk_matrix_b()
2804 y = y | 0xfffffc00; in rtl8xxxu_fill_iqk_matrix_b()
2808 val32 &= ~0xf0000000; in rtl8xxxu_fill_iqk_matrix_b()
2809 val32 |= (((tx1_c & 0x3c0) >> 6) << 28); in rtl8xxxu_fill_iqk_matrix_b()
2813 val32 &= ~0x003f0000; in rtl8xxxu_fill_iqk_matrix_b()
2814 val32 |= ((tx1_c & 0x3f) << 16); in rtl8xxxu_fill_iqk_matrix_b()
2819 if ((y * oldval >> 7) & 0x1) in rtl8xxxu_fill_iqk_matrix_b()
2831 val32 &= ~0x3ff; in rtl8xxxu_fill_iqk_matrix_b()
2832 val32 |= (reg & 0x3ff); in rtl8xxxu_fill_iqk_matrix_b()
2835 reg = result[candidate][7] & 0x3f; in rtl8xxxu_fill_iqk_matrix_b()
2838 val32 &= ~0xfc00; in rtl8xxxu_fill_iqk_matrix_b()
2839 val32 |= ((reg << 10) & 0xfc00); in rtl8xxxu_fill_iqk_matrix_b()
2842 reg = (result[candidate][7] >> 6) & 0xf; in rtl8xxxu_fill_iqk_matrix_b()
2845 rtl8xxxu_write32_mask(priv, REG_RXIQB_EXT, 0x000000f0, reg); in rtl8xxxu_fill_iqk_matrix_b()
2848 val32 &= ~0x0000f000; in rtl8xxxu_fill_iqk_matrix_b()
2859 u32 i, j, diff, simubitmap, bound = 0; in rtl8xxxu_simularity_compare()
2868 simubitmap = 0; in rtl8xxxu_simularity_compare()
2870 for (i = 0; i < bound; i++) { in rtl8xxxu_simularity_compare()
2876 if (result[c1][i] + result[c1][i + 1] == 0) in rtl8xxxu_simularity_compare()
2878 else if (result[c2][i] + result[c2][i + 1] == 0) in rtl8xxxu_simularity_compare()
2888 if (simubitmap == 0) { in rtl8xxxu_simularity_compare()
2889 for (i = 0; i < (bound / 4); i++) { in rtl8xxxu_simularity_compare()
2890 if (candidate[i] >= 0) { in rtl8xxxu_simularity_compare()
2897 } else if (!(simubitmap & 0x0f)) { in rtl8xxxu_simularity_compare()
2899 for (i = 0; i < 4; i++) in rtl8xxxu_simularity_compare()
2901 } else if (!(simubitmap & 0xf0) && priv->tx_paths > 1) { in rtl8xxxu_simularity_compare()
2913 u32 i, j, diff, simubitmap, bound = 0; in rtl8xxxu_gen2_simularity_compare()
2923 simubitmap = 0; in rtl8xxxu_gen2_simularity_compare()
2925 for (i = 0; i < bound; i++) { in rtl8xxxu_gen2_simularity_compare()
2927 if ((result[c1][i] & 0x00000200)) in rtl8xxxu_gen2_simularity_compare()
2928 tmp1 = result[c1][i] | 0xfffffc00; in rtl8xxxu_gen2_simularity_compare()
2932 if ((result[c2][i]& 0x00000200)) in rtl8xxxu_gen2_simularity_compare()
2933 tmp2 = result[c2][i] | 0xfffffc00; in rtl8xxxu_gen2_simularity_compare()
2945 if (result[c1][i] + result[c1][i + 1] == 0) in rtl8xxxu_gen2_simularity_compare()
2947 else if (result[c2][i] + result[c2][i + 1] == 0) in rtl8xxxu_gen2_simularity_compare()
2957 if (simubitmap == 0) { in rtl8xxxu_gen2_simularity_compare()
2958 for (i = 0; i < (bound / 4); i++) { in rtl8xxxu_gen2_simularity_compare()
2959 if (candidate[i] >= 0) { in rtl8xxxu_gen2_simularity_compare()
2967 if (!(simubitmap & 0x03)) { in rtl8xxxu_gen2_simularity_compare()
2969 for (i = 0; i < 2; i++) in rtl8xxxu_gen2_simularity_compare()
2973 if (!(simubitmap & 0x0c)) { in rtl8xxxu_gen2_simularity_compare()
2979 if (!(simubitmap & 0x30) && priv->tx_paths > 1) { in rtl8xxxu_gen2_simularity_compare()
2985 if (!(simubitmap & 0xc0) && priv->tx_paths > 1) { in rtl8xxxu_gen2_simularity_compare()
3000 for (i = 0; i < (RTL8XXXU_MAC_REGS - 1); i++) in rtl8xxxu_save_mac_regs()
3011 for (i = 0; i < (RTL8XXXU_MAC_REGS - 1); i++) in rtl8xxxu_restore_mac_regs()
3022 for (i = 0; i < count; i++) in rtl8xxxu_save_regs()
3031 for (i = 0; i < count; i++) in rtl8xxxu_restore_regs()
3044 rtl8xxxu_write32(priv, regs[0], priv->fops->adda_1t_init); in rtl8xxxu_path_adda_on()
3049 rtl8xxxu_write32(priv, regs[0], path_on); in rtl8xxxu_path_adda_on()
3059 int i = 0; in rtl8xxxu_mac_calibration()
3061 rtl8xxxu_write8(priv, regs[i], 0x3f); in rtl8xxxu_mac_calibration()
3072 int result = 0; in rtl8xxxu_iqk_path_a()
3075 rtl8xxxu_write32(priv, REG_TX_IQK_TONE_A, 0x10008c1f); in rtl8xxxu_iqk_path_a()
3076 rtl8xxxu_write32(priv, REG_RX_IQK_TONE_A, 0x10008c1f); in rtl8xxxu_iqk_path_a()
3077 rtl8xxxu_write32(priv, REG_TX_IQK_PI_A, 0x82140102); in rtl8xxxu_iqk_path_a()
3079 val32 = (priv->rf_paths > 1) ? 0x28160202 : in rtl8xxxu_iqk_path_a()
3080 /*IS_81xxC_VENDOR_UMC_B_CUT(pHalData->VersionID)?0x28160202: */ in rtl8xxxu_iqk_path_a()
3081 0x28160502; in rtl8xxxu_iqk_path_a()
3086 rtl8xxxu_write32(priv, REG_TX_IQK_TONE_B, 0x10008c22); in rtl8xxxu_iqk_path_a()
3087 rtl8xxxu_write32(priv, REG_RX_IQK_TONE_B, 0x10008c22); in rtl8xxxu_iqk_path_a()
3088 rtl8xxxu_write32(priv, REG_TX_IQK_PI_B, 0x82140102); in rtl8xxxu_iqk_path_a()
3089 rtl8xxxu_write32(priv, REG_RX_IQK_PI_B, 0x28160202); in rtl8xxxu_iqk_path_a()
3093 rtl8xxxu_write32(priv, REG_IQK_AGC_RSP, 0x001028d1); in rtl8xxxu_iqk_path_a()
3096 rtl8xxxu_write32(priv, REG_IQK_AGC_PTS, 0xf9000000); in rtl8xxxu_iqk_path_a()
3097 rtl8xxxu_write32(priv, REG_IQK_AGC_PTS, 0xf8000000); in rtl8xxxu_iqk_path_a()
3108 ((reg_e94 & 0x03ff0000) != 0x01420000) && in rtl8xxxu_iqk_path_a()
3109 ((reg_e9c & 0x03ff0000) != 0x00420000)) in rtl8xxxu_iqk_path_a()
3110 result |= 0x01; in rtl8xxxu_iqk_path_a()
3116 ((reg_ea4 & 0x03ff0000) != 0x01320000) && in rtl8xxxu_iqk_path_a()
3117 ((reg_eac & 0x03ff0000) != 0x00360000)) in rtl8xxxu_iqk_path_a()
3118 result |= 0x02; in rtl8xxxu_iqk_path_a()
3129 int result = 0; in rtl8xxxu_iqk_path_b()
3132 rtl8xxxu_write32(priv, REG_IQK_AGC_CONT, 0x00000002); in rtl8xxxu_iqk_path_b()
3133 rtl8xxxu_write32(priv, REG_IQK_AGC_CONT, 0x00000000); in rtl8xxxu_iqk_path_b()
3145 ((reg_eb4 & 0x03ff0000) != 0x01420000) && in rtl8xxxu_iqk_path_b()
3146 ((reg_ebc & 0x03ff0000) != 0x00420000)) in rtl8xxxu_iqk_path_b()
3147 result |= 0x01; in rtl8xxxu_iqk_path_b()
3152 (((reg_ec4 & 0x03ff0000) >> 16) != 0x132) && in rtl8xxxu_iqk_path_b()
3153 (((reg_ecc & 0x03ff0000) >> 16) != 0x36)) in rtl8xxxu_iqk_path_b()
3154 result |= 0x02; in rtl8xxxu_iqk_path_b()
3195 if (t == 0) { in rtl8xxxu_phy_iqcalibrate()
3206 if (t == 0) { in rtl8xxxu_phy_iqcalibrate()
3214 rtl8xxxu_write32(priv, REG_FPGA0_XA_HSSI_PARM1, 0x01000100); in rtl8xxxu_phy_iqcalibrate()
3215 rtl8xxxu_write32(priv, REG_FPGA0_XB_HSSI_PARM1, 0x01000100); in rtl8xxxu_phy_iqcalibrate()
3222 rtl8xxxu_write32(priv, REG_OFDM0_TRX_PATH_ENABLE, 0x03a05600); in rtl8xxxu_phy_iqcalibrate()
3223 rtl8xxxu_write32(priv, REG_OFDM0_TR_MUX_PAR, 0x000800e4); in rtl8xxxu_phy_iqcalibrate()
3224 rtl8xxxu_write32(priv, REG_FPGA0_XCD_RF_SW_CTRL, 0x22204000); in rtl8xxxu_phy_iqcalibrate()
3241 rtl8xxxu_write32(priv, REG_FPGA0_XA_LSSI_PARM, 0x00010000); in rtl8xxxu_phy_iqcalibrate()
3242 rtl8xxxu_write32(priv, REG_FPGA0_XB_LSSI_PARM, 0x00010000); in rtl8xxxu_phy_iqcalibrate()
3249 rtl8xxxu_write32(priv, REG_CONFIG_ANT_A, 0x00080000); in rtl8xxxu_phy_iqcalibrate()
3252 rtl8xxxu_write32(priv, REG_CONFIG_ANT_B, 0x00080000); in rtl8xxxu_phy_iqcalibrate()
3255 rtl8xxxu_write32(priv, REG_FPGA0_IQK, 0x80800000); in rtl8xxxu_phy_iqcalibrate()
3256 rtl8xxxu_write32(priv, REG_TX_IQK, 0x01007c00); in rtl8xxxu_phy_iqcalibrate()
3257 rtl8xxxu_write32(priv, REG_RX_IQK, 0x01004800); in rtl8xxxu_phy_iqcalibrate()
3259 for (i = 0; i < retry; i++) { in rtl8xxxu_phy_iqcalibrate()
3261 if (path_a_ok == 0x03) { in rtl8xxxu_phy_iqcalibrate()
3264 result[t][0] = (val32 >> 16) & 0x3ff; in rtl8xxxu_phy_iqcalibrate()
3267 result[t][1] = (val32 >> 16) & 0x3ff; in rtl8xxxu_phy_iqcalibrate()
3270 result[t][2] = (val32 >> 16) & 0x3ff; in rtl8xxxu_phy_iqcalibrate()
3273 result[t][3] = (val32 >> 16) & 0x3ff; in rtl8xxxu_phy_iqcalibrate()
3275 } else if (i == (retry - 1) && path_a_ok == 0x01) { in rtl8xxxu_phy_iqcalibrate()
3282 result[t][0] = (val32 >> 16) & 0x3ff; in rtl8xxxu_phy_iqcalibrate()
3285 result[t][1] = (val32 >> 16) & 0x3ff; in rtl8xxxu_phy_iqcalibrate()
3296 rtl8xxxu_write32(priv, REG_FPGA0_IQK, 0x0); in rtl8xxxu_phy_iqcalibrate()
3297 rtl8xxxu_write32(priv, REG_FPGA0_XA_LSSI_PARM, 0x00010000); in rtl8xxxu_phy_iqcalibrate()
3298 rtl8xxxu_write32(priv, REG_FPGA0_IQK, 0x80800000); in rtl8xxxu_phy_iqcalibrate()
3303 for (i = 0; i < retry; i++) { in rtl8xxxu_phy_iqcalibrate()
3305 if (path_b_ok == 0x03) { in rtl8xxxu_phy_iqcalibrate()
3307 result[t][4] = (val32 >> 16) & 0x3ff; in rtl8xxxu_phy_iqcalibrate()
3309 result[t][5] = (val32 >> 16) & 0x3ff; in rtl8xxxu_phy_iqcalibrate()
3311 result[t][6] = (val32 >> 16) & 0x3ff; in rtl8xxxu_phy_iqcalibrate()
3313 result[t][7] = (val32 >> 16) & 0x3ff; in rtl8xxxu_phy_iqcalibrate()
3315 } else if (i == (retry - 1) && path_b_ok == 0x01) { in rtl8xxxu_phy_iqcalibrate()
3318 result[t][4] = (val32 >> 16) & 0x3ff; in rtl8xxxu_phy_iqcalibrate()
3320 result[t][5] = (val32 >> 16) & 0x3ff; in rtl8xxxu_phy_iqcalibrate()
3329 rtl8xxxu_write32(priv, REG_FPGA0_IQK, 0); in rtl8xxxu_phy_iqcalibrate()
3337 val32 = 0x01000000; in rtl8xxxu_phy_iqcalibrate()
3354 rtl8xxxu_write32(priv, REG_FPGA0_XA_LSSI_PARM, 0x00032ed3); in rtl8xxxu_phy_iqcalibrate()
3358 0x00032ed3); in rtl8xxxu_phy_iqcalibrate()
3361 /* Load 0xe30 IQC default value */ in rtl8xxxu_phy_iqcalibrate()
3362 rtl8xxxu_write32(priv, REG_TX_IQK_TONE_A, 0x01008c00); in rtl8xxxu_phy_iqcalibrate()
3363 rtl8xxxu_write32(priv, REG_RX_IQK_TONE_A, 0x01008c00); in rtl8xxxu_phy_iqcalibrate()
3371 memset(&h2c, 0, sizeof(struct h2c_cmd)); in rtl8xxxu_gen2_prepare_calibrate()
3386 s32 reg_tmp = 0; in rtl8xxxu_gen1_phy_iq_calibrate()
3389 memset(result, 0, sizeof(result)); in rtl8xxxu_gen1_phy_iq_calibrate()
3397 for (i = 0; i < 3; i++) { in rtl8xxxu_gen1_phy_iq_calibrate()
3401 simu = rtl8xxxu_simularity_compare(priv, result, 0, 1); in rtl8xxxu_gen1_phy_iq_calibrate()
3403 candidate = 0; in rtl8xxxu_gen1_phy_iq_calibrate()
3409 simu = rtl8xxxu_simularity_compare(priv, result, 0, 2); in rtl8xxxu_gen1_phy_iq_calibrate()
3411 candidate = 0; in rtl8xxxu_gen1_phy_iq_calibrate()
3419 for (i = 0; i < 8; i++) in rtl8xxxu_gen1_phy_iq_calibrate()
3430 for (i = 0; i < 4; i++) { in rtl8xxxu_gen1_phy_iq_calibrate()
3431 reg_e94 = result[i][0]; in rtl8xxxu_gen1_phy_iq_calibrate()
3441 if (candidate >= 0) { in rtl8xxxu_gen1_phy_iq_calibrate()
3442 reg_e94 = result[candidate][0]; in rtl8xxxu_gen1_phy_iq_calibrate()
3462 reg_e94 = reg_eb4 = priv->rege94 = priv->regeb4 = 0x100; in rtl8xxxu_gen1_phy_iq_calibrate()
3463 reg_e9c = reg_ebc = priv->rege9c = priv->regebc = 0x0; in rtl8xxxu_gen1_phy_iq_calibrate()
3466 if (reg_e94 && candidate >= 0) in rtl8xxxu_gen1_phy_iq_calibrate()
3468 candidate, (reg_ea4 == 0)); in rtl8xxxu_gen1_phy_iq_calibrate()
3472 candidate, (reg_ec4 == 0)); in rtl8xxxu_gen1_phy_iq_calibrate()
3481 u32 rf_amode, rf_bmode = 0, lstf; in rtl8723a_phy_lc_calibrate()
3496 (rf_amode & 0x8ffff) | 0x10000); in rtl8723a_phy_lc_calibrate()
3504 (rf_bmode & 0x8ffff) | 0x10000); in rtl8723a_phy_lc_calibrate()
3509 rtl8xxxu_write8(priv, REG_TXPAUSE, 0xff); in rtl8723a_phy_lc_calibrate()
3514 rtl8xxxu_write_rfreg(priv, RF_A, RF6052_REG_S0S1, 0xdfbe0); in rtl8723a_phy_lc_calibrate()
3516 val32 |= 0x08000; in rtl8723a_phy_lc_calibrate()
3522 rtl8xxxu_write_rfreg(priv, RF_A, RF6052_REG_S0S1, 0xdffe0); in rtl8723a_phy_lc_calibrate()
3535 rtl8xxxu_write8(priv, REG_TXPAUSE, 0x00); in rtl8723a_phy_lc_calibrate()
3544 case 0: in rtl8xxxu_set_mac()
3555 for (i = 0; i < ETH_ALEN; i++) in rtl8xxxu_set_mac()
3558 return 0; in rtl8xxxu_set_mac()
3569 case 0: in rtl8xxxu_set_bssid()
3580 for (i = 0; i < ETH_ALEN; i++) in rtl8xxxu_set_bssid()
3583 return 0; in rtl8xxxu_set_bssid()
3589 u8 vals[4] = { 0x41, 0xa8, 0x72, 0xb9 }; in rtl8xxxu_set_ampdu_factor()
3590 u8 max_agg = 0xf; in rtl8xxxu_set_ampdu_factor()
3597 for (i = 0; i < 4; i++) { in rtl8xxxu_set_ampdu_factor()
3598 if ((vals[i] & 0xf0) > (ampdu_factor << 4)) in rtl8xxxu_set_ampdu_factor()
3599 vals[i] = (vals[i] & 0x0f) | (ampdu_factor << 4); in rtl8xxxu_set_ampdu_factor()
3601 if ((vals[i] & 0x0f) > ampdu_factor) in rtl8xxxu_set_ampdu_factor()
3602 vals[i] = (vals[i] & 0xf0) | ampdu_factor; in rtl8xxxu_set_ampdu_factor()
3613 val8 &= 0xf8; in rtl8xxxu_set_ampdu_min_space()
3621 int count, ret = 0; in rtl8xxxu_active_to_emu()
3626 rtl8xxxu_write8(priv, REG_RF_CTRL, 0); in rtl8xxxu_active_to_emu()
3628 /* 0x004E[7] = 0, switch DPDT_SEL_P output from register 0x0065[2] */ in rtl8xxxu_active_to_emu()
3633 /* 0x0005[1] = 1 turn off MAC by HW state machine*/ in rtl8xxxu_active_to_emu()
3640 if ((val8 & BIT(1)) == 0) in rtl8xxxu_active_to_emu()
3652 /* 0x0000[5] = 1 analog Ips to digital, 1:isolation */ in rtl8xxxu_active_to_emu()
3657 /* 0x0020[0] = 0 disable LDOA12 MACRO block*/ in rtl8xxxu_active_to_emu()
3670 int count, ret = 0; in rtl8xxxu_active_to_lps()
3672 rtl8xxxu_write8(priv, REG_TXPAUSE, 0xff); in rtl8xxxu_active_to_lps()
3678 val32 = rtl8xxxu_read32(priv, 0x5f8); in rtl8xxxu_active_to_lps()
3686 "%s: RX poll timed out (0x05f8)\n", __func__); in rtl8xxxu_active_to_lps()
3731 /* 0x48[16] = 0 to disable GPIO9 as EXT WAKEUP*/ in rtl8xxxu_disabled_to_emu()
3733 val8 &= ~BIT(0); in rtl8xxxu_disabled_to_emu()
3736 /* 0x04[12:11] = 11 enable WL suspend*/ in rtl8xxxu_disabled_to_emu()
3746 /* 0x0007[7:0] = 0x20 SOP option to disable BG/MB */ in rtl8xxxu_emu_to_disabled()
3747 rtl8xxxu_write8(priv, REG_APS_FSMCO + 3, 0x20); in rtl8xxxu_emu_to_disabled()
3749 /* 0x04[12:11] = 01 enable WL suspend */ in rtl8xxxu_emu_to_disabled()
3759 /* 0x48[16] = 1 to enable GPIO9 as EXT wakeup */ in rtl8xxxu_emu_to_disabled()
3761 val8 |= BIT(0); in rtl8xxxu_emu_to_disabled()
3764 return 0; in rtl8xxxu_emu_to_disabled()
3773 rtl8xxxu_write8(priv, REG_TXPAUSE, 0xff); in rtl8xxxu_flush_fifo()
3785 retval = 0; in rtl8xxxu_flush_fifo()
3790 rtl8xxxu_write16(priv, REG_RQPN_NPQ, 0); in rtl8xxxu_flush_fifo()
3791 rtl8xxxu_write32(priv, REG_RQPN, 0x80000000); in rtl8xxxu_flush_fifo()
3803 rtl8xxxu_write8(priv, 0xfe40, 0xe0); in rtl8xxxu_gen1_usb_quirks()
3804 rtl8xxxu_write8(priv, 0xfe41, 0x8d); in rtl8xxxu_gen1_usb_quirks()
3805 rtl8xxxu_write8(priv, 0xfe42, 0x80); in rtl8xxxu_gen1_usb_quirks()
3810 rtl8xxxu_write32(priv, REG_TXDMA_OFFSET_CHK, 0xfd0320); in rtl8xxxu_gen1_usb_quirks()
3817 rtl8xxxu_write8(priv, 0xfe40, 0xe6); in rtl8xxxu_gen1_usb_quirks()
3818 rtl8xxxu_write8(priv, 0xfe41, 0x94); in rtl8xxxu_gen1_usb_quirks()
3819 rtl8xxxu_write8(priv, 0xfe42, 0x80); in rtl8xxxu_gen1_usb_quirks()
3821 rtl8xxxu_write8(priv, 0xfe40, 0xe0); in rtl8xxxu_gen1_usb_quirks()
3822 rtl8xxxu_write8(priv, 0xfe41, 0x19); in rtl8xxxu_gen1_usb_quirks()
3823 rtl8xxxu_write8(priv, 0xfe42, 0x80); in rtl8xxxu_gen1_usb_quirks()
3825 rtl8xxxu_write8(priv, 0xfe40, 0xe5); in rtl8xxxu_gen1_usb_quirks()
3826 rtl8xxxu_write8(priv, 0xfe41, 0x91); in rtl8xxxu_gen1_usb_quirks()
3827 rtl8xxxu_write8(priv, 0xfe42, 0x80); in rtl8xxxu_gen1_usb_quirks()
3829 rtl8xxxu_write8(priv, 0xfe40, 0xe2); in rtl8xxxu_gen1_usb_quirks()
3830 rtl8xxxu_write8(priv, 0xfe41, 0x81); in rtl8xxxu_gen1_usb_quirks()
3831 rtl8xxxu_write8(priv, 0xfe42, 0x80); in rtl8xxxu_gen1_usb_quirks()
3864 rtl8xxxu_write8(priv, REG_RF_CTRL, 0x00); in rtl8xxxu_power_off()
3876 rtl8xxxu_write8(priv, REG_MCU_FW_DL, 0x00); in rtl8xxxu_power_off()
3883 val8 &= ~BIT(0); in rtl8xxxu_power_off()
3887 val8 |= BIT(0); in rtl8xxxu_power_off()
3890 /* RSV_CTRL 0x1C[7:0] = 0x0e lock ISO/CLK/Power control register */ in rtl8xxxu_power_off()
3891 rtl8xxxu_write8(priv, REG_RSV_CTRL, 0x0e); in rtl8xxxu_power_off()
3899 memset(&h2c, 0, sizeof(struct h2c_cmd)); in rtl8723bu_set_ps_tdma()
3924 hq = 0; in rtl8xxxu_init_queue_reserved_page()
3925 lq = 0; in rtl8xxxu_init_queue_reserved_page()
3926 nq = 0; in rtl8xxxu_init_queue_reserved_page()
3927 eq = 0; in rtl8xxxu_init_queue_reserved_page()
3928 pubq = 0; in rtl8xxxu_init_queue_reserved_page()
3973 rtl8xxxu_write32(priv, REG_AGGLEN_LMT, 0xffffffff); in rtl8xxxu_init_burst()
3974 rtl8xxxu_write8(priv, REG_RX_PKT_LIMIT, 0x18); in rtl8xxxu_init_burst()
3975 rtl8xxxu_write8(priv, REG_PIFS, 0x00); in rtl8xxxu_init_burst()
3979 rtl8xxxu_write32(priv, REG_FAST_EDCA_CTRL, 0x03086666); in rtl8xxxu_init_burst()
4012 return 0; in rtl8xxxu_get_macid()
4016 return 0; in rtl8xxxu_get_macid()
4038 * initialized. First MAC returns 0xea, second MAC returns 0x00 in rtl8xxxu_init_device()
4040 if (val8 == 0xea || !(val16 & SYS_CLK_MAC_CLK_ENABLE)) in rtl8xxxu_init_device()
4049 if (ret < 0) { in rtl8xxxu_init_device()
4102 rtl8xxxu_write32(priv, REG_FPGA0_TX_INFO, 0x00000003); in rtl8xxxu_init_device()
4113 /* 0x860[6:5]= 00 - why? - this sets antenna B */ in rtl8xxxu_init_device()
4116 rtl8xxxu_write32(priv, REG_FPGA0_XA_RF_INT_OE, 0x66f60210); in rtl8xxxu_init_device()
4169 * Bit 0 of REG_TX_REPORT_CTRL is required for both types. in rtl8xxxu_init_device()
4175 val8 |= BIT(0); in rtl8xxxu_init_device()
4179 rtl8xxxu_write8(priv, REG_TX_REPORT_CTRL + 1, 0x02); in rtl8xxxu_init_device()
4181 rtl8xxxu_write16(priv, REG_TX_REPORT_TIME, 0xcdf0); in rtl8xxxu_init_device()
4184 val8 = rtl8xxxu_read8(priv, 0xa3); in rtl8xxxu_init_device()
4185 val8 &= 0xf8; in rtl8xxxu_init_device()
4186 rtl8xxxu_write8(priv, 0xa3, val8); in rtl8xxxu_init_device()
4190 rtl8xxxu_write8(priv, REG_EARLY_MODE_CONTROL_8710B, 0); in rtl8xxxu_init_device()
4200 rtl8xxxu_write32(priv, REG_HIMR0, 0x00); in rtl8xxxu_init_device()
4201 rtl8xxxu_write32(priv, REG_HIMR1, 0x00); in rtl8xxxu_init_device()
4203 rtl8xxxu_write32(priv, REG_HISR0, 0xffffffff); in rtl8xxxu_init_device()
4204 rtl8xxxu_write32(priv, REG_HISR1, 0xffffffff); in rtl8xxxu_init_device()
4206 rtl8xxxu_write32(priv, REG_HISR0, 0xffffffff); in rtl8xxxu_init_device()
4215 rtl8xxxu_write32(priv, REG_HIMR0_8710B, 0); in rtl8xxxu_init_device()
4220 rtl8xxxu_write32(priv, REG_HISR, 0xffffffff); in rtl8xxxu_init_device()
4221 rtl8xxxu_write32(priv, REG_HIMR, 0xffffffff); in rtl8xxxu_init_device()
4235 rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0xffff); in rtl8xxxu_init_device()
4241 rtl8xxxu_write16(priv, REG_RXFLTMAP1, 0x400); in rtl8xxxu_init_device()
4244 rtl8xxxu_write16(priv, REG_RXFLTMAP0, 0xffff); in rtl8xxxu_init_device()
4249 rtl8xxxu_write32(priv, REG_MAR, 0xffffffff); in rtl8xxxu_init_device()
4250 rtl8xxxu_write32(priv, REG_MAR + 4, 0xffffffff); in rtl8xxxu_init_device()
4261 /* CCK = 0x0a, OFDM = 0x10 */ in rtl8xxxu_init_device()
4262 rtl8xxxu_set_spec_sifs(priv, 0x10, 0x10); in rtl8xxxu_init_device()
4263 rtl8xxxu_set_retry(priv, 0x30, 0x30); in rtl8xxxu_init_device()
4264 rtl8xxxu_set_spec_sifs(priv, 0x0a, 0x10); in rtl8xxxu_init_device()
4269 rtl8xxxu_write16(priv, REG_MAC_SPEC_SIFS, 0x100a); in rtl8xxxu_init_device()
4272 rtl8xxxu_write16(priv, REG_SIFS_CCK, 0x100a); in rtl8xxxu_init_device()
4275 rtl8xxxu_write16(priv, REG_SIFS_OFDM, 0x100a); in rtl8xxxu_init_device()
4278 rtl8xxxu_write32(priv, REG_EDCA_BE_PARAM, 0x005ea42b); in rtl8xxxu_init_device()
4279 rtl8xxxu_write32(priv, REG_EDCA_BK_PARAM, 0x0000a44f); in rtl8xxxu_init_device()
4280 rtl8xxxu_write32(priv, REG_EDCA_VI_PARAM, 0x005ea324); in rtl8xxxu_init_device()
4281 rtl8xxxu_write32(priv, REG_EDCA_VO_PARAM, 0x002fa226); in rtl8xxxu_init_device()
4284 rtl8xxxu_write32(priv, REG_DARFRC, 0x00000000); in rtl8xxxu_init_device()
4285 rtl8xxxu_write32(priv, REG_DARFRC + 4, 0x10080404); in rtl8xxxu_init_device()
4286 rtl8xxxu_write32(priv, REG_RARFRC, 0x04030201); in rtl8xxxu_init_device()
4287 rtl8xxxu_write32(priv, REG_RARFRC + 4, 0x08070605); in rtl8xxxu_init_device()
4294 rtl8xxxu_write8(priv, REG_ACKTO, 0x40); in rtl8xxxu_init_device()
4301 rtl8xxxu_write16(priv, REG_TBTT_PROHIBIT, 0x6404); in rtl8xxxu_init_device()
4308 rtl8xxxu_write16(priv, REG_BEACON_TCFG, 0x660F); in rtl8xxxu_init_device()
4320 rtl8xxxu_write16(priv, REG_PKT_VO_VI_LIFE_TIME, 0x0400); /* unit: 256us. 256ms */ in rtl8xxxu_init_device()
4321 rtl8xxxu_write16(priv, REG_PKT_BE_BK_LIFE_TIME, 0x0400); /* unit: 256us. 256ms */ in rtl8xxxu_init_device()
4349 rtl8xxxu_write8(priv, REG_HWSEQ_CTRL, 0xff); in rtl8xxxu_init_device()
4352 rtl8xxxu_write32(priv, REG_BAR_MODE_CTRL, 0x0201ffff); in rtl8xxxu_init_device()
4356 rtl8xxxu_write16(priv, REG_FAST_EDCA_CTRL, 0); in rtl8xxxu_init_device()
4363 * 0x4c6[3] 1: RTS BW = Data BW in rtl8xxxu_init_device()
4364 * 0: RTS BW depends on CCA / secondary CCA result. in rtl8xxxu_init_device()
4372 rtl8xxxu_write8(priv, REG_ACLK_MON, 0x00); in rtl8xxxu_init_device()
4397 val32 |= 0x30000; in rtl8xxxu_init_device()
4401 RF_A, RF6052_REG_T_METER_8723B, 0x37cf8); in rtl8xxxu_init_device()
4404 rtl8xxxu_write_rfreg(priv, RF_A, RF6052_REG_T_METER, 0x60); in rtl8xxxu_init_device()
4418 if ((val32 & 0xff000000) != 0x83000000) { in rtl8xxxu_init_device()
4423 rtl8xxxu_write8(priv, REG_USB_HRPWM, 0x00); in rtl8xxxu_init_device()
4436 rtl8xxxu_write8(priv, REG_8192E_LDOV12_CTRL, 0x75); in rtl8xxxu_init_device()
4437 val32 &= 0xfff00fff; in rtl8xxxu_init_device()
4438 val32 |= 0x0007e000; in rtl8xxxu_init_device()
4442 * 0x824[9] = 0x82C[9] = 0xA80[7] those registers setting in rtl8xxxu_init_device()
4469 * 0x76D[5:4] is Port0,Port1 Enable Bit. in rtl8xxxu_init_device()
4476 /* Set 0x5c[8] and [2:0] = 1, LDO mode */ in rtl8xxxu_init_device()
4478 val32 |= 0x107; in rtl8xxxu_init_device()
4482 val32 = rtl8xxxu_read32(priv, 0xa9c); in rtl8xxxu_init_device()
4518 ctrl = (key->cipher & 0x0f) << 2 | key->keyidx | CAM_WRITE_VALID; in rtl8xxxu_cam_write()
4522 for (j = 5; j >= 0; j--) { in rtl8xxxu_cam_write()
4524 case 0: in rtl8xxxu_cam_write()
4525 val32 = ctrl | (mac[0] << 16) | (mac[1] << 24); in rtl8xxxu_cam_write()
4555 return 0; in rtl8xxxu_get_antenna()
4563 schedule_delayed_work(&priv->update_beacon_work, 0); in rtl8xxxu_set_tim()
4565 return 0; in rtl8xxxu_set_tim()
4596 memset(&h2c, 0, sizeof(struct h2c_cmd)); in rtl8xxxu_update_rate_mask()
4599 h2c.ramask.mask_lo = cpu_to_le16(ramask & 0xffff); in rtl8xxxu_update_rate_mask()
4602 h2c.ramask.arg = 0x80; in rtl8xxxu_update_rate_mask()
4604 h2c.ramask.arg |= 0x20; in rtl8xxxu_update_rate_mask()
4623 memset(&h2c, 0, sizeof(struct h2c_cmd)); in rtl8xxxu_gen2_update_rate_mask()
4626 h2c.b_macid_cfg.ramask0 = ramask & 0xff; in rtl8xxxu_gen2_update_rate_mask()
4627 h2c.b_macid_cfg.ramask1 = (ramask >> 8) & 0xff; in rtl8xxxu_gen2_update_rate_mask()
4628 h2c.b_macid_cfg.ramask2 = (ramask >> 16) & 0xff; in rtl8xxxu_gen2_update_rate_mask()
4629 h2c.b_macid_cfg.ramask3 = (ramask >> 24) & 0xff; in rtl8xxxu_gen2_update_rate_mask()
4648 memset(&h2c, 0, sizeof(struct h2c_cmd)); in rtl8xxxu_gen1_report_connect()
4669 memset(&h2c, 0, sizeof(struct h2c_cmd)); in rtl8xxxu_gen2_report_connect()
4673 h2c.media_status_rpt.parm |= BIT(0); in rtl8xxxu_gen2_report_connect()
4675 h2c.media_status_rpt.parm &= ~BIT(0); in rtl8xxxu_gen2_report_connect()
4677 h2c.media_status_rpt.parm |= ((role << 4) & 0xf0); in rtl8xxxu_gen2_report_connect()
4688 memset(&h2c, 0, sizeof(struct h2c_cmd)); in rtl8xxxu_gen1_report_rssi()
4705 memset(&h2c, 0, sizeof(struct h2c_cmd)); in rtl8xxxu_gen2_report_rssi()
4747 if (rtl8xxxu_dma_agg_pages >= 0) { in rtl8xxxu_gen1_init_aggregation()
4767 if (rtl8xxxu_dma_agg_timeout >= 0) { in rtl8xxxu_gen1_init_aggregation()
4782 {.bitrate = 10, .hw_value = 0x00,},
4783 {.bitrate = 20, .hw_value = 0x01,},
4784 {.bitrate = 55, .hw_value = 0x02,},
4785 {.bitrate = 110, .hw_value = 0x03,},
4786 {.bitrate = 60, .hw_value = 0x04,},
4787 {.bitrate = 90, .hw_value = 0x05,},
4788 {.bitrate = 120, .hw_value = 0x06,},
4789 {.bitrate = 180, .hw_value = 0x07,},
4790 {.bitrate = 240, .hw_value = 0x08,},
4791 {.bitrate = 360, .hw_value = 0x09,},
4792 {.bitrate = 480, .hw_value = 0x0a,},
4793 {.bitrate = 540, .hw_value = 0x0b,},
4814 u8 rate_idx = 0; in rtl8xxxu_set_basic_rates()
4852 if (sta->deflink.supp_rates[0] <= 0xf) in rtl8xxxu_wireless_mode()
4854 else if (sta->deflink.supp_rates[0] & 0xf) in rtl8xxxu_wireless_mode()
4872 u16 wireless_mode = 0; in rtl8xxxu_set_aifs()
4876 for (i = 0; i < ARRAY_SIZE(priv->vifs); i++) { in rtl8xxxu_set_aifs()
4898 for (i = 0; i < IEEE80211_NUM_ACS; i++) { in rtl8xxxu_set_aifs()
4902 aifsn = val32 & 0xff; in rtl8xxxu_set_aifs()
4910 val32 &= ~0xff; in rtl8xxxu_set_aifs()
4921 rarpt->txrate.flags = 0; in rtl8xxxu_update_ra_report()
4964 int sgi = 0; in rtl8xxxu_bss_info_changed()
4984 ramask = (sta->deflink.supp_rates[0] & 0xfff) | in rtl8xxxu_bss_info_changed()
4985 sta->deflink.ht_cap.mcs.rx_mask[0] << 12 | in rtl8xxxu_bss_info_changed()
5004 priv->fops->update_rate_mask(priv, ramask, 0, sgi, in rtl8xxxu_bss_info_changed()
5007 rtl8xxxu_write8(priv, REG_BCN_MAX_ERR, 0xff); in rtl8xxxu_bss_info_changed()
5009 if (rtlvif->port_num == 0) in rtl8xxxu_bss_info_changed()
5014 0xc000 | vif->cfg.aid); in rtl8xxxu_bss_info_changed()
5016 priv->fops->report_connect(priv, 0, H2C_MACID_ROLE_AP, true); in rtl8xxxu_bss_info_changed()
5022 priv->fops->report_connect(priv, 0, H2C_MACID_ROLE_AP, false); in rtl8xxxu_bss_info_changed()
5068 schedule_delayed_work(&priv->update_beacon_work, 0); in rtl8xxxu_bss_info_changed()
5084 priv->fops->report_connect(priv, RTL8XXXU_BC_MC_MACID, 0, true); in rtl8xxxu_start_ap()
5086 return 0; in rtl8xxxu_start_ap()
5135 u16 csum = 0; in rtl8xxxu_calc_tx_desc_csum()
5142 tx_desc->csum = cpu_to_le16(0); in rtl8xxxu_calc_tx_desc_csum()
5144 for (i = 0; i < (sizeof(struct rtl8xxxu_txdesc32) / sizeof(u16)); i++) in rtl8xxxu_calc_tx_desc_csum()
5218 hw = tx_info->rate_driver_data[0]; in rtl8xxxu_tx_complete()
5224 tx_info->status.rates[0].idx = -1; in rtl8xxxu_tx_complete()
5225 tx_info->status.rates[0].count = 0; in rtl8xxxu_tx_complete()
5254 (cap >> 1) & 0x1, in rtl8xxxu_dump_action()
5265 (cap >> 1) & 0x1); in rtl8xxxu_dump_action()
5288 u8 tid = qc[0] & IEEE80211_QOS_CTL_TID_MASK; in rtl8xxxu_fill_txdesc_v1()
5289 u32 rate = 0; in rtl8xxxu_fill_txdesc_v1()
5301 tx_desc->txdw5 |= cpu_to_le32(0x0001ff00); in rtl8xxxu_fill_txdesc_v1()
5354 u8 tid = qc[0] & IEEE80211_QOS_CTL_TID_MASK; in rtl8xxxu_fill_txdesc_v2()
5355 u32 rate = 0; in rtl8xxxu_fill_txdesc_v2()
5370 tx_desc40->txdw4 |= cpu_to_le32(0x1f << in rtl8xxxu_fill_txdesc_v2()
5428 u8 tid = qc[0] & IEEE80211_QOS_CTL_TID_MASK; in rtl8xxxu_fill_txdesc_v3()
5429 u32 rate = 0; in rtl8xxxu_fill_txdesc_v3()
5440 tx_desc->txdw5 |= cpu_to_le32(0x0001ff00); in rtl8xxxu_fill_txdesc_v3()
5539 tx_info->rate_driver_data[0] = hw; in rtl8xxxu_tx()
5548 memset(tx_desc, 0, tx_desc_size); in rtl8xxxu_tx()
5579 if (bmc && rtlvif && rtlvif->hw_key_idx != 0xff) { in rtl8xxxu_tx()
5591 u8 tid = qc[0] & IEEE80211_QOS_CTL_TID_MASK; in rtl8xxxu_tx()
5601 if (!ieee80211_start_tx_ba_session(sta, tid, 0)) in rtl8xxxu_tx()
5624 rts_rate = 0; in rtl8xxxu_tx()
5654 struct sk_buff *skb = ieee80211_beacon_get(hw, vif, 0); in rtl8xxxu_send_beacon_frame()
5689 struct ieee80211_vif *vif = priv->vifs[0]; in rtl8xxxu_update_beacon_work_callback()
5697 if (ieee80211_beacon_cntdwn_is_complete(vif, 0)) { in rtl8xxxu_update_beacon_work_callback()
5698 ieee80211_csa_finish(vif, 0); in rtl8xxxu_update_beacon_work_callback()
5719 return (priv->vifs[0] && priv->vifs[0]->cfg.assoc && in rtl8xxxu_is_sta_sta()
5720 priv->vifs[0]->type == NL80211_IFTYPE_STATION) && in rtl8xxxu_is_sta_sta()
5744 (rtl8xxxu_is_packet_match_bssid(priv, hdr, 0) || in rtl8723au_rx_parse_phystats()
5748 priv->cfo_tracking.cfo_tail[0] = phy_stats->path_cfotail[0]; in rtl8723au_rx_parse_phystats()
5783 (rtl8xxxu_is_packet_match_bssid(priv, hdr, 0) || in jaguar2_rx_parse_phystats_type1()
5785 u8 pwdb_max = 0; in jaguar2_rx_parse_phystats_type1()
5796 for (rx_path = 0; rx_path < priv->rx_paths; rx_path++) in jaguar2_rx_parse_phystats_type1()
5808 u8 pwdb_max = 0; in jaguar2_rx_parse_phystats_type2()
5811 for (rx_path = 0; rx_path < priv->rx_paths; rx_path++) in jaguar2_rx_parse_phystats_type2()
5828 case 0: in jaguar2_rx_parse_phystats()
5870 int pending = 0; in rtl8xxxu_queue_rx_urb()
5905 priv->rx_urb_pending_count = 0; in rtl8xxxu_rx_urb_work()
5918 case 0: in rtl8xxxu_rx_urb_work()
5936 * 0-7 to represent writing different combinations of register values
5945 case 0: in rtl8723bu_set_coex_with_type()
5946 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE1, 0x55555555); in rtl8723bu_set_coex_with_type()
5947 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE2, 0x55555555); in rtl8723bu_set_coex_with_type()
5948 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE3, 0x00ffffff); in rtl8723bu_set_coex_with_type()
5949 rtl8xxxu_write8(priv, REG_BT_COEX_TABLE4, 0x03); in rtl8723bu_set_coex_with_type()
5953 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE1, 0x55555555); in rtl8723bu_set_coex_with_type()
5954 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE2, 0x5a5a5a5a); in rtl8723bu_set_coex_with_type()
5955 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE3, 0x00ffffff); in rtl8723bu_set_coex_with_type()
5956 rtl8xxxu_write8(priv, REG_BT_COEX_TABLE4, 0x03); in rtl8723bu_set_coex_with_type()
5959 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE1, 0x5a5a5a5a); in rtl8723bu_set_coex_with_type()
5960 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE2, 0x5a5a5a5a); in rtl8723bu_set_coex_with_type()
5961 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE3, 0x00ffffff); in rtl8723bu_set_coex_with_type()
5962 rtl8xxxu_write8(priv, REG_BT_COEX_TABLE4, 0x03); in rtl8723bu_set_coex_with_type()
5965 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE1, 0x5a5a5a5a); in rtl8723bu_set_coex_with_type()
5966 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE2, 0xaaaa5a5a); in rtl8723bu_set_coex_with_type()
5967 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE3, 0x00ffffff); in rtl8723bu_set_coex_with_type()
5968 rtl8xxxu_write8(priv, REG_BT_COEX_TABLE4, 0x03); in rtl8723bu_set_coex_with_type()
5971 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE1, 0x5a5a5a5a); in rtl8723bu_set_coex_with_type()
5972 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE2, 0xaa5a5a5a); in rtl8723bu_set_coex_with_type()
5973 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE3, 0x00ffffff); in rtl8723bu_set_coex_with_type()
5974 rtl8xxxu_write8(priv, REG_BT_COEX_TABLE4, 0x03); in rtl8723bu_set_coex_with_type()
5977 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE1, 0x55555555); in rtl8723bu_set_coex_with_type()
5978 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE2, 0xaaaaaaaa); in rtl8723bu_set_coex_with_type()
5979 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE3, 0x00ffffff); in rtl8723bu_set_coex_with_type()
5980 rtl8xxxu_write8(priv, REG_BT_COEX_TABLE4, 0x03); in rtl8723bu_set_coex_with_type()
5983 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE1, 0xaaaaaaaa); in rtl8723bu_set_coex_with_type()
5984 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE2, 0xaaaaaaaa); in rtl8723bu_set_coex_with_type()
5985 rtl8xxxu_write32(priv, REG_BT_COEX_TABLE3, 0x00ffffff); in rtl8723bu_set_coex_with_type()
5986 rtl8xxxu_write8(priv, REG_BT_COEX_TABLE4, 0x03); in rtl8723bu_set_coex_with_type()
6010 if ((bt_info & 0x1f) == BT_INFO_8723B_1ANT_B_CONNECTION) in rtl8723bu_update_bt_link_info()
6062 return (priv->vifs[0] && priv->vifs[0]->cfg.assoc) || in rtl8xxxu_is_assoc()
6074 rtl8723bu_set_ps_tdma(priv, 0x8, 0x0, 0x0, 0x0, 0x0); in rtl8723bu_handle_bt_inquiry()
6075 rtl8723bu_set_coex_with_type(priv, 0); in rtl8723bu_handle_bt_inquiry()
6077 rtl8723bu_set_ps_tdma(priv, 0x61, 0x35, 0x3, 0x11, 0x11); in rtl8723bu_handle_bt_inquiry()
6080 rtl8723bu_set_ps_tdma(priv, 0x61, 0x3f, 0x3, 0x11, 0x11); in rtl8723bu_handle_bt_inquiry()
6083 rtl8723bu_set_ps_tdma(priv, 0x8, 0x0, 0x0, 0x0, 0x0); in rtl8723bu_handle_bt_inquiry()
6096 u32 val32 = 0; in rtl8723bu_handle_bt_info()
6097 u32 high_prio_tx = 0, high_prio_rx = 0; in rtl8723bu_handle_bt_info()
6099 val32 = rtl8xxxu_read32(priv, 0x770); in rtl8723bu_handle_bt_info()
6100 high_prio_tx = val32 & 0x0000ffff; in rtl8723bu_handle_bt_info()
6101 high_prio_rx = (val32 & 0xffff0000) >> 16; in rtl8723bu_handle_bt_info()
6105 rtl8723bu_set_ps_tdma(priv, 0x61, 0x20, in rtl8723bu_handle_bt_info()
6106 0x3, 0x11, 0x11); in rtl8723bu_handle_bt_info()
6109 rtl8723bu_set_ps_tdma(priv, 0x61, 0x35, in rtl8723bu_handle_bt_info()
6110 0x3, 0x11, 0x11); in rtl8723bu_handle_bt_info()
6115 rtl8723bu_set_ps_tdma(priv, 0x51, 0x21, in rtl8723bu_handle_bt_info()
6116 0x3, 0x10, 0x10); in rtl8723bu_handle_bt_info()
6119 rtl8723bu_set_ps_tdma(priv, 0x51, 0x21, in rtl8723bu_handle_bt_info()
6120 0x3, 0x10, 0x10); in rtl8723bu_handle_bt_info()
6123 rtl8723bu_set_ps_tdma(priv, 0x61, 0x35, in rtl8723bu_handle_bt_info()
6124 0x3, 0x11, 0x11); in rtl8723bu_handle_bt_info()
6128 rtl8723bu_set_ps_tdma(priv, 0x8, 0x0, 0x0, 0x0, 0x0); in rtl8723bu_handle_bt_info()
6135 rtl8723bu_set_ps_tdma(priv, 0x8, 0x0, 0x0, 0x0, 0x0); in rtl8723bu_handle_bt_info()
6136 rtl8723bu_set_coex_with_type(priv, 0); in rtl8723bu_handle_bt_info()
6145 u8 bt_info = 0; in rtl8xxxu_c2hcmd_callback()
6361 pkt_cnt = 0; in rtl8xxxu_parse_rxdesc16()
6373 for (i = 0; in rtl8xxxu_parse_rxdesc16()
6399 memset(rx_status, 0, sizeof(struct ieee80211_rx_status)); in rtl8xxxu_parse_rxdesc16()
6459 } while (skb && pkt_cnt > 0 && in rtl8xxxu_parse_rxdesc16()
6489 for (i = 0; i < (sizeof(struct rtl8xxxu_rxdesc24) / sizeof(u32)); i++) in rtl8xxxu_parse_rxdesc24()
6507 memset(rx_status, 0, sizeof(struct ieee80211_rx_status)); in rtl8xxxu_parse_rxdesc24()
6580 if (urb->status == 0) { in rtl8xxxu_rx_complete()
6618 memset(skb->data, 0, rx_desc_sz); in rtl8xxxu_submit_rx_urb()
6636 if (urb->status == 0) { in rtl8xxxu_int_complete()
6654 urb = usb_alloc_urb(0, GFP_KERNEL); in rtl8xxxu_submit_int_urb()
6689 for (i = 0; i < ARRAY_SIZE(atimwnd); i++) in rtl8xxxu_switch_ports()
6691 for (i = 0; i < ARRAY_SIZE(atimwnd_1); i++) in rtl8xxxu_switch_ports()
6694 for (i = 0; i < ARRAY_SIZE(tsftr); i++) in rtl8xxxu_switch_ports()
6696 for (i = 0; i < ARRAY_SIZE(tsftr); i++) in rtl8xxxu_switch_ports()
6699 for (i = 0; i < ARRAY_SIZE(macid); i++) in rtl8xxxu_switch_ports()
6702 for (i = 0; i < ARRAY_SIZE(bssid); i++) in rtl8xxxu_switch_ports()
6705 for (i = 0; i < ARRAY_SIZE(macid_1); i++) in rtl8xxxu_switch_ports()
6708 for (i = 0; i < ARRAY_SIZE(bssid_1); i++) in rtl8xxxu_switch_ports()
6718 msr = (msr & 0xf0) | ((msr & 0x03) << 2) | ((msr & 0x0c) >> 2); in rtl8xxxu_switch_ports()
6723 for (i = 0; i < ARRAY_SIZE(atimwnd_1); i++) in rtl8xxxu_switch_ports()
6725 for (i = 0; i < ARRAY_SIZE(tsftr_1); i++) in rtl8xxxu_switch_ports()
6727 for (i = 0; i < ARRAY_SIZE(macid_1); i++) in rtl8xxxu_switch_ports()
6729 for (i = 0; i < ARRAY_SIZE(bssid_1); i++) in rtl8xxxu_switch_ports()
6734 for (i = 0; i < ARRAY_SIZE(atimwnd); i++) in rtl8xxxu_switch_ports()
6736 for (i = 0; i < ARRAY_SIZE(tsftr); i++) in rtl8xxxu_switch_ports()
6738 for (i = 0; i < ARRAY_SIZE(macid); i++) in rtl8xxxu_switch_ports()
6740 for (i = 0; i < ARRAY_SIZE(bssid); i++) in rtl8xxxu_switch_ports()
6746 swap(priv->vifs[0], priv->vifs[1]); in rtl8xxxu_switch_ports()
6748 /* priv->vifs[0] is NULL here, based on how this function is currently in rtl8xxxu_switch_ports()
6751 * scenario, please check whether vifs[0] or vifs[1] can be NULL and if in rtl8xxxu_switch_ports()
6766 if (!priv->vifs[0]) in rtl8xxxu_add_interface()
6767 port_num = 0; in rtl8xxxu_add_interface()
6775 if (port_num == 0) { in rtl8xxxu_add_interface()
6787 port_num = 0; in rtl8xxxu_add_interface()
6792 rtl8xxxu_write8(priv, REG_ATIMWND, 0x0c); /* 12ms */ in rtl8xxxu_add_interface()
6793 rtl8xxxu_write16(priv, REG_TSFTR_SYN_OFFSET, 0x7fff); /* ~32ms */ in rtl8xxxu_add_interface()
6802 /* select BCN on port 0 */ in rtl8xxxu_add_interface()
6813 rtlvif->hw_key_idx = 0xff; in rtl8xxxu_add_interface()
6819 return 0; in rtl8xxxu_add_interface()
6837 int ret = 0, channel; in rtl8xxxu_config()
6911 acm_bit = 0; in rtl8xxxu_conf_tx()
6921 return 0; in rtl8xxxu_conf_tx()
6952 if (priv->vifs[0] && priv->vifs[0]->type == NL80211_IFTYPE_AP) in rtl8xxxu_configure_filter()
6987 return 0; in rtl8xxxu_set_rts_threshold()
7053 if (retval < 0) in rtl8xxxu_set_key()
7064 retval = 0; in rtl8xxxu_set_key()
7067 rtl8xxxu_write32(priv, REG_CAM_WRITE, 0x00000000); in rtl8xxxu_set_key()
7071 rtlvif->hw_key_idx = 0xff; in rtl8xxxu_set_key()
7073 retval = 0; in rtl8xxxu_set_key()
7108 rtl8xxxu_set_ampdu_factor(priv, 0); in rtl8xxxu_ampdu_action()
7109 rtl8xxxu_set_ampdu_min_space(priv, 0); in rtl8xxxu_ampdu_action()
7127 return 0; in rtl8xxxu_ampdu_action()
7144 else if (signal > 0) in rtl8xxxu_signal_to_snr()
7145 signal = 0; in rtl8xxxu_signal_to_snr()
7166 txbw_40mhz = (hw->conf.chandef.width == NL80211_CHAN_WIDTH_40) ? 1 : 0; in rtl8xxxu_refresh_rate_mask()
7188 int sgi = 0; in rtl8xxxu_refresh_rate_mask()
7189 u32 rate_bitmap = 0; in rtl8xxxu_refresh_rate_mask()
7191 rate_bitmap = (sta->deflink.supp_rates[0] & 0xfff) | in rtl8xxxu_refresh_rate_mask()
7192 (sta->deflink.ht_cap.mcs.rx_mask[0] << 12) | in rtl8xxxu_refresh_rate_mask()
7202 if (rate_bitmap & 0x0000000c) in rtl8xxxu_refresh_rate_mask()
7203 rate_bitmap &= 0x0000000d; in rtl8xxxu_refresh_rate_mask()
7205 rate_bitmap &= 0x0000000f; in rtl8xxxu_refresh_rate_mask()
7211 rate_bitmap &= 0x00000f00; in rtl8xxxu_refresh_rate_mask()
7213 rate_bitmap &= 0x00000ff0; in rtl8xxxu_refresh_rate_mask()
7218 rate_bitmap &= 0x00000f00; in rtl8xxxu_refresh_rate_mask()
7220 rate_bitmap &= 0x00000ff0; in rtl8xxxu_refresh_rate_mask()
7222 rate_bitmap &= 0x00000ff5; in rtl8xxxu_refresh_rate_mask()
7249 rate_bitmap &= 0x0f8f0000; in rtl8xxxu_refresh_rate_mask()
7251 rate_bitmap &= 0x0f8ff000; in rtl8xxxu_refresh_rate_mask()
7254 rate_bitmap &= 0x0f8ff015; in rtl8xxxu_refresh_rate_mask()
7256 rate_bitmap &= 0x0f8ff005; in rtl8xxxu_refresh_rate_mask()
7260 rate_bitmap &= 0x000f0000; in rtl8xxxu_refresh_rate_mask()
7262 rate_bitmap &= 0x000ff000; in rtl8xxxu_refresh_rate_mask()
7265 rate_bitmap &= 0x000ff015; in rtl8xxxu_refresh_rate_mask()
7267 rate_bitmap &= 0x000ff005; in rtl8xxxu_refresh_rate_mask()
7273 rate_bitmap &= 0x0fffffff; in rtl8xxxu_refresh_rate_mask()
7327 /* CFO_tail[1:0] is S(8,7), (num_subcarrier>>7) x 312.5K = CFO value(K Hz) */ in rtl8xxxu_track_cfo()
7328 cfo_khz_a = (int)((cfo->cfo_tail[0] * 3125) / 10) >> 7; in rtl8xxxu_track_cfo()
7363 crystal_cap = clamp(crystal_cap, 0, 0x3f); in rtl8xxxu_track_cfo()
7440 ret = 0; in rtl8xxxu_start()
7453 for (i = 0; i < RTL8XXXU_TX_URBS; i++) { in rtl8xxxu_start()
7474 for (i = 0; i < RTL8XXXU_RX_URBS; i++) { in rtl8xxxu_start()
7501 rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0xffff); in rtl8xxxu_start()
7502 rtl8xxxu_write16(priv, REG_RXFLTMAP0, 0xffff); in rtl8xxxu_start()
7505 OFDM0_X_AGC_CORE1_IGI_MASK, 0x1e); in rtl8xxxu_start()
7514 rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0x0000); in rtl8xxxu_start()
7515 rtl8xxxu_write16(priv, REG_RXFLTMAP0, 0x0000); in rtl8xxxu_start()
7525 rtl8xxxu_write8(priv, REG_TXPAUSE, 0xff); in rtl8xxxu_stop()
7527 rtl8xxxu_write16(priv, REG_RXFLTMAP0, 0x0000); in rtl8xxxu_stop()
7528 rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0x0000); in rtl8xxxu_stop()
7539 rtl8xxxu_write8(priv, REG_TXPAUSE, 0xff); in rtl8xxxu_stop()
7547 rtl8xxxu_write32(priv, REG_USB_HIMR, 0); in rtl8xxxu_stop()
7575 rtl8xxxu_refresh_rate_mask(priv, 0, sta, true); in rtl8xxxu_sta_add()
7579 case 0: in rtl8xxxu_sta_add()
7591 return 0; in rtl8xxxu_sta_add()
7606 return 0; in rtl8xxxu_sta_remove()
7644 int i, j = 0, endpoints; in rtl8xxxu_parse_usb()
7646 int ret = 0; in rtl8xxxu_parse_usb()
7652 for (i = 0; i < endpoints; i++) { in rtl8xxxu_parse_usb()
7776 case 0x1724: in rtl8xxxu_probe()
7777 case 0x8176: in rtl8xxxu_probe()
7778 case 0x8178: in rtl8xxxu_probe()
7779 case 0x817f: in rtl8xxxu_probe()
7780 case 0x818b: in rtl8xxxu_probe()
7781 case 0xf179: in rtl8xxxu_probe()
7782 case 0x8179: in rtl8xxxu_probe()
7783 case 0xb711: in rtl8xxxu_probe()
7784 case 0xf192: in rtl8xxxu_probe()
7785 case 0x2005: in rtl8xxxu_probe()
7786 untested = 0; in rtl8xxxu_probe()
7790 case 0x7392: in rtl8xxxu_probe()
7791 if (id->idProduct == 0x7811 || id->idProduct == 0xa611 || id->idProduct == 0xb811) in rtl8xxxu_probe()
7792 untested = 0; in rtl8xxxu_probe()
7794 case 0x050d: in rtl8xxxu_probe()
7795 if (id->idProduct == 0x1004) in rtl8xxxu_probe()
7796 untested = 0; in rtl8xxxu_probe()
7798 case 0x20f4: in rtl8xxxu_probe()
7799 if (id->idProduct == 0x648b) in rtl8xxxu_probe()
7800 untested = 0; in rtl8xxxu_probe()
7802 case 0x2001: in rtl8xxxu_probe()
7803 if (id->idProduct == 0x3308) in rtl8xxxu_probe()
7804 untested = 0; in rtl8xxxu_probe()
7806 case 0x2357: in rtl8xxxu_probe()
7807 if (id->idProduct == 0x0109 || id->idProduct == 0x0135) in rtl8xxxu_probe()
7808 untested = 0; in rtl8xxxu_probe()
7810 case 0x0b05: in rtl8xxxu_probe()
7811 if (id->idProduct == 0x18f1) in rtl8xxxu_probe()
7812 untested = 0; in rtl8xxxu_probe()
7821 "This Realtek USB WiFi dongle (0x%04x:0x%04x) is untested!\n", in rtl8xxxu_probe()
7920 memset(&sband->ht_cap.mcs, 0, sizeof(sband->ht_cap.mcs)); in rtl8xxxu_probe()
7921 sband->ht_cap.mcs.rx_mask[0] = 0xff; in rtl8xxxu_probe()
7922 sband->ht_cap.mcs.rx_mask[4] = 0x01; in rtl8xxxu_probe()
7924 sband->ht_cap.mcs.rx_mask[1] = 0xff; in rtl8xxxu_probe()
7967 return 0; in rtl8xxxu_probe()
8017 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x8724, 0xff, 0xff, 0xff),
8019 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x1724, 0xff, 0xff, 0xff),
8021 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x0724, 0xff, 0xff, 0xff),
8023 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x818b, 0xff, 0xff, 0xff),
8026 {USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x0108, 0xff, 0xff, 0xff),
8029 {USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x3319, 0xff, 0xff, 0xff),
8032 {USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x0109, 0xff, 0xff, 0xff),
8034 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0xb720, 0xff, 0xff, 0xff),
8036 {USB_DEVICE_AND_INTERFACE_INFO(0x7392, 0xa611, 0xff, 0xff, 0xff),
8039 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0xf179, 0xff, 0xff, 0xff),
8041 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x8179, 0xff, 0xff, 0xff),
8044 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x0179, 0xff, 0xff, 0xff),
8047 {USB_DEVICE_AND_INTERFACE_INFO(0x0df6, 0x0076, 0xff, 0xff, 0xff),
8050 {USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x3311, 0xff, 0xff, 0xff),
8053 {USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x330f, 0xff, 0xff, 0xff),
8056 {USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x3310, 0xff, 0xff, 0xff),
8059 {USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x331b, 0xff, 0xff, 0xff),
8062 {USB_DEVICE_AND_INTERFACE_INFO(0x07b8, 0x8179, 0xff, 0xff, 0xff),
8065 {USB_DEVICE_AND_INTERFACE_INFO(0x056e, 0x4008, 0xff, 0xff, 0xff),
8068 {USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x010c, 0xff, 0xff, 0xff),
8071 {USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x0111, 0xff, 0xff, 0xff),
8074 {USB_DEVICE_AND_INTERFACE_INFO(0x2c4e, 0x0102, 0xff, 0xff, 0xff),
8077 {USB_DEVICE_AND_INTERFACE_INFO(0x0b05, 0x18f0, 0xff, 0xff, 0xff),
8080 {USB_DEVICE_AND_INTERFACE_INFO(0x7392, 0xb811, 0xff, 0xff, 0xff),
8083 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0xffef, 0xff, 0xff, 0xff),
8086 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0xb711, 0xff, 0xff, 0xff),
8089 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x2005, 0xff, 0xff, 0xff),
8092 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0xf192, 0xff, 0xff, 0xff),
8095 {USB_DEVICE_AND_INTERFACE_INFO(0x0b05, 0x18f1, 0xff, 0xff, 0xff),
8098 {USB_DEVICE_AND_INTERFACE_INFO(0x7392, 0xb722, 0xff, 0xff, 0xff),
8100 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x318b, 0xff, 0xff, 0xff),
8103 {USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x0135, 0xff, 0xff, 0xff),
8107 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x8176, 0xff, 0xff, 0xff),
8109 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x8178, 0xff, 0xff, 0xff),
8111 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x817f, 0xff, 0xff, 0xff),
8113 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x819a, 0xff, 0xff, 0xff),
8115 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x8754, 0xff, 0xff, 0xff),
8117 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x817c, 0xff, 0xff, 0xff),
8120 {USB_DEVICE_AND_INTERFACE_INFO(0x7392, 0x7811, 0xff, 0xff, 0xff),
8123 {USB_DEVICE_AND_INTERFACE_INFO(0x050d, 0x1004, 0xff, 0xff, 0xff),
8126 {USB_DEVICE_AND_INTERFACE_INFO(0x20f4, 0x648b, 0xff, 0xff, 0xff),
8129 {USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x3308, 0xff, 0xff, 0xff),
8132 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x018a, 0xff, 0xff, 0xff),
8134 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x8191, 0xff, 0xff, 0xff),
8136 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x8170, 0xff, 0xff, 0xff),
8138 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x8177, 0xff, 0xff, 0xff),
8140 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x817a, 0xff, 0xff, 0xff),
8142 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x817b, 0xff, 0xff, 0xff),
8144 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x817d, 0xff, 0xff, 0xff),
8146 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x817e, 0xff, 0xff, 0xff),
8148 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x818a, 0xff, 0xff, 0xff),
8150 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x317f, 0xff, 0xff, 0xff),
8152 {USB_DEVICE_AND_INTERFACE_INFO(0x1058, 0x0631, 0xff, 0xff, 0xff),
8154 {USB_DEVICE_AND_INTERFACE_INFO(0x04bb, 0x094c, 0xff, 0xff, 0xff),
8156 {USB_DEVICE_AND_INTERFACE_INFO(0x050d, 0x1102, 0xff, 0xff, 0xff),
8158 {USB_DEVICE_AND_INTERFACE_INFO(0x06f8, 0xe033, 0xff, 0xff, 0xff),
8160 {USB_DEVICE_AND_INTERFACE_INFO(0x07b8, 0x8189, 0xff, 0xff, 0xff),
8162 {USB_DEVICE_AND_INTERFACE_INFO(0x0846, 0x9041, 0xff, 0xff, 0xff),
8164 {USB_DEVICE_AND_INTERFACE_INFO(0x0b05, 0x17ba, 0xff, 0xff, 0xff),
8166 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x1e1e, 0xff, 0xff, 0xff),
8168 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x5088, 0xff, 0xff, 0xff),
8170 {USB_DEVICE_AND_INTERFACE_INFO(0x0df6, 0x0052, 0xff, 0xff, 0xff),
8172 {USB_DEVICE_AND_INTERFACE_INFO(0x0df6, 0x005c, 0xff, 0xff, 0xff),
8174 {USB_DEVICE_AND_INTERFACE_INFO(0x0eb0, 0x9071, 0xff, 0xff, 0xff),
8176 {USB_DEVICE_AND_INTERFACE_INFO(0x103c, 0x1629, 0xff, 0xff, 0xff),
8178 {USB_DEVICE_AND_INTERFACE_INFO(0x13d3, 0x3357, 0xff, 0xff, 0xff),
8180 {USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x330b, 0xff, 0xff, 0xff),
8182 {USB_DEVICE_AND_INTERFACE_INFO(0x2019, 0x4902, 0xff, 0xff, 0xff),
8184 {USB_DEVICE_AND_INTERFACE_INFO(0x2019, 0xab2a, 0xff, 0xff, 0xff),
8186 {USB_DEVICE_AND_INTERFACE_INFO(0x2019, 0xab2e, 0xff, 0xff, 0xff),
8188 {USB_DEVICE_AND_INTERFACE_INFO(0x2019, 0xed17, 0xff, 0xff, 0xff),
8190 {USB_DEVICE_AND_INTERFACE_INFO(0x4855, 0x0090, 0xff, 0xff, 0xff),
8192 {USB_DEVICE_AND_INTERFACE_INFO(0x4856, 0x0091, 0xff, 0xff, 0xff),
8194 {USB_DEVICE_AND_INTERFACE_INFO(0xcdab, 0x8010, 0xff, 0xff, 0xff),
8196 {USB_DEVICE_AND_INTERFACE_INFO(0x04f2, 0xaff7, 0xff, 0xff, 0xff),
8198 {USB_DEVICE_AND_INTERFACE_INFO(0x04f2, 0xaff9, 0xff, 0xff, 0xff),
8200 {USB_DEVICE_AND_INTERFACE_INFO(0x04f2, 0xaffa, 0xff, 0xff, 0xff),
8202 {USB_DEVICE_AND_INTERFACE_INFO(0x04f2, 0xaff8, 0xff, 0xff, 0xff),
8204 {USB_DEVICE_AND_INTERFACE_INFO(0x04f2, 0xaffb, 0xff, 0xff, 0xff),
8206 {USB_DEVICE_AND_INTERFACE_INFO(0x04f2, 0xaffc, 0xff, 0xff, 0xff),
8208 {USB_DEVICE_AND_INTERFACE_INFO(0x2019, 0x1201, 0xff, 0xff, 0xff),
8211 {USB_DEVICE_AND_INTERFACE_INFO(0x04bb, 0x0950, 0xff, 0xff, 0xff),
8213 {USB_DEVICE_AND_INTERFACE_INFO(0x050d, 0x2102, 0xff, 0xff, 0xff),
8215 {USB_DEVICE_AND_INTERFACE_INFO(0x050d, 0x2103, 0xff, 0xff, 0xff),
8217 {USB_DEVICE_AND_INTERFACE_INFO(0x0586, 0x341f, 0xff, 0xff, 0xff),
8219 {USB_DEVICE_AND_INTERFACE_INFO(0x06f8, 0xe035, 0xff, 0xff, 0xff),
8221 {USB_DEVICE_AND_INTERFACE_INFO(0x0b05, 0x17ab, 0xff, 0xff, 0xff),
8223 {USB_DEVICE_AND_INTERFACE_INFO(0x0df6, 0x0061, 0xff, 0xff, 0xff),
8225 {USB_DEVICE_AND_INTERFACE_INFO(0x0df6, 0x0070, 0xff, 0xff, 0xff),
8227 {USB_DEVICE_AND_INTERFACE_INFO(0x0789, 0x016d, 0xff, 0xff, 0xff),
8229 {USB_DEVICE_AND_INTERFACE_INFO(0x07aa, 0x0056, 0xff, 0xff, 0xff),
8231 {USB_DEVICE_AND_INTERFACE_INFO(0x07b8, 0x8178, 0xff, 0xff, 0xff),
8233 {USB_DEVICE_AND_INTERFACE_INFO(0x0846, 0x9021, 0xff, 0xff, 0xff),
8235 {USB_DEVICE_AND_INTERFACE_INFO(0x0846, 0xf001, 0xff, 0xff, 0xff),
8237 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x2e2e, 0xff, 0xff, 0xff),
8239 {USB_DEVICE_AND_INTERFACE_INFO(0x0e66, 0x0019, 0xff, 0xff, 0xff),
8241 {USB_DEVICE_AND_INTERFACE_INFO(0x0e66, 0x0020, 0xff, 0xff, 0xff),
8243 {USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x3307, 0xff, 0xff, 0xff),
8245 {USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x3309, 0xff, 0xff, 0xff),
8247 {USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x330a, 0xff, 0xff, 0xff),
8249 {USB_DEVICE_AND_INTERFACE_INFO(0x2019, 0xab2b, 0xff, 0xff, 0xff),
8251 {USB_DEVICE_AND_INTERFACE_INFO(0x20f4, 0x624d, 0xff, 0xff, 0xff),
8253 {USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x0100, 0xff, 0xff, 0xff),
8255 {USB_DEVICE_AND_INTERFACE_INFO(0x4855, 0x0091, 0xff, 0xff, 0xff),
8257 {USB_DEVICE_AND_INTERFACE_INFO(0x7392, 0x7822, 0xff, 0xff, 0xff),
8260 {USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x0107, 0xff, 0xff, 0xff),
8262 {USB_DEVICE_AND_INTERFACE_INFO(0x2019, 0xab33, 0xff, 0xff, 0xff),
8264 {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x818c, 0xff, 0xff, 0xff),
8267 {USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x3312, 0xff, 0xff, 0xff),
8270 {USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x0126, 0xff, 0xff, 0xff),
8273 {USB_DEVICE_AND_INTERFACE_INFO(0x2c4e, 0x0100, 0xff, 0xff, 0xff),
8276 {USB_DEVICE_AND_INTERFACE_INFO(0x2c4e, 0x0104, 0xff, 0xff, 0xff),