1 | /* $NetBSD: if_urtwn_data.h,v 1.4 2016/10/12 03:23:29 nat Exp $ */ |
2 | /* $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $ */ |
3 | |
4 | /*- |
5 | * Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr> |
6 | * Copyright (c) 2016 Nathanial Sloss <nathanialsloss@yahoo.com.au> |
7 | * |
8 | * Permission to use, copy, modify, and distribute this software for any |
9 | * purpose with or without fee is hereby granted, provided that the above |
10 | * copyright notice and this permission notice appear in all copies. |
11 | * |
12 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
13 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
14 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
15 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
16 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
17 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
18 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
19 | */ |
20 | |
21 | /* |
22 | * MAC initialization values. |
23 | */ |
24 | static const struct { |
25 | uint16_t reg; |
26 | uint8_t val; |
27 | } rtl8192eu_mac[]={ |
28 | { 0x011, 0xeb }, { 0x012, 0x07 }, { 0x014, 0x75 }, { 0x303, 0xa7 }, |
29 | { 0x428, 0x0a }, { 0x429, 0x10 }, { 0x430, 0x00 }, { 0x431, 0x00 }, |
30 | { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 }, |
31 | { 0x436, 0x07 }, { 0x437, 0x08 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, |
32 | { 0x43e, 0x07 }, { 0x43f, 0x08 }, { 0x440, 0x5d }, { 0x441, 0x01 }, |
33 | { 0x442, 0x00 }, { 0x444, 0x10 }, { 0x445, 0x00 }, { 0x446, 0x00 }, |
34 | { 0x447, 0x00 }, { 0x448, 0x00 }, { 0x449, 0xf0 }, { 0x44a, 0x0f }, |
35 | { 0x44b, 0x3e }, { 0x44c, 0x10 }, { 0x44d, 0x00 }, { 0x44e, 0x00 }, |
36 | { 0x44f, 0x00 }, { 0x450, 0x00 }, { 0x451, 0xf0 }, { 0x452, 0x0f }, |
37 | { 0x453, 0x00 }, { 0x456, 0x5e }, { 0x460, 0x66 }, { 0x461, 0x66 }, |
38 | { 0x4c8, 0xff }, { 0x4c9, 0x08 }, { 0x4cc, 0xff }, { 0x4cd, 0xff }, |
39 | { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, { 0x502, 0x2f }, |
40 | { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, { 0x506, 0x5e }, |
41 | { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, { 0x50a, 0x5e }, |
42 | { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, { 0x50e, 0x00 }, |
43 | { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, { 0x516, 0x0a }, |
44 | { 0x525, 0x4f }, { 0x540, 0x12 }, { 0x541, 0x64 }, { 0x550, 0x10 }, |
45 | { 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55c, 0x50 }, { 0x55d, 0xff }, |
46 | { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a }, { 0x620, 0xff }, |
47 | { 0x621, 0xff }, { 0x622, 0xff }, { 0x623, 0xff }, { 0x624, 0xff }, |
48 | { 0x625, 0xff }, { 0x626, 0xff }, { 0x627, 0xff }, { 0x638, 0x50 }, |
49 | { 0x63c, 0x0a }, { 0x63d, 0x0a }, { 0x63e, 0x0e }, { 0x63f, 0x0e }, |
50 | { 0x640, 0x40 }, { 0x642, 0x40 }, { 0x643, 0x00 }, { 0x652, 0xc8 }, |
51 | { 0x66e, 0x05 }, { 0x700, 0x21 }, { 0x701, 0x43 }, { 0x702, 0x65 }, |
52 | { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, { 0x70a, 0x65 }, |
53 | { 0x70b, 0x87 }, |
54 | }, rtl8188eu_mac[] = { |
55 | { 0x026, 0x41 }, { 0x027, 0x35 }, { 0x040, 0x00 }, { 0x428, 0x0a }, |
56 | { 0x429, 0x10 }, { 0x430, 0x00 }, { 0x431, 0x01 }, { 0x432, 0x02 }, |
57 | { 0x433, 0x04 }, { 0x434, 0x05 }, { 0x435, 0x06 }, { 0x436, 0x07 }, |
58 | { 0x437, 0x08 }, { 0x438, 0x00 }, { 0x439, 0x00 }, { 0x43a, 0x01 }, |
59 | { 0x43b, 0x02 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, { 0x43e, 0x06 }, |
60 | { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 }, { 0x442, 0x00 }, |
61 | { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f }, { 0x447, 0x00 }, |
62 | { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 }, { 0x45b, 0xb9 }, |
63 | { 0x460, 0x66 }, { 0x461, 0x66 }, { 0x480, 0x08 }, { 0x4c8, 0xff }, |
64 | { 0x4c9, 0x08 }, { 0x4cc, 0xff }, { 0x4cd, 0xff }, { 0x4ce, 0x01 }, |
65 | { 0x4d3, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, { 0x502, 0x2f }, |
66 | { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, { 0x506, 0x5e }, |
67 | { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, { 0x50a, 0x5e }, |
68 | { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, { 0x50e, 0x00 }, |
69 | { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, { 0x516, 0x0a }, |
70 | { 0x525, 0x4f }, { 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, |
71 | { 0x55d, 0xff }, { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a }, |
72 | { 0x620, 0xff }, { 0x621, 0xff }, { 0x622, 0xff }, { 0x623, 0xff }, |
73 | { 0x624, 0xff }, { 0x625, 0xff }, { 0x626, 0xff }, { 0x627, 0xff }, |
74 | { 0x652, 0x20 }, { 0x63c, 0x0a }, { 0x63d, 0x0a }, { 0x63e, 0x0e }, |
75 | { 0x63f, 0x0e }, { 0x640, 0x40 }, { 0x66e, 0x05 }, { 0x700, 0x21 }, |
76 | { 0x701, 0x43 }, { 0x702, 0x65 }, { 0x703, 0x87 }, { 0x708, 0x21 }, |
77 | { 0x709, 0x43 }, { 0x70a, 0x65 }, { 0x70b, 0x87 } |
78 | }, rtl8192cu_mac[] = { |
79 | { 0x420, 0x80 }, { 0x423, 0x00 }, { 0x430, 0x00 }, { 0x431, 0x00 }, |
80 | { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 }, |
81 | { 0x436, 0x06 }, { 0x437, 0x07 }, { 0x438, 0x00 }, { 0x439, 0x00 }, |
82 | { 0x43a, 0x00 }, { 0x43b, 0x01 }, { 0x43c, 0x04 }, { 0x43d, 0x05 }, |
83 | { 0x43e, 0x06 }, { 0x43f, 0x07 }, { 0x440, 0x5d }, { 0x441, 0x01 }, |
84 | { 0x442, 0x00 }, { 0x444, 0x15 }, { 0x445, 0xf0 }, { 0x446, 0x0f }, |
85 | { 0x447, 0x00 }, { 0x458, 0x41 }, { 0x459, 0xa8 }, { 0x45a, 0x72 }, |
86 | { 0x45b, 0xb9 }, { 0x460, 0x66 }, { 0x461, 0x66 }, { 0x462, 0x08 }, |
87 | { 0x463, 0x03 }, { 0x4c8, 0xff }, { 0x4c9, 0x08 }, { 0x4cc, 0xff }, |
88 | { 0x4cd, 0xff }, { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, |
89 | { 0x502, 0x2f }, { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, |
90 | { 0x506, 0x5e }, { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, |
91 | { 0x50a, 0x5e }, { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, |
92 | { 0x50e, 0x00 }, { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, |
93 | { 0x515, 0x10 }, { 0x516, 0x0a }, { 0x517, 0x10 }, { 0x51a, 0x16 }, |
94 | { 0x524, 0x0f }, { 0x525, 0x4f }, { 0x546, 0x40 }, { 0x547, 0x00 }, |
95 | { 0x550, 0x10 }, { 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55a, 0x02 }, |
96 | { 0x55d, 0xff }, { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a }, |
97 | { 0x652, 0x20 }, { 0x63c, 0x0a }, { 0x63d, 0x0e }, { 0x63e, 0x0a }, |
98 | { 0x63f, 0x0e }, { 0x66e, 0x05 }, { 0x700, 0x21 }, { 0x701, 0x43 }, |
99 | { 0x702, 0x65 }, { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, |
100 | { 0x70a, 0x65 }, { 0x70b, 0x87 } |
101 | }; |
102 | |
103 | /* |
104 | * Baseband initialization values. |
105 | */ |
106 | struct urtwn_bb_prog { |
107 | size_t count; |
108 | const uint16_t *regs; |
109 | const uint32_t *vals; |
110 | size_t agccount; |
111 | const uint32_t *agcvals; |
112 | }; |
113 | |
114 | /* |
115 | * RTL8192CU and RTL8192CE-VAU. |
116 | */ |
117 | static const uint16_t rtl8192ce_bb_regs[] = { |
118 | 0x024, 0x028, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, |
119 | 0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, |
120 | 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, |
121 | 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884, |
122 | 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, 0x908, |
123 | 0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, |
124 | 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04, 0xc08, |
125 | 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, |
126 | 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, |
127 | 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, |
128 | 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 0xc98, |
129 | 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 0xcbc, |
130 | 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, 0xce0, |
131 | 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, 0xd10, 0xd14, |
132 | 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, 0xd48, |
133 | 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, 0xd6c, |
134 | 0xd70, 0xd74, 0xd78, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14, 0xe18, |
135 | 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, |
136 | 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, 0xe70, |
137 | 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, 0xed4, |
138 | 0xed8, 0xedc, 0xee0, 0xeec, 0xf14, 0xf4c, 0xf00 |
139 | }; |
140 | |
141 | static const uint32_t rtl8192ce_bb_vals[] = { |
142 | 0x0011800d, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00, |
143 | 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, |
144 | 0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727, |
145 | 0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000, |
146 | 0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a, |
147 | 0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27, |
148 | 0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070, |
149 | 0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe, |
150 | 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, |
151 | 0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, |
152 | 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, |
153 | 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, |
154 | 0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000, |
155 | 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, |
156 | 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, |
157 | 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, |
158 | 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, |
159 | 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, |
160 | 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, |
161 | 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, |
162 | 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, |
163 | 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, |
164 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, |
165 | 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, |
166 | 0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333, |
167 | 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, |
168 | 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, |
169 | 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, |
170 | 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, |
171 | 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, |
172 | 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, |
173 | 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, |
174 | 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, |
175 | 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x63db25a4, |
176 | 0x63db25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, |
177 | 0x63db25a4, 0x0c1b25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4, |
178 | 0x63db25a4, 0x001b25a4, 0x001b25a4, 0x6fdb25a4, 0x00000003, |
179 | 0x00000000, 0x00000300 |
180 | }; |
181 | |
182 | static const uint32_t rtl8192ce_agc_vals[] = { |
183 | 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, |
184 | 0x7b050001, 0x7a060001, 0x79070001, 0x78080001, 0x77090001, |
185 | 0x760a0001, 0x750b0001, 0x740c0001, 0x730d0001, 0x720e0001, |
186 | 0x710f0001, 0x70100001, 0x6f110001, 0x6e120001, 0x6d130001, |
187 | 0x6c140001, 0x6b150001, 0x6a160001, 0x69170001, 0x68180001, |
188 | 0x67190001, 0x661a0001, 0x651b0001, 0x641c0001, 0x631d0001, |
189 | 0x621e0001, 0x611f0001, 0x60200001, 0x49210001, 0x48220001, |
190 | 0x47230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, |
191 | 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, |
192 | 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, |
193 | 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, |
194 | 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, |
195 | 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, |
196 | 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, |
197 | 0x7a460001, 0x79470001, 0x78480001, 0x77490001, 0x764a0001, |
198 | 0x754b0001, 0x744c0001, 0x734d0001, 0x724e0001, 0x714f0001, |
199 | 0x70500001, 0x6f510001, 0x6e520001, 0x6d530001, 0x6c540001, |
200 | 0x6b550001, 0x6a560001, 0x69570001, 0x68580001, 0x67590001, |
201 | 0x665a0001, 0x655b0001, 0x645c0001, 0x635d0001, 0x625e0001, |
202 | 0x615f0001, 0x60600001, 0x49610001, 0x48620001, 0x47630001, |
203 | 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, |
204 | 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, |
205 | 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, |
206 | 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, |
207 | 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, |
208 | 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, |
209 | 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, |
210 | 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, |
211 | 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, |
212 | 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, |
213 | 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, |
214 | 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e |
215 | }; |
216 | |
217 | static const struct urtwn_bb_prog rtl8192ce_bb_prog = { |
218 | __arraycount(rtl8192ce_bb_regs), |
219 | rtl8192ce_bb_regs, |
220 | rtl8192ce_bb_vals, |
221 | __arraycount(rtl8192ce_agc_vals), |
222 | rtl8192ce_agc_vals |
223 | }; |
224 | |
225 | /* |
226 | * RTL8188CU. |
227 | */ |
228 | static const uint32_t rtl8192cu_bb_vals[] = { |
229 | 0x0011800d, 0x00ffdb83, 0x80040002, 0x00000003, 0x0000fc00, |
230 | 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, |
231 | 0x01000100, 0x00390004, 0x01000100, 0x00390004, 0x27272727, |
232 | 0x27272727, 0x27272727, 0x27272727, 0x00010000, 0x00010000, |
233 | 0x27272727, 0x27272727, 0x00000000, 0x00000000, 0x569a569a, |
234 | 0x0c1b25a4, 0x66e60230, 0x061f0130, 0x27272727, 0x2b2b2b27, |
235 | 0x07000700, 0x22184000, 0x08080808, 0x00000000, 0xc0083070, |
236 | 0x000004d5, 0x00000000, 0xcc0000c0, 0x00000800, 0xfffffffe, |
237 | 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, |
238 | 0x81121313, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, |
239 | 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, |
240 | 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, |
241 | 0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000, |
242 | 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, |
243 | 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, |
244 | 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, |
245 | 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, |
246 | 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x0186115b, |
247 | 0x0000001f, 0x00b99612, 0x40000100, 0x20f60000, 0x40000100, |
248 | 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, |
249 | 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, |
250 | 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, |
251 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, |
252 | 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, |
253 | 0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333, |
254 | 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, |
255 | 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, |
256 | 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, |
257 | 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, |
258 | 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, |
259 | 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, |
260 | 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, |
261 | 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, |
262 | 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, 0x63db25a4, |
263 | 0x63db25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, |
264 | 0x63db25a4, 0x0c1b25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4, |
265 | 0x63db25a4, 0x001b25a4, 0x001b25a4, 0x6fdb25a4, 0x00000003, |
266 | 0x00000000, 0x00000300 |
267 | }; |
268 | |
269 | static const struct urtwn_bb_prog rtl8192cu_bb_prog = { |
270 | __arraycount(rtl8192ce_bb_regs), |
271 | rtl8192ce_bb_regs, |
272 | rtl8192cu_bb_vals, |
273 | __arraycount(rtl8192ce_agc_vals), |
274 | rtl8192ce_agc_vals |
275 | }; |
276 | |
277 | /* |
278 | * RTL8188CE-VAU. |
279 | */ |
280 | static const uint32_t rtl8188ce_bb_vals[] = { |
281 | 0x0011800d, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00, |
282 | 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, |
283 | 0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000, |
284 | 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, |
285 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a, |
286 | 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200, |
287 | 0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070, |
288 | 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe, |
289 | 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, |
290 | 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, |
291 | 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, |
292 | 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, |
293 | 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, |
294 | 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, |
295 | 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, |
296 | 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, |
297 | 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, |
298 | 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, |
299 | 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, |
300 | 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, |
301 | 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, |
302 | 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, |
303 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, |
304 | 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, |
305 | 0x00080740, 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, |
306 | 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, |
307 | 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, |
308 | 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, |
309 | 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, |
310 | 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, |
311 | 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, |
312 | 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, |
313 | 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, |
314 | 0x02140102, 0x28160d05, 0x00000008, 0x001b25a4, 0x631b25a0, |
315 | 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, |
316 | 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, |
317 | 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003, |
318 | 0x00000000, 0x00000300 |
319 | }; |
320 | |
321 | static const uint32_t rtl8188ce_agc_vals[] = { |
322 | 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, |
323 | 0x7b050001, 0x7a060001, 0x79070001, 0x78080001, 0x77090001, |
324 | 0x760a0001, 0x750b0001, 0x740c0001, 0x730d0001, 0x720e0001, |
325 | 0x710f0001, 0x70100001, 0x6f110001, 0x6e120001, 0x6d130001, |
326 | 0x6c140001, 0x6b150001, 0x6a160001, 0x69170001, 0x68180001, |
327 | 0x67190001, 0x661a0001, 0x651b0001, 0x641c0001, 0x631d0001, |
328 | 0x621e0001, 0x611f0001, 0x60200001, 0x49210001, 0x48220001, |
329 | 0x47230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, |
330 | 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, |
331 | 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, |
332 | 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, |
333 | 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, |
334 | 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, |
335 | 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, |
336 | 0x7a460001, 0x79470001, 0x78480001, 0x77490001, 0x764a0001, |
337 | 0x754b0001, 0x744c0001, 0x734d0001, 0x724e0001, 0x714f0001, |
338 | 0x70500001, 0x6f510001, 0x6e520001, 0x6d530001, 0x6c540001, |
339 | 0x6b550001, 0x6a560001, 0x69570001, 0x68580001, 0x67590001, |
340 | 0x665a0001, 0x655b0001, 0x645c0001, 0x635d0001, 0x625e0001, |
341 | 0x615f0001, 0x60600001, 0x49610001, 0x48620001, 0x47630001, |
342 | 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, |
343 | 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, |
344 | 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, |
345 | 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, |
346 | 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, |
347 | 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, |
348 | 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, |
349 | 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, |
350 | 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, |
351 | 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, |
352 | 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, |
353 | 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e |
354 | }; |
355 | |
356 | static const struct urtwn_bb_prog rtl8188ce_bb_prog = { |
357 | __arraycount(rtl8192ce_bb_regs), |
358 | rtl8192ce_bb_regs, |
359 | rtl8188ce_bb_vals, |
360 | __arraycount(rtl8188ce_agc_vals), |
361 | rtl8188ce_agc_vals |
362 | }; |
363 | |
364 | static const uint32_t rtl8188cu_bb_vals[] = { |
365 | 0x0011800d, 0x00ffdb83, 0x80040000, 0x00000001, 0x0000fc00, |
366 | 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, 0x00000000, |
367 | 0x01000100, 0x00390004, 0x00000000, 0x00000000, 0x00000000, |
368 | 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, |
369 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x569a569a, |
370 | 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, 0x32323200, |
371 | 0x07000700, 0x22004000, 0x00000808, 0x00000000, 0xc0083070, |
372 | 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, 0xfffffffe, |
373 | 0x40302010, 0x00706050, 0x00000000, 0x00000023, 0x00000000, |
374 | 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e68120f, |
375 | 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, 0x1a1b0000, |
376 | 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, |
377 | 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, |
378 | 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, |
379 | 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, 0x49795994, |
380 | 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, |
381 | 0x6954341e, 0x43bc0094, 0x6954341e, 0x433c0094, 0x00000000, |
382 | 0x5116848b, 0x47c00bff, 0x00000036, 0x2c7f000d, 0x018610db, |
383 | 0x0000001f, 0x00b91612, 0x40000100, 0x20f60000, 0x40000100, |
384 | 0x20200000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, |
385 | 0x00000000, 0x00000080, 0x00000000, 0x00000000, 0x00000000, |
386 | 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, |
387 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, |
388 | 0x00766932, 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, |
389 | 0x00080740, 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, |
390 | 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, 0x80608000, |
391 | 0x00000000, 0x00027293, 0x00000000, 0x00000000, 0x00000000, |
392 | 0x00000000, 0x6437140a, 0x00000000, 0x00000000, 0x30032064, |
393 | 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, |
394 | 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, |
395 | 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, |
396 | 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, |
397 | 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, |
398 | 0x02140102, 0x28160d05, 0x00000008, 0x001b25a4, 0x631b25a0, |
399 | 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, |
400 | 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, 0x631b25a0, |
401 | 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, 0x00000003, |
402 | 0x00000000, 0x00000300 |
403 | }; |
404 | |
405 | static const struct urtwn_bb_prog rtl8188cu_bb_prog = { |
406 | __arraycount(rtl8192ce_bb_regs), |
407 | rtl8192ce_bb_regs, |
408 | rtl8188cu_bb_vals, |
409 | __arraycount(rtl8188ce_agc_vals), |
410 | rtl8188ce_agc_vals |
411 | }; |
412 | |
413 | /* |
414 | * RTL8188EU. |
415 | */ |
416 | static const uint16_t rtl8188eu_bb_regs[] = { |
417 | 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x81c, |
418 | 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, |
419 | 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, |
420 | 0x860, 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, |
421 | 0x880, 0x884, 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, |
422 | 0x900, 0x904, 0x908, 0x90c, 0x910, 0x914, 0xa00, 0xa04, |
423 | 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, 0xa1c, 0xa20, 0xa24, |
424 | 0xa28, 0xa2c, 0xa70, 0xa74, 0xa78, 0xa7c, 0xa80, 0xb2c, |
425 | 0xc00, 0xc04, 0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, |
426 | 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, |
427 | 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 0xc54, 0xc58, 0xc5c, |
428 | 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, 0xc78, 0xc7c, |
429 | 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 0xc98, 0xc9c, |
430 | 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 0xcbc, |
431 | 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, |
432 | 0xce0, 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, |
433 | 0xd10, 0xd14, 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, |
434 | 0xd40, 0xd44, 0xd48, 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, |
435 | 0xd60, 0xd64, 0xd68, 0xd6c, 0xd70, 0xd74, 0xd78, 0xe00, |
436 | 0xe04, 0xe08, 0xe10, 0xe14, 0xe18, 0xe1c, 0xe28, 0xe30, |
437 | 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, 0xe4c, 0xe50, |
438 | 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, 0xe70, 0xe74, |
439 | 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, 0xed4, |
440 | 0xed8, 0xedc, 0xee0, 0xee8, 0xeec, 0xf14, 0xf4c, 0xf00 |
441 | }; |
442 | |
443 | static const uint32_t rtl8188eu_bb_vals[] = { |
444 | 0x80040000, 0x00000003, 0x0000fc00, 0x0000000a, 0x10001331, |
445 | 0x020c3d10, 0x02200385, 0x00000000, 0x01000100, 0x00390204, |
446 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, |
447 | 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, |
448 | 0x00000000, 0x00000000, 0x569a11a9, 0x01000014, 0x66f60110, |
449 | 0x061f0649, 0x00000000, 0x27272700, 0x07000760, 0x25004000, |
450 | 0x00000808, 0x00000000, 0xb0000c1c, 0x00000001, 0x00000000, |
451 | 0xccc000c0, 0x00000800, 0xfffffffe, 0x40302010, 0x00706050, |
452 | 0x00000000, 0x00000023, 0x00000000, 0x81121111, 0x00000002, |
453 | 0x00000201, 0x00d047c8, 0x80ff000c, 0x8c838300, 0x2e7f120f, |
454 | 0x9500bb78, 0x1114d028, 0x00881117, 0x89140f00, 0x1a1b0000, |
455 | 0x090e1317, 0x00000204, 0x00d30000, 0x101fbf00, 0x00000007, |
456 | 0x00000900, 0x225b0606, 0x218075b1, 0x80000000, 0x48071d40, |
457 | 0x03a05611, 0x000000e4, 0x6c6c6c6c, 0x08800000, 0x40000100, |
458 | 0x08800000, 0x40000100, 0x00000000, 0x00000000, 0x00000000, |
459 | 0x00000000, 0x69e9ac47, 0x469652af, 0x49795994, 0x0a97971c, |
460 | 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, 0x69553420, |
461 | 0x43bc0094, 0x00013169, 0x00250492, 0x00000000, 0x7112848b, |
462 | 0x47c00bff, 0x00000036, 0x2c7f000d, 0x020610db, 0x0000001f, |
463 | 0x00b91612, 0x390000e4, 0x20f60000, 0x40000100, 0x20200000, |
464 | 0x00091521, 0x00000000, 0x00121820, 0x00007f7f, 0x00000000, |
465 | 0x000300a0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, |
466 | 0x00000000, 0x28000000, 0x00000000, 0x00000000, 0x00000000, |
467 | 0x00000000, 0x00000000, 0x00000000, 0x64b22427, 0x00766932, |
468 | 0x00222222, 0x00000000, 0x37644302, 0x2f97d40c, 0x00000740, |
469 | 0x00020401, 0x0000907f, 0x20010201, 0xa0633333, 0x3333bc43, |
470 | 0x7a8f5b6f, 0xcc979975, 0x00000000, 0x80608000, 0x00000000, |
471 | 0x00127353, 0x00000000, 0x00000000, 0x00000000, 0x00000000, |
472 | 0x6437140a, 0x00000000, 0x00000282, 0x30032064, 0x4653de68, |
473 | 0x04518a3c, 0x00002101, 0x2a201c16, 0x1812362e, 0x322c2220, |
474 | 0x000e3c24, 0x2d2d2d2d, 0x2d2d2d2d, 0x0390272d, 0x2d2d2d2d, |
475 | 0x2d2d2d2d, 0x2d2d2d2d, 0x2d2d2d2d, 0x00000000, 0x1000dc1f, |
476 | 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 0x01004800, |
477 | 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102, |
478 | 0x28160d05, 0x00000008, 0x001b25a4, 0x00c00014, 0x00c00014, |
479 | 0x01000014, 0x01000014, 0x01000014, 0x01000014, 0x00c00014, |
480 | 0x01000014, 0x00c00014, 0x00c00014, 0x00c00014, 0x00c00014, |
481 | 0x00000014, 0x00000014, 0x21555448, 0x01c00014, 0x00000003, |
482 | 0x00000000, 0x00000300 |
483 | }; |
484 | |
485 | static const uint32_t rtl8188eu_agc_vals[] = { |
486 | 0xfb000001, 0xfb010001, 0xfb020001, 0xfb030001, 0xfb040001, |
487 | 0xfb050001, 0xfa060001, 0xf9070001, 0xf8080001, 0xf7090001, |
488 | 0xf60a0001, 0xf50b0001, 0xf40c0001, 0xf30d0001, 0xf20e0001, |
489 | 0xf10f0001, 0xf0100001, 0xef110001, 0xee120001, 0xed130001, |
490 | 0xec140001, 0xeb150001, 0xea160001, 0xe9170001, 0xe8180001, |
491 | 0xe7190001, 0xe61a0001, 0xe51b0001, 0xe41c0001, 0xe31d0001, |
492 | 0xe21e0001, 0xe11f0001, 0x8a200001, 0x89210001, 0x88220001, |
493 | 0x87230001, 0x86240001, 0x85250001, 0x84260001, 0x83270001, |
494 | 0x82280001, 0x6b290001, 0x6a2a0001, 0x692b0001, 0x682c0001, |
495 | 0x672d0001, 0x662e0001, 0x652f0001, 0x64300001, 0x63310001, |
496 | 0x62320001, 0x61330001, 0x46340001, 0x45350001, 0x44360001, |
497 | 0x43370001, 0x42380001, 0x41390001, 0x403a0001, 0x403b0001, |
498 | 0x403c0001, 0x403d0001, 0x403e0001, 0x403f0001, 0xfb400001, |
499 | 0xfb410001, 0xfb420001, 0xfb430001, 0xfb440001, 0xfb450001, |
500 | 0xfb460001, 0xfb470001, 0xfb480001, 0xfa490001, 0xf94a0001, |
501 | 0xf84B0001, 0xf74c0001, 0xf64d0001, 0xf54e0001, 0xf44f0001, |
502 | 0xf3500001, 0xf2510001, 0xf1520001, 0xf0530001, 0xef540001, |
503 | 0xee550001, 0xed560001, 0xec570001, 0xeb580001, 0xea590001, |
504 | 0xe95a0001, 0xe85b0001, 0xe75c0001, 0xe65d0001, 0xe55e0001, |
505 | 0xe45f0001, 0xe3600001, 0xe2610001, 0xc3620001, 0xc2630001, |
506 | 0xc1640001, 0x8b650001, 0x8a660001, 0x89670001, 0x88680001, |
507 | 0x87690001, 0x866a0001, 0x856b0001, 0x846c0001, 0x676d0001, |
508 | 0x666e0001, 0x656f0001, 0x64700001, 0x63710001, 0x62720001, |
509 | 0x61730001, 0x60740001, 0x46750001, 0x45760001, 0x44770001, |
510 | 0x43780001, 0x42790001, 0x417a0001, 0x407b0001, 0x407c0001, |
511 | 0x407d0001, 0x407e0001, 0x407f0001 |
512 | }; |
513 | |
514 | static const struct urtwn_bb_prog rtl8188eu_bb_prog = { |
515 | __arraycount(rtl8188eu_bb_regs), |
516 | rtl8188eu_bb_regs, |
517 | rtl8188eu_bb_vals, |
518 | __arraycount(rtl8188eu_agc_vals), |
519 | rtl8188eu_agc_vals |
520 | }; |
521 | |
522 | /* |
523 | * RTL819E. |
524 | */ |
525 | static const uint16_t rtl8192eu_bb_regs[] = { |
526 | 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x81c, |
527 | 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, |
528 | 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, |
529 | 0x860, 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, |
530 | 0x880, 0x884, 0x888, 0x88c, 0x890, 0x894, 0x898, 0x900, |
531 | 0x904, 0x908, 0x90c, 0x910, 0x914, 0x918, 0x91c, 0x924, |
532 | 0x928, 0x92c, 0x930, 0x934, 0x938, 0x93c, 0x940, 0x944, |
533 | 0x94c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, |
534 | 0xa1c, 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xa78, |
535 | 0xa7c, 0xa80, 0xb38, 0xc00, 0xc04, 0xc08, 0xc0c, 0xc10, |
536 | 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, |
537 | 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, |
538 | 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, |
539 | 0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, |
540 | 0xc94, 0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, |
541 | 0xcb4, 0xcb8, 0xcbc, 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, |
542 | 0xcd4, 0xcd8, 0xcdc, 0xce0, 0xce4, 0xce8, 0xcec, 0xd00, |
543 | 0xd04, 0xd08, 0xd0c, 0xd10, 0xd14, 0xd18, 0xd1c, 0xd2c, |
544 | 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, 0xd48, 0xd4c, |
545 | 0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, 0xd6c, |
546 | 0xd70, 0xd74, 0xd78, 0xd80, 0xd84, 0xd88, 0xe00, 0xe04, |
547 | 0xe08, 0xe10, 0xe14, 0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, |
548 | 0xe38, 0xe3c, 0xe40, 0xe44, 0xe48, 0xe4c, 0xe50, 0xe54, |
549 | 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, 0xe70, 0xe74, 0xe78, |
550 | 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, 0xed4, 0xed8, |
551 | 0xedc, 0xee0, 0xeec, 0xee4, 0xee8, 0xf14, 0xf4c, 0xf00, |
552 | }; |
553 | |
554 | static const uint32_t rtl8192eu_bb_vals[] = { |
555 | 0x80040000, 0x00000003, 0x0000fc00, 0x0000000a, 0x10001331, |
556 | 0x020c3d10, 0x02220385, 0x00000000, 0x01000100, 0x00390204, |
557 | 0x01000100, 0x00390204, 0x32323232, 0x30303030, 0x30303030, |
558 | 0x30303030, 0x00010000, 0x00010000, 0x28282828, 0x28282828, |
559 | 0x00000000, 0x00000000, 0x009a009a, 0x01000014, 0x66f60000, |
560 | 0x061f0000, 0x30303030, 0x30303030, 0x00000000, 0x55004200, |
561 | 0x08080808, 0x00000000, 0xb0000c1c, 0x00000001, 0x00000000, |
562 | 0xcc0000c0, 0x00000800, 0xfffffffe, 0x40302010, 0x00000000, |
563 | 0x00000023, 0x00000000, 0x81121313, 0x806c0001, 0x00000001, |
564 | 0x00000000, 0x00010000, 0x00000001, 0x00000000, 0x00000000, |
565 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, |
566 | 0x00000000, 0x00000008, 0x00d0c7c8, 0x81ff000c, 0x8c838300, |
567 | 0x2e68120f, 0x95009b78, 0x1114d028, 0x00881117, 0x89140f00, |
568 | 0x1a1b0000, 0x090e1317, 0x00000204, 0x00d30000, 0x101fff00, |
569 | 0x00000007, 0x00000900, 0x225b0606, 0x218075b1, 0x00000000, |
570 | 0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000, |
571 | 0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000, |
572 | 0x00000000, 0x00000000, 0x69e9ac47, 0x469652af, 0x49795994, |
573 | 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f, |
574 | 0x00340020, 0x0080801f, 0x00000020, 0x00248492, 0x00000000, |
575 | 0x7112848b, 0x47c00bff, 0x00000036, 0x00000600, 0x02013169, |
576 | 0x0000001f, 0x00b91612, 0x40000100, 0x21f60000, 0x40000100, |
577 | 0xa0e40000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f, |
578 | 0x00000000, 0x000300a0, 0x00000000, 0x00000000, 0x00000000, |
579 | 0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000, |
580 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427, |
581 | 0x00766932, 0x00222222, 0x00040000, 0x77644302, 0x2f97d40c, |
582 | 0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333, |
583 | 0x3333bc43, 0x7a8f5b6b, 0x0000007f, 0xcc979975, 0x00000000, |
584 | 0x80608000, 0x00000000, 0x00127353, 0x00000000, 0x00000000, |
585 | 0x00000000, 0x00000000, 0x6437140a, 0x00000000, 0x00000282, |
586 | 0x30032064, 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, |
587 | 0x1812362e, 0x322c2220, 0x000e3c24, 0x01081008, 0x00000800, |
588 | 0xf0b50000, 0x30303030, 0x30303030, 0x03903030, 0x30303030, |
589 | 0x30303030, 0x30303030, 0x30303030, 0x00000000, 0x1000dc1f, |
590 | 0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 0x01004800, |
591 | 0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102, |
592 | 0x28160d05, 0x00000008, 0x0fc05656, 0x03c09696, 0x03c09696, |
593 | 0x0c005656, 0x0c005656, 0x0c005656, 0x0c005656, 0x03c09696, |
594 | 0x0c005656, 0x03c09696, 0x03c09696, 0x03c09696, 0x03c09696, |
595 | 0x0000d6d6, 0x0000d6d6, 0x0fc01616, 0xb0000c1c, 0x00000001, |
596 | 0x00000003, 0x00000000, 0x00000300, |
597 | }; |
598 | |
599 | static const uint32_t rtl8192eu_agc_vals[] = { |
600 | 0xfb000001, 0xfb010001, 0xfb020001, 0xfb030001, 0xfb040001, |
601 | 0xfb050001, 0xfa060001, 0xf9070001, 0xf8080001, 0xf7090001, |
602 | 0xf60a0001, 0xf50b0001, 0xf40c0001, 0xf30d0001, 0xf20e0001, |
603 | 0xf10f0001, 0xf0100001, 0xef110001, 0xee120001, 0xed130001, |
604 | 0xec140001, 0xeb150001, 0xea160001, 0xe9170001, 0xe8180001, |
605 | 0xe7190001, 0xc81a0001, 0xc71b0001, 0xc61c0001, 0x071d0001, |
606 | 0x061e0001, 0x051f0001, 0x04200001, 0x03210001, 0xaa220001, |
607 | 0xa9230001, 0xa8240001, 0xa7250001, 0xa6260001, 0x85270001, |
608 | 0x84280001, 0x83290001, 0x252a0001, 0x242b0001, 0x232c0001, |
609 | 0x222d0001, 0x672e0001, 0x662f0001, 0x65300001, 0x64310001, |
610 | 0x63320001, 0x62330001, 0x61340001, 0x45350001, 0x44360001, |
611 | 0x43370001, 0x42380001, 0x41390001, 0x403a0001, 0x403b0001, |
612 | 0x403c0001, 0x403d0001, 0x403e0001, 0x403f0001, 0xfb400001, |
613 | 0xfb410001, 0xfb420001, 0xfb430001, 0xfb440001, 0xfb450001, |
614 | 0xfa460001, 0xf9470001, 0xf8480001, 0xf7490001, 0xf64a0001, |
615 | 0xf54b0001, 0xf44c0001, 0xf34d0001, 0xf24e0001, 0xf14f0001, |
616 | 0xf0500001, 0xef510001, 0xee520001, 0xed530001, 0xec540001, |
617 | 0xeb550001, 0xea560001, 0xe9570001, 0xe8580001, 0xe7590001, |
618 | 0xe65a0001, 0xe55b0001, 0xe45c0001, 0xe35d0001, 0xe25e0001, |
619 | 0xe15f0001, 0x8a600001, 0x89610001, 0x88620001, 0x87630001, |
620 | 0x86640001, 0x85650001, 0x84660001, 0x83670001, 0x82680001, |
621 | 0x6b690001, 0x6a6a0001, 0x696b0001, 0x686c0001, 0x676d0001, |
622 | 0x666e0001, 0x656f0001, 0x64700001, 0x63710001, 0x62720001, |
623 | 0x61730001, 0x49740001, 0x48750001, 0x47760001, 0x46770001, |
624 | 0x45780001, 0x44790001, 0x437a0001, 0x427b0001, 0x417c0001, |
625 | 0x407d0001, 0x407e0001, 0x407f0001, |
626 | }; |
627 | |
628 | static const struct urtwn_bb_prog rtl8192eu_bb_prog = { |
629 | __arraycount(rtl8192eu_bb_regs), |
630 | rtl8192eu_bb_regs, |
631 | rtl8192eu_bb_vals, |
632 | __arraycount(rtl8192eu_agc_vals), |
633 | rtl8192eu_agc_vals |
634 | }; |
635 | |
636 | /* |
637 | * RTL8188RU. |
638 | */ |
639 | static const uint16_t rtl8188ru_bb_regs[] = { |
640 | 0x024, 0x028, 0x040, 0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, |
641 | 0x818, 0x81c, 0x820, 0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, |
642 | 0x83c, 0x840, 0x844, 0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, |
643 | 0x860, 0x864, 0x868, 0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, |
644 | 0x884, 0x888, 0x88c, 0x890, 0x894, 0x898, 0x89c, 0x900, 0x904, |
645 | 0x908, 0x90c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14, 0xa18, |
646 | 0xa1c, 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xc00, 0xc04, |
647 | 0xc08, 0xc0c, 0xc10, 0xc14, 0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, |
648 | 0xc2c, 0xc30, 0xc34, 0xc38, 0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, |
649 | 0xc50, 0xc54, 0xc58, 0xc5c, 0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, |
650 | 0xc74, 0xc78, 0xc7c, 0xc80, 0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, |
651 | 0xc98, 0xc9c, 0xca0, 0xca4, 0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, |
652 | 0xcbc, 0xcc0, 0xcc4, 0xcc8, 0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, |
653 | 0xce0, 0xce4, 0xce8, 0xcec, 0xd00, 0xd04, 0xd08, 0xd0c, 0xd10, |
654 | 0xd14, 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, |
655 | 0xd48, 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, |
656 | 0xd6c, 0xd70, 0xd74, 0xd78, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14, |
657 | 0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44, |
658 | 0xe48, 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c, |
659 | 0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0, |
660 | 0xed4, 0xed8, 0xedc, 0xee0, 0xeec, 0xee8, 0xf14, 0xf4c, 0xf00 |
661 | }; |
662 | |
663 | static const uint32_t rtl8188ru_bb_vals[] = { |
664 | 0x0011800d, 0x00ffdb83, 0x000c0004, 0x80040000, 0x00000001, |
665 | 0x0000fc00, 0x0000000a, 0x10005388, 0x020c3d10, 0x02200385, |
666 | 0x00000000, 0x01000100, 0x00390204, 0x00000000, 0x00000000, |
667 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, |
668 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, |
669 | 0x569a569a, 0x001b25a4, 0x66e60230, 0x061f0130, 0x00000000, |
670 | 0x32323200, 0x03000300, 0x22004000, 0x00000808, 0x00ffc3f1, |
671 | 0xc0083070, 0x000004d5, 0x00000000, 0xccc000c0, 0x00000800, |
672 | 0xfffffffe, 0x40302010, 0x00706050, 0x00000000, 0x00000023, |
673 | 0x00000000, 0x81121111, 0x00d047c8, 0x80ff000c, 0x8c838300, |
674 | 0x2e68120f, 0x9500bb78, 0x11144028, 0x00881117, 0x89140f00, |
675 | 0x15160000, 0x070b0f12, 0x00000104, 0x00d30000, 0x101fbf00, |
676 | 0x00000007, 0x48071d40, 0x03a05611, 0x000000e4, 0x6c6c6c6c, |
677 | 0x08800000, 0x40000100, 0x08800000, 0x40000100, 0x00000000, |
678 | 0x00000000, 0x00000000, 0x00000000, 0x69e9ac44, 0x469652cf, |
679 | 0x49795994, 0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, |
680 | 0x007f037f, 0x6954342e, 0x43bc0094, 0x6954342f, 0x433c0094, |
681 | 0x00000000, 0x5116848b, 0x47c00bff, 0x00000036, 0x2c56000d, |
682 | 0x018610db, 0x0000001f, 0x00b91612, 0x24000090, 0x20f60000, |
683 | 0x24000090, 0x20200000, 0x00121820, 0x00000000, 0x00121820, |
684 | 0x00007f7f, 0x00000000, 0x00000080, 0x00000000, 0x00000000, |
685 | 0x00000000, 0x00000000, 0x00000000, 0x28000000, 0x00000000, |
686 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, |
687 | 0x64b22427, 0x00766932, 0x00222222, 0x00000000, 0x37644302, |
688 | 0x2f97d40c, 0x00080740, 0x00020401, 0x0000907f, 0x20010201, |
689 | 0xa0633333, 0x3333bc43, 0x7a8f5b6b, 0xcc979975, 0x00000000, |
690 | 0x80608000, 0x00000000, 0x00027293, 0x00000000, 0x00000000, |
691 | 0x00000000, 0x00000000, 0x6437140a, 0x00000000, 0x00000000, |
692 | 0x30032064, 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16, |
693 | 0x1812362e, 0x322c2220, 0x000e3c24, 0x2a2a2a2a, 0x2a2a2a2a, |
694 | 0x03902a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, 0x2a2a2a2a, |
695 | 0x00000000, 0x1000dc1f, 0x10008c1f, 0x02140102, 0x681604c2, |
696 | 0x01007c00, 0x01004800, 0xfb000000, 0x000028d1, 0x1000dc1f, |
697 | 0x10008c1f, 0x02140102, 0x28160d05, 0x00000010, 0x001b25a4, |
698 | 0x631b25a0, 0x631b25a0, 0x081b25a0, 0x081b25a0, 0x081b25a0, |
699 | 0x081b25a0, 0x631b25a0, 0x081b25a0, 0x631b25a0, 0x631b25a0, |
700 | 0x631b25a0, 0x631b25a0, 0x001b25a0, 0x001b25a0, 0x6b1b25a0, |
701 | 0x31555448, 0x00000003, 0x00000000, 0x00000300 |
702 | }; |
703 | |
704 | static const uint32_t rtl8188ru_agc_vals[] = { |
705 | 0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001, |
706 | 0x7b050001, 0x7b060001, 0x7b070001, 0x7b080001, 0x7a090001, |
707 | 0x790a0001, 0x780b0001, 0x770c0001, 0x760d0001, 0x750e0001, |
708 | 0x740f0001, 0x73100001, 0x72110001, 0x71120001, 0x70130001, |
709 | 0x6f140001, 0x6e150001, 0x6d160001, 0x6c170001, 0x6b180001, |
710 | 0x6a190001, 0x691a0001, 0x681b0001, 0x671c0001, 0x661d0001, |
711 | 0x651e0001, 0x641f0001, 0x63200001, 0x62210001, 0x61220001, |
712 | 0x60230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001, |
713 | 0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001, |
714 | 0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001, |
715 | 0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001, |
716 | 0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001, |
717 | 0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001, |
718 | 0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001, |
719 | 0x7b460001, 0x7b470001, 0x7b480001, 0x7a490001, 0x794a0001, |
720 | 0x784b0001, 0x774c0001, 0x764d0001, 0x754e0001, 0x744f0001, |
721 | 0x73500001, 0x72510001, 0x71520001, 0x70530001, 0x6f540001, |
722 | 0x6e550001, 0x6d560001, 0x6c570001, 0x6b580001, 0x6a590001, |
723 | 0x695a0001, 0x685b0001, 0x675c0001, 0x665d0001, 0x655e0001, |
724 | 0x645f0001, 0x63600001, 0x62610001, 0x61620001, 0x60630001, |
725 | 0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001, |
726 | 0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001, |
727 | 0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001, |
728 | 0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001, |
729 | 0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001, |
730 | 0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e, |
731 | 0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e, |
732 | 0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e, |
733 | 0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e, |
734 | 0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e, |
735 | 0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e, |
736 | 0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e |
737 | }; |
738 | |
739 | static const struct urtwn_bb_prog rtl8188ru_bb_prog = { |
740 | __arraycount(rtl8188ru_bb_regs), |
741 | rtl8188ru_bb_regs, |
742 | rtl8188ru_bb_vals, |
743 | __arraycount(rtl8188ru_agc_vals), |
744 | rtl8188ru_agc_vals |
745 | }; |
746 | |
747 | /* |
748 | * RF initialization values. |
749 | */ |
750 | struct urtwn_rf_prog { |
751 | size_t count; |
752 | const uint8_t *regs; |
753 | const uint32_t *vals; |
754 | }; |
755 | |
756 | /* |
757 | * RTL8192CU and RTL8192CE-VAU. |
758 | */ |
759 | static const uint8_t rtl8192ce_rf1_regs[] = { |
760 | 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, |
761 | 0x0f, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, |
762 | 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2a, 0x2b, |
763 | 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, |
764 | 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, |
765 | 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, |
766 | 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, |
767 | 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, |
768 | 0x2c, 0x2a, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, |
769 | 0x11, 0x10, 0x11, 0x10, 0x11, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, |
770 | 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, |
771 | 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x00, |
772 | 0x18, 0xfe, 0xfe, 0x1f, 0xfe, 0xfe, 0x1e, 0x1f, 0x00 |
773 | }; |
774 | |
775 | static const uint32_t rtl8192ce_rf1_vals[] = { |
776 | 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, |
777 | 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255, |
778 | 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, |
779 | 0x00000, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x577c0, |
780 | 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, |
781 | 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, |
782 | 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, |
783 | 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, |
784 | 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, |
785 | 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, |
786 | 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, |
787 | 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, |
788 | 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, |
789 | 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, |
790 | 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000, |
791 | 0x71000, 0xb0000, 0xfc000, 0x287af, 0x244b7, 0x204ab, 0x1c49f, |
792 | 0x18493, 0x14297, 0x10295, 0x0c298, 0x0819c, 0x040a8, 0x0001c, |
793 | 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, |
794 | 0xcf424, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, |
795 | 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, |
796 | 0x30159 |
797 | }; |
798 | |
799 | static const uint8_t rtl8192ce_rf2_regs[] = { |
800 | 0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, |
801 | 0x0f, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, |
802 | 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, |
803 | 0x15, 0x15, 0x16, 0x16, 0x16, 0x16 |
804 | }; |
805 | |
806 | static const uint32_t rtl8192ce_rf2_vals[] = { |
807 | 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, |
808 | 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x32000, 0x71000, |
809 | 0xb0000, 0xfc000, 0x287af, 0x244b7, 0x204ab, 0x1c49f, 0x18493, |
810 | 0x14297, 0x10295, 0x0c298, 0x0819c, 0x040a8, 0x0001c, 0x1944c, |
811 | 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, 0xcf424, |
812 | 0xe0330, 0xa0330, 0x60330, 0x20330 |
813 | }; |
814 | |
815 | static const struct urtwn_rf_prog rtl8192ce_rf_prog[] = { |
816 | { |
817 | __arraycount(rtl8192ce_rf1_regs), |
818 | rtl8192ce_rf1_regs, |
819 | rtl8192ce_rf1_vals |
820 | }, |
821 | { |
822 | __arraycount(rtl8192ce_rf2_regs), |
823 | rtl8192ce_rf2_regs, |
824 | rtl8192ce_rf2_vals |
825 | } |
826 | }; |
827 | |
828 | /* |
829 | * RTL8188CE-VAU. |
830 | */ |
831 | static const uint32_t rtl8188ce_rf_vals[] = { |
832 | 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, |
833 | 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255, |
834 | 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, |
835 | 0x00000, 0x01558, 0x00060, 0x00483, 0x4f200, 0xec7d9, 0x577c0, |
836 | 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, |
837 | 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, |
838 | 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, |
839 | 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, |
840 | 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, |
841 | 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, |
842 | 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, |
843 | 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, |
844 | 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, |
845 | 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, |
846 | 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000, |
847 | 0x71000, 0xb0000, 0xfc000, 0x287b3, 0x244b7, 0x204ab, 0x1c49f, |
848 | 0x18493, 0x1429b, 0x10299, 0x0c29c, 0x081a0, 0x040ac, 0x00020, |
849 | 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424, |
850 | 0xcf424, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, |
851 | 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, |
852 | 0x30159 |
853 | }; |
854 | |
855 | static const struct urtwn_rf_prog rtl8188ce_rf_prog[] = { |
856 | { |
857 | __arraycount(rtl8192ce_rf1_regs), |
858 | rtl8192ce_rf1_regs, |
859 | rtl8188ce_rf_vals |
860 | } |
861 | }; |
862 | |
863 | |
864 | /* |
865 | * RTL8188CU. |
866 | */ |
867 | static const uint32_t rtl8188cu_rf_vals[] = { |
868 | 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1, |
869 | 0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255, |
870 | 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, |
871 | 0x00000, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x577c0, |
872 | 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, |
873 | 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, |
874 | 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, |
875 | 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, |
876 | 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, |
877 | 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, |
878 | 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, |
879 | 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, |
880 | 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, |
881 | 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, |
882 | 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0x32000, |
883 | 0x71000, 0xb0000, 0xfc000, 0x287b3, 0x244b7, 0x204ab, 0x1c49f, |
884 | 0x18493, 0x1429b, 0x10299, 0x0c29c, 0x081a0, 0x040ac, 0x00020, |
885 | 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f405, 0x4f405, 0x8f405, |
886 | 0xcf405, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, |
887 | 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, |
888 | 0x30159 |
889 | }; |
890 | |
891 | static const struct urtwn_rf_prog rtl8188cu_rf_prog[] = { |
892 | { |
893 | __arraycount(rtl8192ce_rf1_regs), |
894 | rtl8192ce_rf1_regs, |
895 | rtl8188cu_rf_vals |
896 | } |
897 | }; |
898 | |
899 | /* |
900 | * RTL8192EU. |
901 | */ |
902 | static const uint8_t rtl8192eu_rf_regs[] = { |
903 | 0x7f, 0x81, 0x00, 0x08, 0x18, 0x19, 0x1b, 0x1e, 0x1f, 0x2f, |
904 | 0x3f, 0x42, 0x57, 0x58, 0x67, 0x83, 0xb0, 0xb1, 0xb2, 0xb4, |
905 | 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbf, 0xc2, 0xc3, |
906 | 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xdf, 0xef, 0x51, |
907 | 0x52, 0x53, 0x56, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, |
908 | 0x18, 0x5a, 0x19, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, |
909 | 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, |
910 | 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x84, 0x86, 0x87, 0x8e, |
911 | 0x8f, 0xef, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, |
912 | 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, |
913 | 0xef, 0xfe, 0x18, 0xfe, 0xfe, 0xfe, 0xfe, 0x1e, 0x1f, 0x00, |
914 | }; |
915 | |
916 | static const uint32_t rtl8192eu_rf_vals[] = { |
917 | 0x00082, 0x3fc00, 0x30000, 0x08400, 0x00407, 0x00012, 0x00064, |
918 | 0x80009, 0x00880, 0x1a060, 0x00000, 0x060c0, 0xd0000, 0xbe180, |
919 | 0x01552, 0x00000, 0xff9f1, 0x55418, 0x8cc00, 0x43083, 0x08166, |
920 | 0x0803e, 0x1c69f, 0x0407f, 0x80001, 0x40001, 0x00400, 0xc0000, |
921 | 0x02400, 0x00009, 0x40c91, 0x99999, 0x000a3, 0x88820, 0x76c06, |
922 | 0x00000, 0x80000, 0x00180, 0x001a0, 0x69545, 0x7e45e, 0x00071, |
923 | 0x51ff3, 0x000a8, 0x001e2, 0x002a8, 0x01c24, 0x09c24, 0x11c24, |
924 | 0x19c24, 0x00c07, 0x48000, 0x739d0, 0x0a093, 0x0908f, 0x0808c, |
925 | 0x0704d, 0x0604a, 0x05047, 0x0400a, 0x03007, 0x02004, 0x01001, |
926 | 0x00000, 0x0add7, 0x09dd4, 0x08dd1, 0x07dce, 0x06dcb, 0x05dc8, |
927 | 0x04dc5, 0x034cc, 0x0244f, 0x0144c, 0x00014, 0x30159, 0x68180, |
928 | 0x0014e, 0x48e00, 0x65540, 0x88000, 0x020a0, 0xf07b0, 0xf02b0, |
929 | 0xef7b0, 0xd4fb0, 0xcf060, 0xb0090, 0xa0080, 0x90080, 0x8f780, |
930 | 0x787b0, 0x78730, 0x60fb0, 0x5ffa0, 0x40620, 0x37090, 0x20080, |
931 | 0x1f060, 0x0ffb0, 0x000a0, 0x00000, 0x0fc07, 0x00000, 0x00000, |
932 | 0x00000, 0x00000, 0x00001, 0x80000, 0x33e70, |
933 | }; |
934 | |
935 | static const uint8_t rtl8192eu_rf2_regs[] = { |
936 | 0x7f, 0x81, 0x00, 0x08, 0x18, 0x19, 0x1b, 0x1e, 0x1f, 0x2f, |
937 | 0x3f, 0x42, 0x57, 0x58, 0x67, 0x7f, 0x81, 0x83, 0xdf, 0xef, |
938 | 0x51, 0x52, 0x53, 0x56, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, |
939 | 0x36, 0x18, 0x5a, 0x19, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, |
940 | 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, |
941 | 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x84, 0x86, 0x87, |
942 | 0x8e, 0x8f, 0xef, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, |
943 | 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, |
944 | 0x3b, 0xef, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0x1e, 0x1f, 0x00, |
945 | }; |
946 | |
947 | static const uint32_t rtl8192eu_rf2_vals[] = { |
948 | 0x00082, 0x3fc00, 0x30000, 0x08400, 0x00407, 0x00012, 0x00064, |
949 | 0x80009, 0x00880, 0x1a060, 0x00000, 0x060c0, 0xd0000, 0xbe180, |
950 | 0x01552, 0x00082, 0x3f000, 0x00000, 0x00180, 0x001a0, 0x69545, |
951 | 0x7e42e, 0x00071, 0x51ff3, 0x000a8, 0x001e0, 0x002a8, 0x01ca8, |
952 | 0x09c24, 0x11c24, 0x19c24, 0x00c07, 0x48000, 0x739d0, 0x0a093, |
953 | 0x0908f, 0x0808c, 0x0704d, 0x0604a, 0x05047, 0x0400a, 0x03007, |
954 | 0x02004, 0x01001, 0x00000, 0x0add7, 0x09dd4, 0x08dd1, 0x07dce, |
955 | 0x06dcb, 0x05dc8, 0x04dc5, 0x034cc, 0x0244f, 0x0144c, 0x00014, |
956 | 0x30159, 0x68180, 0x000ce, 0x48a00, 0x65540, 0x88000, 0x020a0, |
957 | 0xf07b0, 0xf02b0, 0xef7b0, 0xd4fb0, 0xcf060, 0xb0090, 0xa0080, |
958 | 0x90080, 0x8f780, 0x787b0, 0x78730, 0x60fb0, 0x5ffa0, 0x40620, |
959 | 0x37090, 0x20080, 0x1f060, 0x0ffb0, 0x000a0, 0x10159, 0x00000, |
960 | 0x00000, 0x00000, 0x00000, 0x00001, 0x80000, 0x33e70, |
961 | }; |
962 | |
963 | static const struct urtwn_rf_prog rtl8192eu_rf_prog[] = { |
964 | { |
965 | __arraycount(rtl8192eu_rf_regs), |
966 | rtl8192eu_rf_regs, |
967 | rtl8192eu_rf_vals |
968 | }, |
969 | { |
970 | __arraycount(rtl8192eu_rf2_regs), |
971 | rtl8192eu_rf2_regs, |
972 | rtl8192eu_rf2_vals |
973 | } |
974 | }; |
975 | |
976 | /* |
977 | * RTL8188EU. |
978 | */ |
979 | static const uint8_t rtl8188eu_rf_regs[] = { |
980 | 0x00, 0x08, 0x18, 0x19, 0x1e, 0x1f, 0x2f, 0x3f, 0x42, 0x57, |
981 | 0x58, 0x67, 0x83, 0xb0, 0xb1, 0xb2, 0xb4, 0xb6, 0xb7, 0xb8, |
982 | 0xb9, 0xba, 0xbb, 0xbf, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, |
983 | 0xc8, 0xc9, 0xca, 0xdf, 0xef, 0x51, 0x52, 0x53, 0x56, |
984 | 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0xb6, 0x18, 0x5a, |
985 | 0x19, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, |
986 | 0x34, 0x34, 0x00, 0x84, 0x86, 0x87, 0x8e, 0x8f, 0xef, 0x3b, |
987 | 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, |
988 | 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xef, 0x00, 0x18, 0xfe, 0xfe, |
989 | 0x1f, 0xfe, 0xfe, 0x1e, 0x1f, 0x00 |
990 | }; |
991 | |
992 | static const uint32_t rtl8188eu_rf_vals[] = { |
993 | 0x30000, 0x84000, 0x00407, 0x00012, 0x80009, 0x00880, 0x1a060, |
994 | 0x00000, 0x060c0, 0xd0000, 0xbe180, 0x01552, 0x00000, 0xff8fc, |
995 | 0x54400, 0xccc19, 0x43003, 0x4953e, 0x1c718, 0x060ff, 0x80001, |
996 | 0x40000, 0x00400, 0xc0000, 0x02400, 0x00009, 0x40c91, 0x99999, |
997 | 0x000a3, 0x88820, 0x76c06, 0x00000, 0x80000, 0x00180, 0x001a0, |
998 | 0x6b27d, 0x7e49d, 0x00073, 0x51ff3, 0x00086, 0x00186, |
999 | 0x00286, 0x01c25, 0x09c25, 0x11c25, 0x19c25, 0x48538, 0x00c07, |
1000 | 0x4bd00, 0x739d0, 0x0adf3, 0x09df0, 0x08ded, 0x07dea, 0x06de7, |
1001 | 0x054ee, 0x044eb, 0x034e8, 0x0246b, 0x01468, 0x0006d, 0x30159, |
1002 | 0x68200, 0x000ce, 0x48a00, 0x65540, 0x88000, 0x020a0, 0xf02b0, |
1003 | 0xef7b0, 0xd4fb0, 0xcf060, 0xb0090, 0xa0080, 0x90080, 0x8f780, |
1004 | 0x722b0, 0x6f7b0, 0x54fb0, 0x4f060, 0x30090, 0x20080, 0x10080, |
1005 | 0x0f780, 0x000a0, 0x10159, 0x0f407, 0x00000, 0x00000, 0x80003, |
1006 | 0x00000, 0x00000, 0x00001, 0x80000, 0x33e60 |
1007 | }; |
1008 | |
1009 | static const struct urtwn_rf_prog rtl8188eu_rf_prog[] = { |
1010 | { |
1011 | __arraycount(rtl8188eu_rf_regs), |
1012 | rtl8188eu_rf_regs, |
1013 | rtl8188eu_rf_vals |
1014 | } |
1015 | }; |
1016 | |
1017 | /* |
1018 | * RTL8188RU. |
1019 | */ |
1020 | static const uint32_t rtl8188ru_rf_vals[] = { |
1021 | 0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb0, |
1022 | 0x54867, 0x8992e, 0x0e529, 0x39ce7, 0x00451, 0x00000, 0x00255, |
1023 | 0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000, |
1024 | 0x0083c, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x977c0, |
1025 | 0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808, |
1026 | 0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003, |
1027 | 0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d, |
1028 | 0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333, |
1029 | 0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a, |
1030 | 0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a, |
1031 | 0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d, |
1032 | 0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333, |
1033 | 0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f, |
1034 | 0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500, |
1035 | 0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100, 0xd8000, |
1036 | 0x90000, 0x51000, 0x12000, 0x28fb4, 0x24fa8, 0x207a4, 0x1c798, |
1037 | 0x183a4, 0x14398, 0x101a4, 0x0c198, 0x080a4, 0x04098, 0x00014, |
1038 | 0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f405, 0x4f405, 0x8f405, |
1039 | 0xcf405, 0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, |
1040 | 0x00000, 0x00000, 0x80003, 0x00000, 0x00000, 0x44457, 0x80000, |
1041 | 0x30159 |
1042 | }; |
1043 | |
1044 | static const struct urtwn_rf_prog rtl8188ru_rf_prog[] = { |
1045 | { |
1046 | __arraycount(rtl8192ce_rf1_regs), |
1047 | rtl8192ce_rf1_regs, |
1048 | rtl8188ru_rf_vals |
1049 | } |
1050 | }; |
1051 | |
1052 | struct urtwn_txpwr { |
1053 | uint8_t pwr[3][28]; |
1054 | }; |
1055 | |
1056 | struct urtwn_r88e_txpwr { |
1057 | uint8_t pwr[6][28]; |
1058 | }; |
1059 | |
1060 | /* |
1061 | * Per RF chain/group/rate Tx gain values. |
1062 | */ |
1063 | static const struct urtwn_txpwr rtl8192cu_txagc[] = { |
1064 | { { /* Chain 0. */ |
1065 | { /* Group 0. */ |
1066 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1067 | 0x0c, 0x0c, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02, /* OFDM6~54. */ |
1068 | 0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02, /* MCS0~7. */ |
1069 | 0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02 /* MCS8~15. */ |
1070 | }, |
1071 | { /* Group 1. */ |
1072 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1073 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ |
1074 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ |
1075 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ |
1076 | }, |
1077 | { /* Group 2. */ |
1078 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1079 | 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, /* OFDM6~54. */ |
1080 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ |
1081 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ |
1082 | } |
1083 | } }, |
1084 | { { /* Chain 1. */ |
1085 | { /* Group 0. */ |
1086 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1087 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ |
1088 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ |
1089 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ |
1090 | }, |
1091 | { /* Group 1. */ |
1092 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1093 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ |
1094 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ |
1095 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ |
1096 | }, |
1097 | { /* Group 2. */ |
1098 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1099 | 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00, /* OFDM6~54. */ |
1100 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ |
1101 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ |
1102 | } |
1103 | } } |
1104 | }; |
1105 | |
1106 | static const struct urtwn_txpwr rtl8188ru_txagc[] = { |
1107 | { { /* Chain 0. */ |
1108 | { /* Group 0. */ |
1109 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1110 | 0x08, 0x08, 0x08, 0x06, 0x06, 0x04, 0x04, 0x00, /* OFDM6~54. */ |
1111 | 0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00, /* MCS0~7. */ |
1112 | 0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00 /* MCS8~15. */ |
1113 | }, |
1114 | { /* Group 1. */ |
1115 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1116 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ |
1117 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ |
1118 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ |
1119 | }, |
1120 | { /* Group 2. */ |
1121 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1122 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ |
1123 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ |
1124 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ |
1125 | } |
1126 | } } |
1127 | }; |
1128 | |
1129 | static const struct urtwn_r88e_txpwr rtl8188eu_txagc[] = { |
1130 | { { /* Chain 0. */ |
1131 | { /* Group 0. */ |
1132 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1133 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ |
1134 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ |
1135 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ |
1136 | }, |
1137 | { /* Group 1. */ |
1138 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1139 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ |
1140 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ |
1141 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ |
1142 | }, |
1143 | { /* Group 2. */ |
1144 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1145 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ |
1146 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ |
1147 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ |
1148 | }, |
1149 | { /* Group 3. */ |
1150 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1151 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ |
1152 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ |
1153 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ |
1154 | }, |
1155 | { /* Group 4. */ |
1156 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1157 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ |
1158 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ |
1159 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ |
1160 | }, |
1161 | { /* Group 5. */ |
1162 | 0x00, 0x00, 0x00, 0x00, /* CCK1~11. */ |
1163 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* OFDM6~54. */ |
1164 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* MCS0~7. */ |
1165 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* MCS8~15. */ |
1166 | } |
1167 | } } |
1168 | }; |
1169 | |