]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/rtwn/rtl8192e/r92e_priv.h
Import DTS includes from 4.19
[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 /*
66  * Baseband initialization values.
67  */
68 static const uint16_t rtl8192eu_bb_regs[] = {
69         0x800, 0x804, 0x808, 0x80c, 0x810, 0x814, 0x818, 0x81c, 0x820,
70         0x824, 0x828, 0x82c, 0x830, 0x834, 0x838, 0x83c, 0x840, 0x844,
71         0x848, 0x84c, 0x850, 0x854, 0x858, 0x85c, 0x860, 0x864, 0x868,
72         0x86c, 0x870, 0x874, 0x878, 0x87c, 0x880, 0x884, 0x888, 0x88c,
73         0x890, 0x894, 0x898, 0x900, 0x904, 0x908, 0x90c, 0x910, 0x914,
74         0x918, 0x91c, 0x924, 0x928, 0x92c, 0x930, 0x934, 0x938, 0x93c,
75         0x940, 0x944, 0x94c, 0xa00, 0xa04, 0xa08, 0xa0c, 0xa10, 0xa14,
76         0xa18, 0xa1c, 0xa20, 0xa24, 0xa28, 0xa2c, 0xa70, 0xa74, 0xa78,
77         0xa7c, 0xa80, 0xb38, 0xc00, 0xc04, 0xc08, 0xc0c, 0xc10, 0xc14,
78         0xc18, 0xc1c, 0xc20, 0xc24, 0xc28, 0xc2c, 0xc30, 0xc34, 0xc38,
79         0xc3c, 0xc40, 0xc44, 0xc48, 0xc4c, 0xc50, 0xc54, 0xc58, 0xc5c,
80         0xc60, 0xc64, 0xc68, 0xc6c, 0xc70, 0xc74, 0xc78, 0xc7c, 0xc80,
81         0xc84, 0xc88, 0xc8c, 0xc90, 0xc94, 0xc98, 0xc9c, 0xca0, 0xca4,
82         0xca8, 0xcac, 0xcb0, 0xcb4, 0xcb8, 0xcbc, 0xcc0, 0xcc4, 0xcc8,
83         0xccc, 0xcd0, 0xcd4, 0xcd8, 0xcdc, 0xce0, 0xce4, 0xce8, 0xcec,
84         0xd00, 0xd04, 0xd08, 0xd0c, 0xd10, 0xd14, 0xd18, 0xd1c, 0xd2c,
85         0xd30, 0xd34, 0xd38, 0xd3c, 0xd40, 0xd44, 0xd48, 0xd4c, 0xd50,
86         0xd54, 0xd58, 0xd5c, 0xd60, 0xd64, 0xd68, 0xd6c, 0xd70, 0xd74,
87         0xd78, 0xd80, 0xd84, 0xd88, 0xe00, 0xe04, 0xe08, 0xe10, 0xe14,
88         0xe18, 0xe1c, 0xe28, 0xe30, 0xe34, 0xe38, 0xe3c, 0xe40, 0xe44,
89         0xe48, 0xe4c, 0xe50, 0xe54, 0xe58, 0xe5c, 0xe60, 0xe68, 0xe6c,
90         0xe70, 0xe74, 0xe78, 0xe7c, 0xe80, 0xe84, 0xe88, 0xe8c, 0xed0,
91         0xed4, 0xed8, 0xedc, 0xee0, 0xeec, 0xee4, 0xee8, 0xf14, 0xf4c,
92         0xf00
93 };
94
95 static const uint32_t rtl8192eu_bb_vals[] = {
96         0x80040000, 0x00000003, 0x0000fc00, 0x0000000a, 0x10001331,
97         0x020c3d10, 0x02220385, 0x00000000, 0x01000100, 0x00390204,
98         0x01000100, 0x00390204, 0x32323232, 0x30303030, 0x30303030,
99         0x30303030, 0x00010000, 0x00010000, 0x28282828, 0x28282828,
100         0x00000000, 0x00000000, 0x009a009a, 0x01000014, 0x66f60000,
101         0x061f0000, 0x30303030, 0x30303030, 0x00000000, 0x55004200,
102         0x08080808, 0x00000000, 0xb0000c1c, 0x00000001, 0x00000000,
103         0xcc0000c0, 0x00000800, 0xfffffffe, 0x40302010, 0x00000000,
104         0x00000023, 0x00000000, 0x81121313, 0x806c0001, 0x00000001,
105         0x00000000, 0x00010000, 0x00000001, 0x00000000, 0x00000000,
106         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
107         0x00000000, 0x00000008, 0x00d0c7c8, 0x81ff000c, 0x8c838300,
108         0x2e68120f, 0x95009b78, 0x1114d028, 0x00881117, 0x89140f00,
109         0x1a1b0000, 0x090e1317, 0x00000204, 0x00d30000, 0x101fff00,
110         0x00000007, 0x00000900, 0x225b0606, 0x218075b1, 0x00000000,
111         0x48071d40, 0x03a05633, 0x000000e4, 0x6c6c6c6c, 0x08800000,
112         0x40000100, 0x08800000, 0x40000100, 0x00000000, 0x00000000,
113         0x00000000, 0x00000000, 0x69e9ac47, 0x469652af, 0x49795994,
114         0x0a97971c, 0x1f7c403f, 0x000100b7, 0xec020107, 0x007f037f,
115         0x00340020, 0x0080801f, 0x00000020, 0x00248492, 0x00000000,
116         0x7112848b, 0x47c00bff, 0x00000036, 0x00000600, 0x02013169,
117         0x0000001f, 0x00b91612, 0x40000100, 0x21f60000, 0x40000100,
118         0xa0e40000, 0x00121820, 0x00000000, 0x00121820, 0x00007f7f,
119         0x00000000, 0x000300a0, 0x00000000, 0x00000000, 0x00000000,
120         0x00000000, 0x00000000, 0x28000000, 0x00000000, 0x00000000,
121         0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x64b22427,
122         0x00766932, 0x00222222, 0x00040000, 0x77644302, 0x2f97d40c,
123         0x00080740, 0x00020403, 0x0000907f, 0x20010201, 0xa0633333,
124         0x3333bc43, 0x7a8f5b6b, 0x0000007f, 0xcc979975, 0x00000000,
125         0x80608000, 0x00000000, 0x00127353, 0x00000000, 0x00000000,
126         0x00000000, 0x00000000, 0x6437140a, 0x00000000, 0x00000282,
127         0x30032064, 0x4653de68, 0x04518a3c, 0x00002101, 0x2a201c16,
128         0x1812362e, 0x322c2220, 0x000e3c24, 0x01081008, 0x00000800,
129         0xf0b50000, 0x30303030, 0x30303030, 0x03903030, 0x30303030,
130         0x30303030, 0x30303030, 0x30303030, 0x00000000, 0x1000dc1f,
131         0x10008c1f, 0x02140102, 0x681604c2, 0x01007c00, 0x01004800,
132         0xfb000000, 0x000028d1, 0x1000dc1f, 0x10008c1f, 0x02140102,
133         0x28160d05, 0x00000008, 0x0fc05656, 0x03c09696, 0x03c09696,
134         0x0c005656, 0x0c005656, 0x0c005656, 0x0c005656, 0x03c09696,
135         0x0c005656, 0x03c09696, 0x03c09696, 0x03c09696, 0x03c09696,
136         0x0000d6d6, 0x0000d6d6, 0x0fc01616, 0xb0000c1c, 0x00000001,
137         0x00000003, 0x00000000, 0x00000300
138 };
139
140 static const struct rtwn_bb_prog rtl8192eu_bb[] = {
141         {
142                 nitems(rtl8192eu_bb_regs),
143                 rtl8192eu_bb_regs,
144                 rtl8192eu_bb_vals,
145                 { 0 },
146                 NULL
147         }
148 };
149
150
151 static const uint32_t rtl8192eu_agc_vals[] = {
152         0xfb000001, 0xfb010001, 0xfb020001, 0xfb030001, 0xfb040001,
153         0xfb050001, 0xfa060001, 0xf9070001, 0xf8080001, 0xf7090001,
154         0xf60a0001, 0xf50b0001, 0xf40c0001, 0xf30d0001, 0xf20e0001,
155         0xf10f0001, 0xf0100001, 0xef110001, 0xee120001, 0xed130001,
156         0xec140001, 0xeb150001, 0xea160001, 0xe9170001, 0xe8180001,
157         0xe7190001, 0xc81a0001, 0xc71b0001, 0xc61c0001, 0x071d0001,
158         0x061e0001, 0x051f0001, 0x04200001, 0x03210001, 0xaa220001,
159         0xa9230001, 0xa8240001, 0xa7250001, 0xa6260001, 0x85270001,
160         0x84280001, 0x83290001, 0x252a0001, 0x242b0001, 0x232c0001,
161         0x222d0001, 0x672e0001, 0x662f0001, 0x65300001, 0x64310001,
162         0x63320001, 0x62330001, 0x61340001, 0x45350001, 0x44360001,
163         0x43370001, 0x42380001, 0x41390001, 0x403a0001, 0x403b0001,
164         0x403c0001, 0x403d0001, 0x403e0001, 0x403f0001, 0xfb400001,
165         0xfb410001, 0xfb420001, 0xfb430001, 0xfb440001, 0xfb450001,
166         0xfa460001, 0xf9470001, 0xf8480001, 0xf7490001, 0xf64a0001,
167         0xf54b0001, 0xf44c0001, 0xf34d0001, 0xf24e0001, 0xf14f0001,
168         0xf0500001, 0xef510001, 0xee520001, 0xed530001, 0xec540001,
169         0xeb550001, 0xea560001, 0xe9570001, 0xe8580001, 0xe7590001,
170         0xe65a0001, 0xe55b0001, 0xe45c0001, 0xe35d0001, 0xe25e0001,
171         0xe15f0001, 0x8a600001, 0x89610001, 0x88620001, 0x87630001,
172         0x86640001, 0x85650001, 0x84660001, 0x83670001, 0x82680001,
173         0x6b690001, 0x6a6a0001, 0x696b0001, 0x686c0001, 0x676d0001,
174         0x666e0001, 0x656f0001, 0x64700001, 0x63710001, 0x62720001,
175         0x61730001, 0x49740001, 0x48750001, 0x47760001, 0x46770001,
176         0x45780001, 0x44790001, 0x437a0001, 0x427b0001, 0x417c0001,
177         0x407d0001, 0x407e0001, 0x407f0001
178 };
179
180 static const struct rtwn_agc_prog rtl8192eu_agc[] = {
181         {
182                 nitems(rtl8192eu_agc_vals),
183                 rtl8192eu_agc_vals,
184                 { 0 },
185                 NULL
186         }
187 };
188
189 /*
190  * RF initialization values.
191  */
192 static const uint8_t rtl8192eu_rf0_regs[] = {
193         0x7f, 0x81, 0x00, 0x08, 0x18, 0x19, 0x1b, 0x1e, 0x1f, 0x2f, 0x3f,
194         0x42, 0x57, 0x58, 0x67, 0x83, 0xb0, 0xb1, 0xb2, 0xb4, 0xb5, 0xb6,
195         0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbf, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6,
196         0xc7, 0xc8, 0xc9, 0xca, 0xdf, 0xef, 0x51, 0x52, 0x53, 0x56, 0x35,
197         0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0x18, 0x5a, 0x19, 0x34, 0x34,
198         0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x00, 0x84,
199         0x86, 0x87, 0x8e, 0x8f, 0xef, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
200         0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xef,
201         0x18, 0x1e, 0x1f, 0x00
202 }, rtl8192eu_rf1_regs[] = {
203         0x7f, 0x81, 0x00, 0x08, 0x18, 0x19, 0x1b, 0x1e, 0x1f, 0x2f, 0x3f,
204         0x42, 0x57, 0x58, 0x67, 0x7f, 0x81, 0x83, 0xdf, 0xef, 0x51, 0x52,
205         0x53, 0x56, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0x18, 0x5a,
206         0x19, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34,
207         0x34, 0x00, 0x84, 0x86, 0x87, 0x8e, 0x8f, 0xef, 0x3b, 0x3b, 0x3b,
208         0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b,
209         0x3b, 0x3b, 0xef, 0x00, 0x1e, 0x1f, 0x00
210 };
211
212 static const uint32_t rtl8192eu_rf0_vals[] = {
213         0x00082, 0x3fc00, 0x30000, 0x08400, 0x00407, 0x00012, 0x00064,
214         0x80009, 0x00880, 0x1a060, 0x00000, 0x060c0, 0xd0000, 0xbe180,
215         0x01552, 0x00000, 0xff9f1, 0x55418, 0x8cc00, 0x43083, 0x08166,
216         0x0803e, 0x1c69f, 0x0407f, 0x80001, 0x40001, 0x00400, 0xc0000,
217         0x02400, 0x00009, 0x40c91, 0x99999, 0x000a3, 0x88820, 0x76c06,
218         0x00000, 0x80000, 0x00180, 0x001a0, 0x69545, 0x7e45e, 0x00071,
219         0x51ff3, 0x000a8, 0x001e2, 0x002a8, 0x01c24, 0x09c24, 0x11c24,
220         0x19c24, 0x00c07, 0x48000, 0x739d0, 0x0add7, 0x09dd4, 0x08dd1,
221         0x07dce, 0x06dcb, 0x05dc8, 0x04dc5, 0x034cc, 0x0244f, 0x0144c,
222         0x00014, 0x30159, 0x68180, 0x0014e, 0x48e00, 0x65540, 0x88000,
223         0x020a0, 0xf02b0, 0xef7b0, 0xd4fb0, 0xcf060, 0xb0090, 0xa0080,
224         0x90080, 0x8f780, 0x78730, 0x60fb0, 0x5ffa0, 0x40620, 0x37090,
225         0x20080, 0x1f060, 0x0ffb0, 0x000a0, 0x0fc07, 0x00001, 0x80000,
226         0x33e70
227 }, rtl8192eu_rf1_vals[] = {
228         0x00082, 0x3fc00, 0x30000, 0x08400, 0x00407, 0x00012, 0x00064,
229         0x80009, 0x00880, 0x1a060, 0x00000, 0x060c0, 0xd0000, 0xbe180,
230         0x01552, 0x00082, 0x3f000, 0x00000, 0x00180, 0x001a0, 0x69545,
231         0x7e42e, 0x00071, 0x51ff3, 0x000a8, 0x001e0, 0x002a8, 0x01ca8,
232         0x09c24, 0x11c24, 0x19c24, 0x00c07, 0x48000, 0x739d0, 0x0add7,
233         0x09dd4, 0x08dd1, 0x07dce, 0x06dcb, 0x05dc8, 0x04dc5, 0x034cc,
234         0x0244f, 0x0144c, 0x00014, 0x30159, 0x68180, 0x000ce, 0x48a00,
235         0x65540, 0x88000, 0x020a0, 0xf02b0, 0xef7b0, 0xd4fb0, 0xcf060,
236         0xb0090, 0xa0080, 0x90080, 0x8f780, 0x78730, 0x60fb0, 0x5ffa0,
237         0x40620, 0x37090, 0x20080, 0x1f060, 0x0ffb0, 0x000a0, 0x10159,
238         0x00001, 0x80000, 0x33e70
239 };
240
241 static const struct rtwn_rf_prog rtl8192eu_rf[] = {
242         /* RF chain 0. */
243         {
244                 nitems(rtl8192eu_rf0_regs),
245                 rtl8192eu_rf0_regs,
246                 rtl8192eu_rf0_vals,
247                 { 0 },
248                 NULL
249         },
250         { 0, NULL, NULL, { 0 }, NULL },
251         /* RF chain 1. */
252         {
253                 nitems(rtl8192eu_rf1_regs),
254                 rtl8192eu_rf1_regs,
255                 rtl8192eu_rf1_vals,
256                 { 0 },
257                 NULL
258         },
259         { 0, NULL, NULL, { 0 }, NULL }
260 };
261
262 #endif  /* R92E_PRIV_H */