1/*-
2 * Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr>
3 * Copyright (c) 2016 Andriy Voskoboinyk <avos@FreeBSD.org>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 *
17 * $OpenBSD: if_urtwnreg.h,v 1.3 2010/11/16 18:02:59 damien Exp $
18 */
19
20#ifndef R92C_PRIV_H
21#define R92C_PRIV_H
22
23#include <dev/rtwn/rtl8192c/r92c_rom_defs.h>
24
25/*
26 * Parsed Tx power (diff) values.
27 */
28struct rtwn_r92c_txpwr {
29	uint8_t		cck_tx_pwr[R92C_MAX_CHAINS][R92C_GROUP_2G];
30	uint8_t		ht40_1s_tx_pwr[R92C_MAX_CHAINS][R92C_GROUP_2G];
31	int8_t		ht40_2s_tx_pwr_diff[R92C_MAX_CHAINS][R92C_GROUP_2G];
32	int8_t		ht20_tx_pwr_diff[R92C_MAX_CHAINS][R92C_GROUP_2G];
33	int8_t		ofdm_tx_pwr_diff[R92C_MAX_CHAINS][R92C_GROUP_2G];
34	int8_t		ht40_max_pwr[R92C_MAX_CHAINS][R92C_GROUP_2G];
35	int8_t		ht20_max_pwr[R92C_MAX_CHAINS][R92C_GROUP_2G];
36};
37
38/*
39 * Baseband initialization values (shared parts).
40 */
41#define R92C_COND_RTL8188CE	0x01
42#define R92C_COND_RTL8188CU	0x02
43#define R92C_COND_RTL8188RU	0x04
44#define R92C_COND_RTL8192CE	0x08
45#define R92C_COND_RTL8192CU	0x10
46
47/* Shortcut. */
48#define R92C_COND_RTL8192C	(R92C_COND_RTL8192CE | R92C_COND_RTL8192CU)
49
50static const uint16_t rtl8192c_bb_regs3[] = {
51	0xd04
52}, rtl8192c_bb_regs4[] = {
53	0xd08, 0xd0c, 0xd10, 0xd14, 0xd18, 0xd2c, 0xd30, 0xd34, 0xd38,
54	0xd3c, 0xd40, 0xd44, 0xd48, 0xd4c, 0xd50, 0xd54, 0xd58, 0xd5c,
55	0xd60, 0xd64, 0xd68, 0xd6c, 0xd70, 0xd74, 0xd78, 0xe00, 0xe04,
56	0xe08, 0xe10, 0xe14, 0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38,
57	0xe3c, 0xe40, 0xe44, 0xe48, 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c
58}, rtl8192c_bb_regs5[] = {
59	0xe60, 0xe68, 0xe6c, 0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84,
60	0xe88, 0xe8c, 0xed0, 0xed4, 0xed8, 0xedc, 0xee0, 0xeec, 0xf14,
61	0xf4c, 0xf00
62};
63
64static const uint32_t rtl8192c_bb_vals3_88cu_88ru[] = {
65	0x00020401
66}, rtl8192c_bb_vals3_92ce_92cu[] = {
67	0x00020403
68}, rtl8192c_bb_vals4[] = {
69	0x0000907f, 0x20010201, 0xa0633333, 0x3333bc43, 0x7a8f5b6b,
70	0xcc979975, 0x00000000, 0x80608000, 0x00000000, 0x00027293,
71	0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6437140a,
72	0x00000000, 0x00000000, 0x30032064, 0x4653de68, 0x04518a3c,
73	0x00002101, 0x2a201c16, 0x1812362e, 0x322c2220, 0x000e3c24,
74	0x2a2a2a2a, 0x2a2a2a2a, 0x03902a2a, 0x2a2a2a2a, 0x2a2a2a2a,
75	0x2a2a2a2a, 0x2a2a2a2a, 0x00000000, 0x1000dc1f, 0x10008c1f,
76	0x02140102, 0x681604c2, 0x01007c00, 0x01004800, 0xfb000000,
77	0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102, 0x28160d05
78},rtl8192c_bb_vals5_92ce_92cu[] = {
79	0x00000010, 0x001b25a4, 0x63db25a4, 0x63db25a4, 0x0c1b25a4,
80	0x0c1b25a4, 0x0c1b25a4, 0x0c1b25a4, 0x63db25a4, 0x0c1b25a4,
81	0x63db25a4, 0x63db25a4, 0x63db25a4, 0x63db25a4, 0x001b25a4,
82	0x001b25a4, 0x6fdb25a4, 0x00000003, 0x00000000, 0x00000300
83};
84
85/*
86 * RTL8192CU and RTL8192CE-VAU.
87 */
88
89static const uint32_t rtl8192ce_agc_vals[] = {
90	0x7b000001, 0x7b010001, 0x7b020001, 0x7b030001, 0x7b040001,
91	0x7b050001, 0x7a060001, 0x79070001, 0x78080001, 0x77090001,
92	0x760a0001, 0x750b0001, 0x740c0001, 0x730d0001, 0x720e0001,
93	0x710f0001, 0x70100001, 0x6f110001, 0x6e120001, 0x6d130001,
94	0x6c140001, 0x6b150001, 0x6a160001, 0x69170001, 0x68180001,
95	0x67190001, 0x661a0001, 0x651b0001, 0x641c0001, 0x631d0001,
96	0x621e0001, 0x611f0001, 0x60200001, 0x49210001, 0x48220001,
97	0x47230001, 0x46240001, 0x45250001, 0x44260001, 0x43270001,
98	0x42280001, 0x41290001, 0x402a0001, 0x262b0001, 0x252c0001,
99	0x242d0001, 0x232e0001, 0x222f0001, 0x21300001, 0x20310001,
100	0x06320001, 0x05330001, 0x04340001, 0x03350001, 0x02360001,
101	0x01370001, 0x00380001, 0x00390001, 0x003a0001, 0x003b0001,
102	0x003c0001, 0x003d0001, 0x003e0001, 0x003f0001, 0x7b400001,
103	0x7b410001, 0x7b420001, 0x7b430001, 0x7b440001, 0x7b450001,
104	0x7a460001, 0x79470001, 0x78480001, 0x77490001, 0x764a0001,
105	0x754b0001, 0x744c0001, 0x734d0001, 0x724e0001, 0x714f0001,
106	0x70500001, 0x6f510001, 0x6e520001, 0x6d530001, 0x6c540001,
107	0x6b550001, 0x6a560001, 0x69570001, 0x68580001, 0x67590001,
108	0x665a0001, 0x655b0001, 0x645c0001, 0x635d0001, 0x625e0001,
109	0x615f0001, 0x60600001, 0x49610001, 0x48620001, 0x47630001,
110	0x46640001, 0x45650001, 0x44660001, 0x43670001, 0x42680001,
111	0x41690001, 0x406a0001, 0x266b0001, 0x256c0001, 0x246d0001,
112	0x236e0001, 0x226f0001, 0x21700001, 0x20710001, 0x06720001,
113	0x05730001, 0x04740001, 0x03750001, 0x02760001, 0x01770001,
114	0x00780001, 0x00790001, 0x007a0001, 0x007b0001, 0x007c0001,
115	0x007d0001, 0x007e0001, 0x007f0001, 0x3800001e, 0x3801001e,
116	0x3802001e, 0x3803001e, 0x3804001e, 0x3805001e, 0x3806001e,
117	0x3807001e, 0x3808001e, 0x3c09001e, 0x3e0a001e, 0x400b001e,
118	0x440c001e, 0x480d001e, 0x4c0e001e, 0x500f001e, 0x5210001e,
119	0x5611001e, 0x5a12001e, 0x5e13001e, 0x6014001e, 0x6015001e,
120	0x6016001e, 0x6217001e, 0x6218001e, 0x6219001e, 0x621a001e,
121	0x621b001e, 0x621c001e, 0x621d001e, 0x621e001e, 0x621f001e
122};
123
124static const struct rtwn_agc_prog rtl8192ce_agc[] = {
125	{
126		nitems(rtl8192ce_agc_vals),
127		rtl8192ce_agc_vals,
128		{ 0 },
129		NULL
130	}
131};
132
133/*
134 * RF initialization values.
135 */
136static const uint8_t rtl8192c_rf0_regs0[] = {
137	0x00, 0x01, 0x02, 0x03, 0x04, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
138	0x0f, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21
139}, rtl8192c_rf0_regs1[] = {
140	0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28
141}, rtl8192c_rf0_regs2[] = {
142	0x29, 0x2a, 0x2b, 0x2a, 0x2b, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b,
143	0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a,
144	0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c,
145	0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b,
146	0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x2b,
147	0x2b, 0x2c, 0x2a, 0x2b, 0x2b, 0x2c, 0x2a, 0x10, 0x11, 0x10, 0x11,
148	0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11, 0x10, 0x11
149}, rtl8192c_rf0_regs3[] = {
150	0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
151	0x13, 0x13, 0x13, 0x13
152}, rtl8192c_rf0_regs4[] = {
153	0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15
154}, rtl8192c_rf0_regs5[] = {
155	0x16, 0x16, 0x16, 0x16, 0x00, 0x18, 0xfe, 0xfe, 0x1f, 0xfe, 0xfe,
156	0x1e, 0x1f, 0x00
157};
158
159static const uint32_t rtl8192c_rf0_vals0_88ce_88cu_92ce[] = {
160	0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb1,
161	0x54867, 0x8992e, 0x0e52c, 0x39ce7, 0x00451, 0x00000, 0x10255,
162	0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000
163}, rtl8192c_rf0_vals0_88ru[] = {
164	0x30159, 0x31284, 0x98000, 0x18c63, 0x210e7, 0x2044f, 0x1adb0,
165	0x54867, 0x8992e, 0x0e529, 0x39ce7, 0x00451, 0x00000, 0x00255,
166	0x60a00, 0xfc378, 0xa1250, 0x4445f, 0x80001, 0x0b614, 0x6c000
167}, rtl8192c_rf0_vals1_88ru[] = {
168	0x0083c, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x977c0
169}, rtl8192c_rf0_vals1_88ce[] = {
170	0x00000, 0x01558, 0x00060, 0x00483, 0x4f200, 0xec7d9, 0x577c0
171}, rtl8192c_rf0_vals1_88cu_92ce[] = {
172	0x00000, 0x01558, 0x00060, 0x00483, 0x4f000, 0xec7d9, 0x577c0
173}, rtl8192c_rf0_vals2[] = {
174	0x04783, 0x00001, 0x21334, 0x00000, 0x00054, 0x00001, 0x00808,
175	0x53333, 0x0000c, 0x00002, 0x00808, 0x5b333, 0x0000d, 0x00003,
176	0x00808, 0x63333, 0x0000d, 0x00004, 0x00808, 0x6b333, 0x0000d,
177	0x00005, 0x00808, 0x73333, 0x0000d, 0x00006, 0x00709, 0x5b333,
178	0x0000d, 0x00007, 0x00709, 0x63333, 0x0000d, 0x00008, 0x0060a,
179	0x4b333, 0x0000d, 0x00009, 0x0060a, 0x53333, 0x0000d, 0x0000a,
180	0x0060a, 0x5b333, 0x0000d, 0x0000b, 0x0060a, 0x63333, 0x0000d,
181	0x0000c, 0x0060a, 0x6b333, 0x0000d, 0x0000d, 0x0060a, 0x73333,
182	0x0000d, 0x0000e, 0x0050b, 0x66666, 0x0001a, 0xe0000, 0x4000f,
183	0xe31fc, 0x6000f, 0xff9f8, 0x2000f, 0x203f9, 0x3000f, 0xff500,
184	0x00000, 0x00000, 0x8000f, 0x3f100, 0x9000f, 0x23100
185}, rtl8192c_rf0_vals3_88ru[] = {
186	0xd8000, 0x90000, 0x51000, 0x12000, 0x28fb4, 0x24fa8, 0x207a4,
187	0x1c798, 0x183a4, 0x14398, 0x101a4, 0x0c198, 0x080a4, 0x04098,
188	0x00014
189}, rtl8192c_rf0_vals3_92ce[] = {
190	0x32000, 0x71000, 0xb0000, 0xfc000, 0x287af, 0x244b7, 0x204ab,
191	0x1c49f, 0x18493, 0x14297, 0x10295, 0x0c298, 0x0819c, 0x040a8,
192	0x0001c
193}, rtl8192c_rf0_vals3_88cu_88ce[] = {
194	0x32000, 0x71000, 0xb0000, 0xfc000, 0x287b3, 0x244b7, 0x204ab,
195	0x1c49f, 0x18493, 0x1429b, 0x10299, 0x0c29c, 0x081a0, 0x040ac,
196	0x00020
197}, rtl8192c_rf0_vals4_92ce_88ce[] = {
198	0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f424, 0x4f424, 0x8f424,
199	0xcf424
200}, rtl8192c_rf0_vals4_88cu_88ru[] = {
201	0x1944c, 0x59444, 0x9944c, 0xd9444, 0x0f405, 0x4f405, 0x8f405,
202	0xcf405
203}, rtl8192c_rf0_vals5[] = {
204	0xe0330, 0xa0330, 0x60330, 0x20330, 0x10159, 0x0f401, 0x0c350,
205	0x0c350, 0x80003, 0x0c350, 0x0c350, 0x44457, 0x80000, 0x30159
206};
207
208static const struct rtwn_rf_prog rtl8192c_rf[] = {
209	/* RF chain 0 */
210	/* RTL8188RU. */
211	{
212		nitems(rtl8192c_rf0_regs0),
213		rtl8192c_rf0_regs0,
214		rtl8192c_rf0_vals0_88ru,
215		{ R92C_COND_RTL8188RU },
216		/* Others. */
217		&(const struct rtwn_rf_prog){
218			nitems(rtl8192c_rf0_regs0),
219			rtl8192c_rf0_regs0,
220			rtl8192c_rf0_vals0_88ce_88cu_92ce,
221			{ 0 },
222			NULL
223		}
224	},
225	/* RTL8188RU. */
226	{
227		nitems(rtl8192c_rf0_regs1),
228		rtl8192c_rf0_regs1,
229		rtl8192c_rf0_vals1_88ru,
230		{ R92C_COND_RTL8188RU },
231		/* RTL8188CE. */
232		&(const struct rtwn_rf_prog){
233			nitems(rtl8192c_rf0_regs1),
234			rtl8192c_rf0_regs1,
235			rtl8192c_rf0_vals1_88ce,
236			{ R92C_COND_RTL8188CE },
237			/* Others. */
238			&(const struct rtwn_rf_prog){
239				nitems(rtl8192c_rf0_regs1),
240				rtl8192c_rf0_regs1,
241				rtl8192c_rf0_vals1_88cu_92ce,
242				{ 0 },
243				NULL
244			}
245		}
246	},
247	{
248		nitems(rtl8192c_rf0_regs2),
249		rtl8192c_rf0_regs2,
250		rtl8192c_rf0_vals2,
251		{ 0 },
252		NULL
253	},
254	/* RTL8188RU. */
255	{
256		nitems(rtl8192c_rf0_regs3),
257		rtl8192c_rf0_regs3,
258		rtl8192c_rf0_vals3_88ru,
259		{ R92C_COND_RTL8188RU },
260		/* RTL8192C. */
261		&(const struct rtwn_rf_prog){
262			nitems(rtl8192c_rf0_regs3),
263			rtl8192c_rf0_regs3,
264			rtl8192c_rf0_vals3_92ce,
265			{ R92C_COND_RTL8192C },
266			/* Others. */
267			&(struct rtwn_rf_prog){
268				nitems(rtl8192c_rf0_regs3),
269				rtl8192c_rf0_regs3,
270				rtl8192c_rf0_vals3_88cu_88ce,
271				{ 0 },
272				NULL
273			}
274		}
275	},
276	/* RTL8188CE / RTL8192C. */
277	{
278		nitems(rtl8192c_rf0_regs4),
279		rtl8192c_rf0_regs4,
280		rtl8192c_rf0_vals4_92ce_88ce,
281		{ R92C_COND_RTL8188CE | R92C_COND_RTL8192C },
282		/* Others. */
283		&(const struct rtwn_rf_prog){
284			nitems(rtl8192c_rf0_regs4),
285			rtl8192c_rf0_regs4,
286			rtl8192c_rf0_vals4_88cu_88ru,
287			{ 0 },
288			NULL
289		}
290	},
291	{
292		nitems(rtl8192c_rf0_regs5),
293		rtl8192c_rf0_regs5,
294		rtl8192c_rf0_vals5,
295		{ 0 },
296		NULL
297	},
298	{ 0, NULL, NULL, { 0 }, NULL },
299	/* RF chain 1 (RTL8192C). */
300	{
301		12,				/* 0x00 - 0x0f */
302		rtl8192c_rf0_regs0,
303		rtl8192c_rf0_vals0_88ce_88cu_92ce,
304		{ 0 },
305		NULL
306	},
307	{
308		nitems(rtl8192c_rf0_regs3),	/* 0x12 - 0x13 */
309		rtl8192c_rf0_regs3,
310		rtl8192c_rf0_vals3_92ce,
311		{ 0 },
312		NULL
313	},
314	{
315		nitems(rtl8192c_rf0_regs4),	/* 0x14 - 0x15 */
316		rtl8192c_rf0_regs4,
317		rtl8192c_rf0_vals4_92ce_88ce,
318		{ 0 },
319		NULL
320	},
321	{
322		4,				/* 0x16 */
323		rtl8192c_rf0_regs5,
324		rtl8192c_rf0_vals5,
325		{ 0 },
326		NULL
327	},
328	{ 0, NULL, NULL, { 0 }, NULL }
329};
330
331struct rtwn_r92c_txagc {
332	uint8_t	pwr[R92C_GROUP_2G][28];	/* RTWN_RIDX_HT_MCS(15) + 1 */
333};
334
335/*
336 * Per RF chain/group/rate Tx gain values.
337 */
338static const struct rtwn_r92c_txagc rtl8192cu_txagc[] = {
339	{ {	/* Chain 0. */
340	{	/* Group 0. */
341	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
342	0x0c, 0x0c, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02,	/* OFDM6~54. */
343	0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02,	/* MCS0~7. */
344	0x0e, 0x0d, 0x0c, 0x0a, 0x08, 0x06, 0x04, 0x02	/* MCS8~15. */
345	},
346	{	/* Group 1. */
347	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
348	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* OFDM6~54. */
349	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
350	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
351	},
352	{	/* Group 2. */
353	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
354	0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00,	/* OFDM6~54. */
355	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
356	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
357	}
358	} },
359	{ {	/* Chain 1. */
360	{	/* Group 0. */
361	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
362	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* OFDM6~54. */
363	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
364	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
365	},
366	{	/* Group 1. */
367	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
368	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* OFDM6~54. */
369	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
370	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
371	},
372	{	/* Group 2. */
373	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
374	0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x00,	/* OFDM6~54. */
375	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
376	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
377	}
378	} }
379};
380
381static const struct rtwn_r92c_txagc rtl8188ru_txagc[] = {
382	{ {	/* Chain 0. */
383	{	/* Group 0. */
384	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
385	0x08, 0x08, 0x08, 0x06, 0x06, 0x04, 0x04, 0x00,	/* OFDM6~54. */
386	0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00,	/* MCS0~7. */
387	0x08, 0x06, 0x06, 0x04, 0x04, 0x02, 0x02, 0x00	/* MCS8~15. */
388	},
389	{	/* Group 1. */
390	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
391	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* OFDM6~54. */
392	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
393	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
394	},
395	{	/* Group 2. */
396	0x00, 0x00, 0x00, 0x00,				/* CCK1~11. */
397	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* OFDM6~54. */
398	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* MCS0~7. */
399	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00	/* MCS8~15. */
400	}
401	} }
402};
403
404#endif	/* R92C_PRIV_H */
405