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 */
28static 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 */
132struct 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 */
143static 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
167static 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
208static 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
249static 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
290static 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
325static 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
333static 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
341static 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 */
352static 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
393static 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 */
404static 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
445static 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
480static 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
488static 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
529static 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 */
540static 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
567static 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
609static 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
638static 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 */
649static 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
678static 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
723static 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
752static 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 */
763static 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
787static 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
828static 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
863static 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 */
874struct 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 */
883static 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
899static 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
923static 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
930static 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
939static 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 */
955static 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
979static 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 */
991static 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
1015static 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 */
1026static 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
1040static 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
1059static 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
1071static 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
1087static 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 */
1103static 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
1116static 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
1133static 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 */
1144static 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
1168static 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
1176struct rtwn_txpwr {
1177	uint8_t	pwr[3][28];
1178};
1179
1180struct rtwn_r88e_txpwr {
1181	uint8_t pwr[6][28];
1182};
1183
1184/*
1185 * Per RF chain/group/rate Tx gain values.
1186 */
1187static 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
1230static 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
1253static 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