]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/rtwn/rtl8192c/usb/r92cu_priv.h
Merge libc++ trunk r366426, resolve conflicts, and add FREEBSD-Xlist.
[FreeBSD/FreeBSD.git] / sys / dev / rtwn / rtl8192c / usb / r92cu_priv.h
1 /*-
2  * Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr>
3  * Copyright (c) 2016 Andriy Voskoboinyk <avos@FreeBSD.org>
4  *
5  * Permission to use, copy, modify, and distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16  *
17  * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $
18  * $FreeBSD$
19  */
20
21 #ifndef R92CU_PRIV_H
22 #define R92CU_PRIV_H
23
24 #include <dev/rtwn/rtl8192c/r92c_priv.h>
25
26
27 /*
28  * MAC initialization values.
29  */
30 static const struct rtwn_mac_prog rtl8192cu_mac[] = {
31         { 0x420, 0x80 }, { 0x423, 0x00 }, { 0x430, 0x00 }, { 0x431, 0x00 },
32         { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 },
33         { 0x436, 0x06 }, { 0x437, 0x07 }, { 0x438, 0x00 }, { 0x439, 0x00 },
34         { 0x43a, 0x00 }, { 0x43b, 0x01 }, { 0x43c, 0x04 }, { 0x43d, 0x05 },
35         { 0x43e, 0x06 }, { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 },
36         { 0x442, 0x00 }, { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f },
37         { 0x447, 0x00 }, { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 },
38         { 0x45b, 0xb9 }, { 0x460, 0x66 }, { 0x461, 0x66 }, { 0x462, 0x08 },
39         { 0x463, 0x03 }, { 0x4c8, 0xff }, { 0x4c9, 0x08 }, { 0x4cc, 0xff },
40         { 0x4cd, 0xff }, { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 },
41         { 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 },
42         { 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 },
43         { 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 },
44         { 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a },
45         { 0x515, 0x10 }, { 0x516, 0x0a }, { 0x517, 0x10 }, { 0x51a, 0x16 },
46         { 0x524, 0x0f }, { 0x525, 0x4f }, { 0x546, 0x40 }, { 0x547, 0x00 },
47         { 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55a, 0x02 },
48         { 0x55d, 0xff }, { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a },
49         { 0x652, 0x20 }, { 0x63c, 0x0a }, { 0x63d, 0x0e }, { 0x63e, 0x0a },
50         { 0x63f, 0x0e }, { 0x66e, 0x05 }, { 0x700, 0x21 }, { 0x701, 0x43 },
51         { 0x702, 0x65 }, { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 },
52         { 0x70a, 0x65 }, { 0x70b, 0x87 }
53 };
54
55
56 /*
57  * Baseband initialization values.
58  */
59 static const uint16_t rtl8192cu_bb_regs0_88ru[] = {
60         0x024, 0x028, 0x040, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814,
61         0x818, 0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838,
62         0x83c, 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c,
63         0x860, 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880,
64         0x884, 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904,
65         0x908, 0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18,
66         0xa1c, 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04,
67         0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28,
68         0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c,
69         0xc50, 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70
70 }, rtl8192cu_bb_regs0[] = {
71         0x024, 0x028, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818,
72         0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c,
73         0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860,
74         0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884,
75         0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, 0x908,
76         0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c,
77         0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04, 0xc08,
78         0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c,
79         0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50,
80         0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70
81 }, rtl8192cu_bb_regs1[] = {
82         0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88
83 }, rtl8192cu_bb_regs2[] = {
84         0xc8c, 0xc90, 0xc94, 0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac,
85         0xcb0, 0xcb4, 0xcb8, 0xcbc, 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0,
86         0xcd4, 0xcd8, 0xcdc, 0xce0, 0xce4, 0xce8, 0xcec, 0xd00
87 }, rtl8192cu_bb_regs5_88ru[] = {
88         0xe60, 0xe68, 0xe6c, 0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84,
89         0xe88, 0xe8c, 0xed0, 0xed4, 0xed8, 0xedc, 0xee0, 0xeec, 0xee8,
90         0xf14, 0xf4c, 0xf00
91 };
92
93 static const uint32_t rtl8192cu_bb_vals0_88cu[] = {
94         0x0011800d, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00,
95         0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000,
96         0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000,
97         0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000,
98         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a,
99         0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200,
100         0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070,
101         0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe,
102         0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000,
103         0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f,
104         0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000,
105         0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007,
106         0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000,
107         0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000,
108         0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994,
109         0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f,
110         0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000,
111         0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d
112 }, rtl8192cu_bb_vals0_88ru[] = {
113         0x0011800d, 0x00ffdb83, 0x000c0004, 0x80040000, 0x00000001,
114         0x0000fc00, 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385,
115         0x00000000, 0x01000100, 0x00390204, 0x00000000, 0x00000000,
116         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000,
117         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
118         0x569a569a, 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000,
119         0x32323200, 0x03000300, 0x22004000, 0x00000808, 0x00ffc3f1,
120         0xc0083070, 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800,
121         0xfffffffe, 0x40302010, 0x00706050, 0x00000000, 0x00000023,
122         0x00000000, 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300,
123         0x2e68120f, 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00,
124         0x15160000, 0x070b0f12, 0x00000104, 0x00d30000, 0x101fbf00,
125         0x00000007, 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c,
126         0x08800000, 0x40000100, 0x08800000, 0x40000100, 0x00000000,
127         0x00000000, 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf,
128         0x49795994, 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107,
129         0x007f037f, 0x6954342e, 0x43bc0094, 0x6954342f, 0x433c0094,
130         0x00000000, 0x5116848b, 0x47c00bff, 0x00000036, 0x2c56000d
131 }, rtl8192cu_bb_vals0_92ce_92cu[] = {
132         0x0011800d, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00,
133         0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000,
134         0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727,
135         0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000,
136         0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a,
137         0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27,
138         0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070,
139         0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe,
140         0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000,
141         0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f,
142         0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000,
143         0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007,
144         0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000,
145         0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000,
146         0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994,
147         0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f,
148         0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000,
149         0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d
150 }, rtl8192cu_bb_vals1_88ru[] = {
151         0x018610db, 0x0000001f, 0x00b91612, 0x24000090, 0x20f60000,
152         0x24000090
153 }, rtl8192cu_bb_vals1_92cu[] = {
154         0x0186115b, 0x0000001f, 0x00b99612, 0x40000100, 0x20f60000,
155         0x40000100
156 }, rtl8192cu_bb_vals1_88cu_92ce[] = {
157         0x018610db, 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000,
158         0x40000100
159 }, rtl8192cu_bb_vals2[] = {
160         0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f,
161         0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000,
162         0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000,
163         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427,
164         0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c,
165         0x00080740
166 }, rtl8192cu_bb_vals5_88cu[] = {
167         0x00000008, 0x001b25a4, 0x631b25a0, 0x631b25a0, 0x081b25a0,
168         0x081b25a0, 0x081b25a0, 0x081b25a0, 0x631b25a0, 0x081b25a0,
169         0x631b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, 0x001b25a0,
170         0x001b25a0, 0x6b1b25a0, 0x00000003, 0x00000000, 0x00000300
171 }, rtl8192cu_bb_vals5_88ru[] = {
172         0x00000010, 0x001b25a4, 0x631b25a0, 0x631b25a0, 0x081b25a0,
173         0x081b25a0, 0x081b25a0, 0x081b25a0, 0x631b25a0, 0x081b25a0,
174         0x631b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, 0x001b25a0,
175         0x001b25a0, 0x6b1b25a0, 0x31555448, 0x00000003, 0x00000000,
176         0x00000300
177 };
178
179 static const struct rtwn_bb_prog rtl8192cu_bb[] = {
180         /* RTL8188CE / RTL8188CU. */
181         {
182                 nitems(rtl8192cu_bb_regs0),
183                 rtl8192cu_bb_regs0,
184                 rtl8192cu_bb_vals0_88cu,
185                 { R92C_COND_RTL8188CU | R92C_COND_RTL8188CE },
186                 /* RTL8188RU. */
187                 &(const struct rtwn_bb_prog){
188                         nitems(rtl8192cu_bb_regs0_88ru),
189                         rtl8192cu_bb_regs0_88ru,
190                         rtl8192cu_bb_vals0_88ru,
191                         { R92C_COND_RTL8188RU },
192                         /* Others. */
193                         &(const struct rtwn_bb_prog){
194                                 nitems(rtl8192cu_bb_regs0),
195                                 rtl8192cu_bb_regs0,
196                                 rtl8192cu_bb_vals0_92ce_92cu,
197                                 { 0 },
198                                 NULL
199                         }
200                 }
201         },
202         /* RTL8188RU. */
203         {
204                 nitems(rtl8192cu_bb_regs1),
205                 rtl8192cu_bb_regs1,
206                 rtl8192cu_bb_vals1_88ru,
207                 { R92C_COND_RTL8188RU },
208                 /* RTL8192CU. */
209                 &(const struct rtwn_bb_prog){
210                         nitems(rtl8192cu_bb_regs1),
211                         rtl8192cu_bb_regs1,
212                         rtl8192cu_bb_vals1_92cu,
213                         { R92C_COND_RTL8192CU },
214                         /* Others. */
215                         &(const struct rtwn_bb_prog){
216                                 nitems(rtl8192cu_bb_regs1),
217                                 rtl8192cu_bb_regs1,
218                                 rtl8192cu_bb_vals1_88cu_92ce,
219                                 { 0 },
220                                 NULL
221                         }
222                 }
223         },
224         {
225                 nitems(rtl8192cu_bb_regs2),
226                 rtl8192cu_bb_regs2,
227                 rtl8192cu_bb_vals2,
228                 { 0 },
229                 NULL
230         },
231         /* RTL8192CE / RTL8192CU. */
232         {
233                 nitems(rtl8192c_bb_regs3),
234                 rtl8192c_bb_regs3,
235                 rtl8192c_bb_vals3_92ce_92cu,
236                 { R92C_COND_RTL8192C },
237                 /* Others. */
238                 &(const struct rtwn_bb_prog){
239                         nitems(rtl8192c_bb_regs3),
240                         rtl8192c_bb_regs3,
241                         rtl8192c_bb_vals3_88cu_88ru,
242                         { 0 },
243                         NULL
244                 }
245         },
246         {
247                 nitems(rtl8192c_bb_regs4),
248                 rtl8192c_bb_regs4,
249                 rtl8192c_bb_vals4,
250                 { 0 },
251                 NULL
252         },
253         /* RTL8188CE / RTL8188CU. */
254         {
255                 nitems(rtl8192c_bb_regs5),
256                 rtl8192c_bb_regs5,
257                 rtl8192cu_bb_vals5_88cu,
258                 { R92C_COND_RTL8188CU | R92C_COND_RTL8188CE },
259                 /* RTL8188RU. */
260                 &(const struct rtwn_bb_prog){
261                         nitems(rtl8192cu_bb_regs5_88ru),
262                         rtl8192cu_bb_regs5_88ru,
263                         rtl8192cu_bb_vals5_88ru,
264                         { R92C_COND_RTL8188RU },
265                         /* Others. */
266                         &(const struct rtwn_bb_prog){
267                                 nitems(rtl8192c_bb_regs5),
268                                 rtl8192c_bb_regs5,
269                                 rtl8192c_bb_vals5_92ce_92cu,
270                                 { 0 },
271                                 NULL
272                         }
273                 }
274         }
275 };
276
277
278 static const uint32_t rtl8188ru_agc_vals[] = {
279         0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001,
280         0x7b050001, 0x7b060001, 0x7b070001, 0x7b080001, 0x7a090001,
281         0x790a0001, 0x780b0001, 0x770c0001, 0x760d0001, 0x750e0001,
282         0x740f0001, 0x73100001, 0x72110001, 0x71120001, 0x70130001,
283         0x6f140001, 0x6e150001, 0x6d160001, 0x6c170001, 0x6b180001,
284         0x6a190001, 0x691a0001, 0x681b0001, 0x671c0001, 0x661d0001,
285         0x651e0001, 0x641f0001, 0x63200001, 0x62210001, 0x61220001,
286         0x60230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001,
287         0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001,
288         0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001,
289         0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001,
290         0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001,
291         0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001,
292         0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001,
293         0x7b460001, 0x7b470001, 0x7b480001, 0x7a490001, 0x794a0001,
294         0x784b0001, 0x774c0001, 0x764d0001, 0x754e0001, 0x744f0001,
295         0x73500001, 0x72510001, 0x71520001, 0x70530001, 0x6f540001,
296         0x6e550001, 0x6d560001, 0x6c570001, 0x6b580001, 0x6a590001,
297         0x695a0001, 0x685b0001, 0x675c0001, 0x665d0001, 0x655e0001,
298         0x645f0001, 0x63600001, 0x62610001, 0x61620001, 0x60630001,
299         0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001,
300         0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001,
301         0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001,
302         0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001,
303         0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001,
304         0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e,
305         0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e,
306         0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e,
307         0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e,
308         0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e,
309         0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e,
310         0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e
311 };
312
313 static const struct rtwn_agc_prog rtl8188ru_agc[] = {
314         {
315                 nitems(rtl8188ru_agc_vals),
316                 rtl8188ru_agc_vals,
317                 { 0 },
318                 NULL
319         }
320 };
321
322 #endif  /* R92CU_PRIV_H */