]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/rtwn/rtl8192e/r92e_priv.h
THIS BRANCH IS OBSOLETE, PLEASE READ:
[FreeBSD/FreeBSD.git] / sys / dev / rtwn / rtl8192e / r92e_priv.h
1 /*-
2  * Copyright (c) 2017 Kevin Lo <kevlo@FreeBSD.org>
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24  * SUCH DAMAGE.
25  *
26  * $FreeBSD$
27  */
28
29 #ifndef R92E_PRIV_H
30 #define R92E_PRIV_H
31
32 /*
33  * MAC initialization values.
34  */
35 static const struct rtwn_mac_prog rtl8192eu_mac[] = {
36         { 0x011, 0xeb }, { 0x012, 0x07 }, { 0x014, 0x75 }, { 0x303, 0xa7 },
37         { 0x428, 0x0a }, { 0x429, 0x10 }, { 0x430, 0x00 }, { 0x431, 0x00 },
38         { 0x432, 0x00 }, { 0x433, 0x01 }, { 0x434, 0x04 }, { 0x435, 0x05 },
39         { 0x436, 0x07 }, { 0x437, 0x08 }, { 0x43c, 0x04 }, { 0x43d, 0x05 },
40         { 0x43e, 0x07 }, { 0x43f, 0x08 }, { 0x440, 0x5d }, { 0x441, 0x01 },
41         { 0x442, 0x00 }, { 0x444, 0x10 }, { 0x445, 0x00 }, { 0x446, 0x00 },
42         { 0x447, 0x00 }, { 0x448, 0x00 }, { 0x449, 0xf0 }, { 0x44a, 0x0f },
43         { 0x44b, 0x3e }, { 0x44c, 0x10 }, { 0x44d, 0x00 }, { 0x44e, 0x00 },
44         { 0x44f, 0x00 }, { 0x450, 0x00 }, { 0x451, 0xf0 }, { 0x452, 0x0f },
45         { 0x453, 0x00 }, { 0x456, 0x5e }, { 0x460, 0x66 }, { 0x461, 0x66 },
46         { 0x4c8, 0xff }, { 0x4c9, 0x08 }, { 0x4cc, 0xff }, { 0x4cd, 0xff },
47         { 0x4ce, 0x01 }, { 0x500, 0x26 }, { 0x501, 0xa2 }, { 0x502, 0x2f },
48         { 0x503, 0x00 }, { 0x504, 0x28 }, { 0x505, 0xa3 }, { 0x506, 0x5e },
49         { 0x507, 0x00 }, { 0x508, 0x2b }, { 0x509, 0xa4 }, { 0x50a, 0x5e },
50         { 0x50b, 0x00 }, { 0x50c, 0x4f }, { 0x50d, 0xa4 }, { 0x50e, 0x00 },
51         { 0x50f, 0x00 }, { 0x512, 0x1c }, { 0x514, 0x0a }, { 0x516, 0x0a },
52         { 0x525, 0x4f }, { 0x540, 0x12 }, { 0x541, 0x64 }, { 0x550, 0x10 },
53         { 0x551, 0x10 }, { 0x559, 0x02 }, { 0x55c, 0x50 }, { 0x55d, 0xff },
54         { 0x605, 0x30 }, { 0x608, 0x0e }, { 0x609, 0x2a }, { 0x620, 0xff },
55         { 0x621, 0xff }, { 0x622, 0xff }, { 0x623, 0xff }, { 0x624, 0xff },
56         { 0x625, 0xff }, { 0x626, 0xff }, { 0x627, 0xff }, { 0x638, 0x50 },
57         { 0x63c, 0x0a }, { 0x63d, 0x0a }, { 0x63e, 0x0e }, { 0x63f, 0x0e },
58         { 0x640, 0x40 }, { 0x642, 0x40 }, { 0x643, 0x00 }, { 0x652, 0xc8 },
59         { 0x66e, 0x05 }, { 0x700, 0x21 }, { 0x701, 0x43 }, { 0x702, 0x65 },
60         { 0x703, 0x87 }, { 0x708, 0x21 }, { 0x709, 0x43 }, { 0x70a, 0x65 },
61         { 0x70b, 0x87 }
62 };
63
64 /*
65  * Baseband initialization values.
66  */
67 static const uint16_t rtl8192eu_bb_regs[] = {
68         0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x81c, 0x820,
69         0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 0x840, 0x844,
70         0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, 0x864, 0x868,
71         0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884, 0x888, 0x88c,
72         0x890, 0x894, 0x898, 0x900, 0x904, 0x908, 0x90c, 0x910, 0x914,
73         0x918, 0x91c, 0x924, 0x928, 0x92c, 0x930, 0x934, 0x938, 0x93c,
74         0x940, 0x944, 0x94c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14,
75         0xa18, 0xa1c, 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xa78,
76         0xa7c, 0xa80, 0xb38, 0xc00, 0xc04, 0xc08, 0xc0c, 0xc10, 0xc14,
77         0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 0xc34, 0xc38,
78         0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 0xc54, 0xc58, 0xc5c,
79         0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, 0xc78, 0xc7c, 0xc80,
80         0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 0xc98, 0xc9c, 0xca0, 0xca4,
81         0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 0xcbc, 0xcc0, 0xcc4, 0xcc8,
82         0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, 0xce0, 0xce4, 0xce8, 0xcec,
83         0xd00, 0xd04, 0xd08, 0xd0c, 0xd10, 0xd14, 0xd18, 0xd1c, 0xd2c,
84         0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, 0xd48, 0xd4c, 0xd50,
85         0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, 0xd6c, 0xd70, 0xd74,
86         0xd78, 0xd80, 0xd84, 0xd88, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14,
87         0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44,
88         0xe48, 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c,
89         0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0,
90         0xed4, 0xed8, 0xedc, 0xee0, 0xeec, 0xee4, 0xee8, 0xf14, 0xf4c,
91         0xf00
92 };
93
94 static const uint32_t rtl8192eu_bb_vals[] = {
95         0x80040000, 0x00000003, 0x0000fc00, 0x0000000a, 0x10001331,
96         0x020c3d10, 0x02220385, 0x00000000, 0x01000100, 0x00390204,
97         0x01000100, 0x00390204, 0x32323232, 0x30303030, 0x30303030,
98         0x30303030, 0x00010000, 0x00010000, 0x28282828, 0x28282828,
99         0x00000000, 0x00000000, 0x009a009a, 0x01000014, 0x66f60000,
100         0x061f0000, 0x30303030, 0x30303030, 0x00000000, 0x55004200,
101         0x08080808, 0x00000000, 0xb0000c1c, 0x00000001, 0x00000000,
102         0xcc0000c0, 0x00000800, 0xfffffffe, 0x40302010, 0x00000000,
103         0x00000023, 0x00000000, 0x81121313, 0x806c0001, 0x00000001,
104         0x00000000, 0x00010000, 0x00000001, 0x00000000, 0x00000000,
105         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
106         0x00000000, 0x00000008, 0x00d0c7c8, 0x81ff000c, 0x8c838300,
107         0x2e68120f, 0x95009b78, 0x1114d028, 0x00881117, 0x89140f00,
108         0x1a1b0000, 0x090e1317, 0x00000204, 0x00d30000, 0x101fff00,
109         0x00000007, 0x00000900, 0x225b0606, 0x218075b1, 0x00000000,
110         0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000,
111         0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000,
112         0x00000000, 0x00000000, 0x69e9ac47, 0x469652af, 0x49795994,
113         0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f,
114         0x00340020, 0x0080801f, 0x00000020, 0x00248492, 0x00000000,
115         0x7112848b, 0x47c00bff, 0x00000036, 0x00000600, 0x02013169,
116         0x0000001f, 0x00b91612, 0x40000100, 0x21f60000, 0x40000100,
117         0xa0e40000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f,
118         0x00000000, 0x000300a0, 0x00000000, 0x00000000, 0x00000000,
119         0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000,
120         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427,
121         0x00766932, 0x00222222, 0x00040000, 0x77644302, 0x2f97d40c,
122         0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333,
123         0x3333bc43, 0x7a8f5b6b, 0x0000007f, 0xcc979975, 0x00000000,
124         0x80608000, 0x00000000, 0x00127353, 0x00000000, 0x00000000,
125         0x00000000, 0x00000000, 0x6437140a, 0x00000000, 0x00000282,
126         0x30032064, 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16,
127         0x1812362e, 0x322c2220, 0x000e3c24, 0x01081008, 0x00000800,
128         0xf0b50000, 0x30303030, 0x30303030, 0x03903030, 0x30303030,
129         0x30303030, 0x30303030, 0x30303030, 0x00000000, 0x1000dc1f,
130         0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 0x01004800,
131         0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102,
132         0x28160d05, 0x00000008, 0x0fc05656, 0x03c09696, 0x03c09696,
133         0x0c005656, 0x0c005656, 0x0c005656, 0x0c005656, 0x03c09696,
134         0x0c005656, 0x03c09696, 0x03c09696, 0x03c09696, 0x03c09696,
135         0x0000d6d6, 0x0000d6d6, 0x0fc01616, 0xb0000c1c, 0x00000001,
136         0x00000003, 0x00000000, 0x00000300
137 };
138
139 static const struct rtwn_bb_prog rtl8192eu_bb[] = {
140         {
141                 nitems(rtl8192eu_bb_regs),
142                 rtl8192eu_bb_regs,
143                 rtl8192eu_bb_vals,
144                 { 0 },
145                 NULL
146         }
147 };
148
149 static const uint32_t rtl8192eu_agc_vals[] = {
150         0xfb000001, 0xfb010001, 0xfb020001, 0xfb030001, 0xfb040001,
151         0xfb050001, 0xfa060001, 0xf9070001, 0xf8080001, 0xf7090001,
152         0xf60a0001, 0xf50b0001, 0xf40c0001, 0xf30d0001, 0xf20e0001,
153         0xf10f0001, 0xf0100001, 0xef110001, 0xee120001, 0xed130001,
154         0xec140001, 0xeb150001, 0xea160001, 0xe9170001, 0xe8180001,
155         0xe7190001, 0xc81a0001, 0xc71b0001, 0xc61c0001, 0x071d0001,
156         0x061e0001, 0x051f0001, 0x04200001, 0x03210001, 0xaa220001,
157         0xa9230001, 0xa8240001, 0xa7250001, 0xa6260001, 0x85270001,
158         0x84280001, 0x83290001, 0x252a0001, 0x242b0001, 0x232c0001,
159         0x222d0001, 0x672e0001, 0x662f0001, 0x65300001, 0x64310001,
160         0x63320001, 0x62330001, 0x61340001, 0x45350001, 0x44360001,
161         0x43370001, 0x42380001, 0x41390001, 0x403a0001, 0x403b0001,
162         0x403c0001, 0x403d0001, 0x403e0001, 0x403f0001, 0xfb400001,
163         0xfb410001, 0xfb420001, 0xfb430001, 0xfb440001, 0xfb450001,
164         0xfa460001, 0xf9470001, 0xf8480001, 0xf7490001, 0xf64a0001,
165         0xf54b0001, 0xf44c0001, 0xf34d0001, 0xf24e0001, 0xf14f0001,
166         0xf0500001, 0xef510001, 0xee520001, 0xed530001, 0xec540001,
167         0xeb550001, 0xea560001, 0xe9570001, 0xe8580001, 0xe7590001,
168         0xe65a0001, 0xe55b0001, 0xe45c0001, 0xe35d0001, 0xe25e0001,
169         0xe15f0001, 0x8a600001, 0x89610001, 0x88620001, 0x87630001,
170         0x86640001, 0x85650001, 0x84660001, 0x83670001, 0x82680001,
171         0x6b690001, 0x6a6a0001, 0x696b0001, 0x686c0001, 0x676d0001,
172         0x666e0001, 0x656f0001, 0x64700001, 0x63710001, 0x62720001,
173         0x61730001, 0x49740001, 0x48750001, 0x47760001, 0x46770001,
174         0x45780001, 0x44790001, 0x437a0001, 0x427b0001, 0x417c0001,
175         0x407d0001, 0x407e0001, 0x407f0001
176 };
177
178 static const struct rtwn_agc_prog rtl8192eu_agc[] = {
179         {
180                 nitems(rtl8192eu_agc_vals),
181                 rtl8192eu_agc_vals,
182                 { 0 },
183                 NULL
184         }
185 };
186
187 /*
188  * RF initialization values.
189  */
190 static const uint8_t rtl8192eu_rf0_regs[] = {
191         0x7f, 0x81, 0x00, 0x08, 0x18, 0x19, 0x1b, 0x1e, 0x1f, 0x2f, 0x3f,
192         0x42, 0x57, 0x58, 0x67, 0x83, 0xb0, 0xb1, 0xb2, 0xb4, 0xb5, 0xb6,
193         0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbf, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6,
194         0xc7, 0xc8, 0xc9, 0xca, 0xdf, 0xef, 0x51, 0x52, 0x53, 0x56, 0x35,
195         0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0x18, 0x5a, 0x19, 0x34, 0x34,
196         0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x84,
197         0x86, 0x87, 0x8e, 0x8f, 0xef, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
198         0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xef,
199         0x18, 0x1e, 0x1f, 0x00
200 }, rtl8192eu_rf1_regs[] = {
201         0x7f, 0x81, 0x00, 0x08, 0x18, 0x19, 0x1b, 0x1e, 0x1f, 0x2f, 0x3f,
202         0x42, 0x57, 0x58, 0x67, 0x7f, 0x81, 0x83, 0xdf, 0xef, 0x51, 0x52,
203         0x53, 0x56, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0x18, 0x5a,
204         0x19, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
205         0x34, 0x00, 0x84, 0x86, 0x87, 0x8e, 0x8f, 0xef, 0x3b, 0x3b, 0x3b,
206         0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
207         0x3b, 0x3b, 0xef, 0x00, 0x1e, 0x1f, 0x00
208 };
209
210 static const uint32_t rtl8192eu_rf0_vals[] = {
211         0x00082, 0x3fc00, 0x30000, 0x08400, 0x00407, 0x00012, 0x00064,
212         0x80009, 0x00880, 0x1a060, 0x00000, 0x060c0, 0xd0000, 0xbe180,
213         0x01552, 0x00000, 0xff9f1, 0x55418, 0x8cc00, 0x43083, 0x08166,
214         0x0803e, 0x1c69f, 0x0407f, 0x80001, 0x40001, 0x00400, 0xc0000,
215         0x02400, 0x00009, 0x40c91, 0x99999, 0x000a3, 0x88820, 0x76c06,
216         0x00000, 0x80000, 0x00180, 0x001a0, 0x69545, 0x7e45e, 0x00071,
217         0x51ff3, 0x000a8, 0x001e2, 0x002a8, 0x01c24, 0x09c24, 0x11c24,
218         0x19c24, 0x00c07, 0x48000, 0x739d0, 0x0add7, 0x09dd4, 0x08dd1,
219         0x07dce, 0x06dcb, 0x05dc8, 0x04dc5, 0x034cc, 0x0244f, 0x0144c,
220         0x00014, 0x30159, 0x68180, 0x0014e, 0x48e00, 0x65540, 0x88000,
221         0x020a0, 0xf02b0, 0xef7b0, 0xd4fb0, 0xcf060, 0xb0090, 0xa0080,
222         0x90080, 0x8f780, 0x78730, 0x60fb0, 0x5ffa0, 0x40620, 0x37090,
223         0x20080, 0x1f060, 0x0ffb0, 0x000a0, 0x0fc07, 0x00001, 0x80000,
224         0x33e70
225 }, rtl8192eu_rf1_vals[] = {
226         0x00082, 0x3fc00, 0x30000, 0x08400, 0x00407, 0x00012, 0x00064,
227         0x80009, 0x00880, 0x1a060, 0x00000, 0x060c0, 0xd0000, 0xbe180,
228         0x01552, 0x00082, 0x3f000, 0x00000, 0x00180, 0x001a0, 0x69545,
229         0x7e42e, 0x00071, 0x51ff3, 0x000a8, 0x001e0, 0x002a8, 0x01ca8,
230         0x09c24, 0x11c24, 0x19c24, 0x00c07, 0x48000, 0x739d0, 0x0add7,
231         0x09dd4, 0x08dd1, 0x07dce, 0x06dcb, 0x05dc8, 0x04dc5, 0x034cc,
232         0x0244f, 0x0144c, 0x00014, 0x30159, 0x68180, 0x000ce, 0x48a00,
233         0x65540, 0x88000, 0x020a0, 0xf02b0, 0xef7b0, 0xd4fb0, 0xcf060,
234         0xb0090, 0xa0080, 0x90080, 0x8f780, 0x78730, 0x60fb0, 0x5ffa0,
235         0x40620, 0x37090, 0x20080, 0x1f060, 0x0ffb0, 0x000a0, 0x10159,
236         0x00001, 0x80000, 0x33e70
237 };
238
239 static const struct rtwn_rf_prog rtl8192eu_rf[] = {
240         /* RF chain 0. */
241         {
242                 nitems(rtl8192eu_rf0_regs),
243                 rtl8192eu_rf0_regs,
244                 rtl8192eu_rf0_vals,
245                 { 0 },
246                 NULL
247         },
248         { 0, NULL, NULL, { 0 }, NULL },
249         /* RF chain 1. */
250         {
251                 nitems(rtl8192eu_rf1_regs),
252                 rtl8192eu_rf1_regs,
253                 rtl8192eu_rf1_vals,
254                 { 0 },
255                 NULL
256         },
257         { 0, NULL, NULL, { 0 }, NULL }
258 };
259
260 #endif  /* R92E_PRIV_H */