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 */
24static 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 */
106struct 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 */
117static 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
141static 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
182static 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
217static 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 */
228static 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
269static 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 */
280static 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
321static 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
356static 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
364static 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
405static 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 */
416static 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
443static 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
485static 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
514static 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 */
525static 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
554static 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
599static 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
628static 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 */
639static 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
663static 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
704static 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
739static 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 */
750struct 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 */
759static 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
775static 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
799static 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
806static 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
815static 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 */
831static 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
855static 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 */
867static 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
891static 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 */
902static 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
916static 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
935static 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
947static 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
963static 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 */
979static 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
992static 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
1009static 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 */
1020static 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
1044static 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
1052struct urtwn_txpwr {
1053 uint8_t pwr[3][28];
1054};
1055
1056struct urtwn_r88e_txpwr {
1057 uint8_t pwr[6][28];
1058};
1059
1060/*
1061 * Per RF chain/group/rate Tx gain values.
1062 */
1063static 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
1106static 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
1129static 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