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