xref: /openbsd-src/sys/dev/ic/ar5211var.h (revision 4b1a56afb1a28c97103da3911d326d1216798a6e)
1*4b1a56afSjsg /*	$OpenBSD: ar5211var.h,v 1.11 2022/01/09 05:42:38 jsg Exp $	*/
2f23d19fdSreyk 
3f23d19fdSreyk /*
4ea5b165aSreyk  * Copyright (c) 2004, 2005, 2006, 2007 Reyk Floeter <reyk@openbsd.org>
5f23d19fdSreyk  *
6f23d19fdSreyk  * Permission to use, copy, modify, and distribute this software for any
7f23d19fdSreyk  * purpose with or without fee is hereby granted, provided that the above
8f23d19fdSreyk  * copyright notice and this permission notice appear in all copies.
9f23d19fdSreyk  *
10f23d19fdSreyk  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11f23d19fdSreyk  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12f23d19fdSreyk  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13f23d19fdSreyk  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14f23d19fdSreyk  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15f23d19fdSreyk  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16f23d19fdSreyk  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17f23d19fdSreyk  */
18f23d19fdSreyk 
19f23d19fdSreyk /*
20f23d19fdSreyk  * Specific definitions for the Atheros AR5001 Wireless LAN chipset
21f23d19fdSreyk  * (AR5211/AR5311).
22f23d19fdSreyk  */
23f23d19fdSreyk 
24f23d19fdSreyk #ifndef _AR5K_AR5211_VAR_H
25f23d19fdSreyk #define _AR5K_AR5211_VAR_H
26f23d19fdSreyk 
27f23d19fdSreyk #include <dev/ic/ar5xxx.h>
28f23d19fdSreyk 
29f23d19fdSreyk /*
30f23d19fdSreyk  * Define a "magic" code for the AR5211 (the HAL layer wants it)
31f23d19fdSreyk  */
32f23d19fdSreyk 
33f23d19fdSreyk #define AR5K_AR5211_MAGIC		0x0000145b /* 5211 */
34f23d19fdSreyk #define AR5K_AR5211_TX_NUM_QUEUES	10
35f23d19fdSreyk 
36f23d19fdSreyk #if BYTE_ORDER == BIG_ENDIAN
37f23d19fdSreyk #define AR5K_AR5211_INIT_CFG	(					\
388fc76842Sreyk 	AR5K_AR5211_CFG_SWTD | AR5K_AR5211_CFG_SWRD			\
39f23d19fdSreyk )
40f23d19fdSreyk #else
41f23d19fdSreyk #define AR5K_AR5211_INIT_CFG	0x00000000
42f23d19fdSreyk #endif
43f23d19fdSreyk 
44f23d19fdSreyk /*
45f23d19fdSreyk  * Internal RX/TX descriptor structures
46*4b1a56afSjsg  * (rX: reserved fields possibly used by future versions of the ar5k chipset)
47f23d19fdSreyk  */
48f23d19fdSreyk 
49f23d19fdSreyk struct ar5k_ar5211_rx_desc {
50f23d19fdSreyk 	/*
51a4490bb3Sreyk 	 * RX control word 0
52f23d19fdSreyk 	 */
53a4490bb3Sreyk 	u_int32_t	rx_control_0;
54a4490bb3Sreyk 
55a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_CTL0			0x00000000
56f23d19fdSreyk 
57f23d19fdSreyk 	/*
58a4490bb3Sreyk 	 * RX control word 1
59f23d19fdSreyk 	 */
60a4490bb3Sreyk 	u_int32_t	rx_control_1;
61a4490bb3Sreyk 
62a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_CTL1_BUF_LEN		0x00000fff
63a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_CTL1_INTREQ			0x00002000
64f23d19fdSreyk } __packed;
65f23d19fdSreyk 
66f23d19fdSreyk struct ar5k_ar5211_rx_status {
67f23d19fdSreyk 	/*
68a4490bb3Sreyk 	 * RX status word 0
69f23d19fdSreyk 	 */
70a4490bb3Sreyk 	u_int32_t	rx_status_0;
71a4490bb3Sreyk 
72a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_DATA_LEN		0x00000fff
73a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_MORE		0x00001000
74a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_RECEIVE_RATE	0x00078000
75a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_RECEIVE_RATE_S	15
76a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_RECEIVE_SIGNAL	0x07f80000
77a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_RECEIVE_SIGNAL_S	19
78a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_RECEIVE_ANTENNA	0x38000000
79a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS0_RECEIVE_ANTENNA_S	27
80f23d19fdSreyk 
81f23d19fdSreyk 	/*
82a4490bb3Sreyk 	 * RX status word 1
83f23d19fdSreyk 	 */
84a4490bb3Sreyk 	u_int32_t	rx_status_1;
85a4490bb3Sreyk 
86a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_DONE		0x00000001
87a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_FRAME_RECEIVE_OK	0x00000002
88a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_CRC_ERROR		0x00000004
89a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_FIFO_OVERRUN	0x00000008
90a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_DECRYPT_CRC_ERROR	0x00000010
91a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_PHY_ERROR		0x000000e0
92a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_PHY_ERROR_S		5
93a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_KEY_INDEX_VALID	0x00000100
94a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_KEY_INDEX		0x00007e00
95a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_KEY_INDEX_S		9
96a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_RECEIVE_TIMESTAMP	0x0fff8000
97a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_RECEIVE_TIMESTAMP_S	15
98a4490bb3Sreyk #define AR5K_AR5211_DESC_RX_STATUS1_KEY_CACHE_MISS	0x10000000
99f23d19fdSreyk } __packed;
100f23d19fdSreyk 
101f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_NONE		0x00
102f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_TIMING		0x20
103f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_PARITY		0x40
104f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_RATE		0x60
105f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_LENGTH		0x80
106f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_64QAM		0xa0
107f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_SERVICE		0xc0
108f23d19fdSreyk #define AR5K_AR5211_DESC_RX_PHY_ERROR_TRANSMITOVR	0xe0
109f23d19fdSreyk 
110f23d19fdSreyk struct ar5k_ar5211_tx_desc {
111f23d19fdSreyk 	/*
112a4490bb3Sreyk 	 * TX control word 0
113f23d19fdSreyk 	 */
114a4490bb3Sreyk 	u_int32_t	tx_control_0;
115a4490bb3Sreyk 
116a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_FRAME_LEN		0x00000fff
117a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_XMIT_RATE		0x003c0000
118a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_XMIT_RATE_S		18
119a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_RTSENA			0x00400000
120a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_VEOL			0x00800000
121a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_CLRDMASK		0x01000000
122a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_ANT_MODE_XMIT		0x1e000000
123a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_ANT_MODE_XMIT_S	25
124a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_INTREQ			0x20000000
125a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL0_ENCRYPT_KEY_VALID	0x40000000
126f23d19fdSreyk 
127f23d19fdSreyk 	/*
128a4490bb3Sreyk 	 * TX control word 1
129f23d19fdSreyk 	 */
130a4490bb3Sreyk 	u_int32_t	tx_control_1;
131a4490bb3Sreyk 
132a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_BUF_LEN		0x00000fff
133a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_MORE			0x00001000
134a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_ENCRYPT_KEY_INDEX	0x000fe000
135a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_ENCRYPT_KEY_INDEX_S	13
136a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_FRAME_TYPE		0x00700000
137a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_FRAME_TYPE_S		20
138a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_CTL1_NOACK			0x00800000
139f23d19fdSreyk } __packed;
140f23d19fdSreyk 
141f23d19fdSreyk struct ar5k_ar5211_tx_status {
142f23d19fdSreyk 	/*
143a4490bb3Sreyk 	 * TX status word 0
144f23d19fdSreyk 	 */
145a4490bb3Sreyk 	u_int32_t	tx_status_0;
146a4490bb3Sreyk 
147a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_FRAME_XMIT_OK	0x00000001
148a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_EXCESSIVE_RETRIES	0x00000002
149a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_FIFO_UNDERRUN	0x00000004
150a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_FILTERED		0x00000008
151a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_RTS_FAIL_COUNT	0x000000f0
152a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_RTS_FAIL_COUNT_S	4
153a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_DATA_FAIL_COUNT	0x00000f00
154a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_DATA_FAIL_COUNT_S	8
155a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_VIRT_COLL_COUNT	0x0000f000
156a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_VIRT_COLL_COUNT_S	12
157a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_SEND_TIMESTAMP	0xffff0000
158a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS0_SEND_TIMESTAMP_S	16
159f23d19fdSreyk 
160f23d19fdSreyk 	/*
161a4490bb3Sreyk 	 * TX status word 1
162f23d19fdSreyk 	 */
163a4490bb3Sreyk 	u_int32_t	tx_status_1;
164a4490bb3Sreyk 
165a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS1_DONE		0x00000001
166a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS1_SEQ_NUM		0x00001ffe
167a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS1_SEQ_NUM_S		1
168a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS1_ACK_SIG_STRENGTH	0x001fe000
169a4490bb3Sreyk #define AR5K_AR5211_DESC_TX_STATUS1_ACK_SIG_STRENGTH_S	13
170f23d19fdSreyk } __packed;
171f23d19fdSreyk 
172f23d19fdSreyk /*
173f23d19fdSreyk  * Public function prototypes
174f23d19fdSreyk  */
175f23d19fdSreyk extern ar5k_attach_t ar5k_ar5211_attach;
176f23d19fdSreyk 
177f23d19fdSreyk /*
178f23d19fdSreyk  * Initial register values which have to be loaded into the
179f23d19fdSreyk  * card at boot time and after each reset.
180f23d19fdSreyk  */
181f23d19fdSreyk 
182f23d19fdSreyk #define AR5K_AR5211_INI {						\
183f23d19fdSreyk 	{ 0x000c, 0x00000000 },						\
184f23d19fdSreyk 	{ 0x0028, 0x84849c9c },						\
185f23d19fdSreyk 	{ 0x002c, 0x7c7c7c7c },						\
186f23d19fdSreyk 	{ 0x0034, 0x00000005 },						\
187f23d19fdSreyk 	{ 0x0040, 0x00000000 },						\
188f23d19fdSreyk 	{ 0x0044, 0x00000008 },						\
189f23d19fdSreyk 	{ 0x0048, 0x00000008 },						\
190f23d19fdSreyk 	{ 0x004c, 0x00000010 },						\
191f23d19fdSreyk 	{ 0x0050, 0x00000000 },						\
192f23d19fdSreyk 	{ 0x0054, 0x0000001f },						\
193f23d19fdSreyk 	{ 0x0800, 0x00000000 },						\
194f23d19fdSreyk 	{ 0x0804, 0x00000000 },						\
195f23d19fdSreyk 	{ 0x0808, 0x00000000 },						\
196f23d19fdSreyk 	{ 0x080c, 0x00000000 },						\
197f23d19fdSreyk 	{ 0x0810, 0x00000000 },						\
198f23d19fdSreyk 	{ 0x0814, 0x00000000 },						\
199f23d19fdSreyk 	{ 0x0818, 0x00000000 },						\
200f23d19fdSreyk 	{ 0x081c, 0x00000000 },						\
201f23d19fdSreyk 	{ 0x0820, 0x00000000 },						\
202f23d19fdSreyk 	{ 0x0824, 0x00000000 },						\
203f23d19fdSreyk 	{ 0x1230, 0x00000000 },						\
204f23d19fdSreyk 	{ 0x8004, 0x00000000 },						\
205f23d19fdSreyk 	{ 0x8008, 0x00000000 },						\
206f23d19fdSreyk 	{ 0x800c, 0x00000000 },						\
207f23d19fdSreyk 	{ 0x8018, 0x00000000 },						\
208f23d19fdSreyk 	{ 0x8024, 0x00000000 },						\
209f23d19fdSreyk 	{ 0x8028, 0x00000030 },						\
210f23d19fdSreyk 	{ 0x802c, 0x0007ffff },						\
211f23d19fdSreyk 	{ 0x8030, 0x01ffffff },						\
212f23d19fdSreyk 	{ 0x8034, 0x00000031 },						\
213f23d19fdSreyk 	{ 0x8038, 0x00000000 },						\
214f23d19fdSreyk 	{ 0x803c, 0x00000000 },						\
215f23d19fdSreyk 	{ 0x8040, 0x00000000 },						\
216f23d19fdSreyk 	{ 0x8044, 0x00000002 },						\
217f23d19fdSreyk 	{ 0x8048, 0x00000000 },						\
218f23d19fdSreyk 	{ 0x8054, 0x00000000 },						\
219f23d19fdSreyk 	{ 0x8058, 0x00000000 },						\
220f23d19fdSreyk         /* PHY registers */						\
221f23d19fdSreyk 	{ 0x9808, 0x00000000 },						\
222f23d19fdSreyk 	{ 0x980c, 0x2d849093 },						\
223f23d19fdSreyk 	{ 0x9810, 0x7d32e000 },						\
224f23d19fdSreyk 	{ 0x9814, 0x00000f6b },						\
225f23d19fdSreyk 	{ 0x981c, 0x00000000 },						\
226f23d19fdSreyk 	{ 0x982c, 0x00026ffe },						\
227f23d19fdSreyk 	{ 0x9830, 0x00000000 },						\
228f23d19fdSreyk 	{ 0x983c, 0x00020100 },						\
229f23d19fdSreyk 	{ 0x9840, 0x206a017a },						\
230f23d19fdSreyk 	{ 0x984c, 0x1284613c },						\
231f23d19fdSreyk 	{ 0x9854, 0x00000859 },						\
232f23d19fdSreyk 	{ 0x9868, 0x409a4190 },						\
233f23d19fdSreyk 	{ 0x986c, 0x050cb081 },						\
234f23d19fdSreyk 	{ 0x9870, 0x0000000f },						\
235f23d19fdSreyk 	{ 0x9874, 0x00000080 },						\
236f23d19fdSreyk 	{ 0x9878, 0x0000000c },						\
237f23d19fdSreyk 	{ 0x9900, 0x00000000 },						\
238f23d19fdSreyk 	{ 0x9904, 0x00000000 },						\
239f23d19fdSreyk 	{ 0x9908, 0x00000000 },						\
240f23d19fdSreyk 	{ 0x990c, 0x00800000 },						\
241f23d19fdSreyk 	{ 0x9910, 0x00000001 },						\
242f23d19fdSreyk 	{ 0x991c, 0x0000092a },						\
243f23d19fdSreyk 	{ 0x9920, 0x00000000 },						\
244f23d19fdSreyk 	{ 0x9924, 0x00058a05 },						\
245f23d19fdSreyk 	{ 0x9928, 0x00000001 },						\
246f23d19fdSreyk 	{ 0x992c, 0x00000000 },						\
247f23d19fdSreyk 	{ 0x9930, 0x00000000 },						\
248f23d19fdSreyk 	{ 0x9934, 0x00000000 },						\
249f23d19fdSreyk 	{ 0x9938, 0x00000000 },						\
250f23d19fdSreyk 	{ 0x993c, 0x0000003f },						\
251f23d19fdSreyk 	{ 0x9940, 0x00000004 },						\
252f23d19fdSreyk 	{ 0x9948, 0x00000000 },						\
253f23d19fdSreyk 	{ 0x994c, 0x00000000 },						\
254f23d19fdSreyk 	{ 0x9950, 0x00000000 },						\
255f23d19fdSreyk 	{ 0x9954, 0x5d50f14c },						\
256f23d19fdSreyk 	{ 0x9958, 0x00000018 },						\
257f23d19fdSreyk 	{ 0x995c, 0x004b6a8e },						\
258f23d19fdSreyk 	{ 0xa184, 0x06ff05ff },						\
259f23d19fdSreyk 	{ 0xa188, 0x07ff07ff },						\
260f23d19fdSreyk 	{ 0xa18c, 0x08ff08ff },						\
261f23d19fdSreyk 	{ 0xa190, 0x09ff09ff },						\
262f23d19fdSreyk 	{ 0xa194, 0x0aff0aff },						\
263f23d19fdSreyk 	{ 0xa198, 0x0bff0bff },						\
264f23d19fdSreyk 	{ 0xa19c, 0x0cff0cff },						\
265f23d19fdSreyk 	{ 0xa1a0, 0x0dff0dff },						\
266f23d19fdSreyk 	{ 0xa1a4, 0x0fff0eff },						\
267f23d19fdSreyk 	{ 0xa1a8, 0x12ff12ff },						\
268f23d19fdSreyk 	{ 0xa1ac, 0x14ff13ff },						\
269f23d19fdSreyk 	{ 0xa1b0, 0x16ff15ff },						\
270f23d19fdSreyk 	{ 0xa1b4, 0x19ff17ff },						\
271f23d19fdSreyk 	{ 0xa1b8, 0x1bff1aff },						\
272f23d19fdSreyk 	{ 0xa1bc, 0x1eff1dff },						\
273f23d19fdSreyk 	{ 0xa1c0, 0x23ff20ff },						\
274f23d19fdSreyk 	{ 0xa1c4, 0x27ff25ff },						\
275f23d19fdSreyk 	{ 0xa1c8, 0x2cff29ff },						\
276f23d19fdSreyk 	{ 0xa1cc, 0x31ff2fff },						\
277f23d19fdSreyk 	{ 0xa1d0, 0x37ff34ff },						\
278f23d19fdSreyk 	{ 0xa1d4, 0x3aff3aff },						\
279f23d19fdSreyk 	{ 0xa1d8, 0x3aff3aff },						\
280f23d19fdSreyk 	{ 0xa1dc, 0x3aff3aff },						\
281f23d19fdSreyk 	{ 0xa1e0, 0x3aff3aff },						\
282f23d19fdSreyk 	{ 0xa1e4, 0x3aff3aff },						\
283f23d19fdSreyk 	{ 0xa1e8, 0x3aff3aff },						\
284f23d19fdSreyk 	{ 0xa1ec, 0x3aff3aff },						\
285f23d19fdSreyk 	{ 0xa1f0, 0x3aff3aff },						\
286f23d19fdSreyk 	{ 0xa1f4, 0x3aff3aff },						\
287f23d19fdSreyk 	{ 0xa1f8, 0x3aff3aff },						\
288f23d19fdSreyk 	{ 0xa1fc, 0x3aff3aff },						\
289f23d19fdSreyk         /* BB gain table (64bytes) */					\
290f23d19fdSreyk 	{ 0x9b00, 0x00000000 },						\
291f23d19fdSreyk 	{ 0x9b04, 0x00000020 },						\
292f23d19fdSreyk 	{ 0x9b08, 0x00000010 },						\
293f23d19fdSreyk 	{ 0x9b0c, 0x00000030 },						\
294f23d19fdSreyk 	{ 0x9b10, 0x00000008 },						\
295f23d19fdSreyk 	{ 0x9b14, 0x00000028 },						\
296f23d19fdSreyk 	{ 0x9b18, 0x00000004 },						\
297f23d19fdSreyk 	{ 0x9b1c, 0x00000024 },						\
298f23d19fdSreyk 	{ 0x9b20, 0x00000014 },						\
299f23d19fdSreyk 	{ 0x9b24, 0x00000034 },						\
300f23d19fdSreyk 	{ 0x9b28, 0x0000000c },						\
301f23d19fdSreyk 	{ 0x9b2c, 0x0000002c },						\
302f23d19fdSreyk 	{ 0x9b30, 0x00000002 },						\
303f23d19fdSreyk 	{ 0x9b34, 0x00000022 },						\
304f23d19fdSreyk 	{ 0x9b38, 0x00000012 },						\
305f23d19fdSreyk 	{ 0x9b3c, 0x00000032 },						\
306f23d19fdSreyk 	{ 0x9b40, 0x0000000a },						\
307f23d19fdSreyk 	{ 0x9b44, 0x0000002a },						\
308f23d19fdSreyk 	{ 0x9b48, 0x00000006 },						\
309f23d19fdSreyk 	{ 0x9b4c, 0x00000026 },						\
310f23d19fdSreyk 	{ 0x9b50, 0x00000016 },						\
311f23d19fdSreyk 	{ 0x9b54, 0x00000036 },						\
312f23d19fdSreyk 	{ 0x9b58, 0x0000000e },						\
313f23d19fdSreyk 	{ 0x9b5c, 0x0000002e },						\
314f23d19fdSreyk 	{ 0x9b60, 0x00000001 },						\
315f23d19fdSreyk 	{ 0x9b64, 0x00000021 },						\
316f23d19fdSreyk 	{ 0x9b68, 0x00000011 },						\
317f23d19fdSreyk 	{ 0x9b6c, 0x00000031 },						\
318f23d19fdSreyk 	{ 0x9b70, 0x00000009 },						\
319f23d19fdSreyk 	{ 0x9b74, 0x00000029 },						\
320f23d19fdSreyk 	{ 0x9b78, 0x00000005 },						\
321f23d19fdSreyk 	{ 0x9b7c, 0x00000025 },						\
322f23d19fdSreyk 	{ 0x9b80, 0x00000015 },						\
323f23d19fdSreyk 	{ 0x9b84, 0x00000035 },						\
324f23d19fdSreyk 	{ 0x9b88, 0x0000000d },						\
325f23d19fdSreyk 	{ 0x9b8c, 0x0000002d },						\
326f23d19fdSreyk 	{ 0x9b90, 0x00000003 },						\
327f23d19fdSreyk 	{ 0x9b94, 0x00000023 },						\
328f23d19fdSreyk 	{ 0x9b98, 0x00000013 },						\
329f23d19fdSreyk 	{ 0x9b9c, 0x00000033 },						\
330f23d19fdSreyk 	{ 0x9ba0, 0x0000000b },						\
331f23d19fdSreyk 	{ 0x9ba4, 0x0000002b },						\
332f23d19fdSreyk 	{ 0x9ba8, 0x0000002b },						\
333f23d19fdSreyk 	{ 0x9bac, 0x0000002b },						\
334f23d19fdSreyk 	{ 0x9bb0, 0x0000002b },						\
335f23d19fdSreyk 	{ 0x9bb4, 0x0000002b },						\
336f23d19fdSreyk 	{ 0x9bb8, 0x0000002b },						\
337f23d19fdSreyk 	{ 0x9bbc, 0x0000002b },						\
338f23d19fdSreyk 	{ 0x9bc0, 0x0000002b },						\
339f23d19fdSreyk 	{ 0x9bc4, 0x0000002b },						\
340f23d19fdSreyk 	{ 0x9bc8, 0x0000002b },						\
341f23d19fdSreyk 	{ 0x9bcc, 0x0000002b },						\
342f23d19fdSreyk 	{ 0x9bd0, 0x0000002b },						\
343f23d19fdSreyk 	{ 0x9bd4, 0x0000002b },						\
344f23d19fdSreyk 	{ 0x9bd8, 0x0000002b },						\
345f23d19fdSreyk 	{ 0x9bdc, 0x0000002b },						\
346f23d19fdSreyk 	{ 0x9be0, 0x0000002b },						\
347f23d19fdSreyk 	{ 0x9be4, 0x0000002b },						\
348f23d19fdSreyk 	{ 0x9be8, 0x0000002b },						\
349f23d19fdSreyk 	{ 0x9bec, 0x0000002b },						\
350f23d19fdSreyk 	{ 0x9bf0, 0x0000002b },						\
351f23d19fdSreyk 	{ 0x9bf4, 0x0000002b },						\
352f23d19fdSreyk 	{ 0x9bf8, 0x00000002 },						\
353f23d19fdSreyk 	{ 0x9bfc, 0x00000016 },						\
354f23d19fdSreyk         /* PHY activation */						\
355f23d19fdSreyk 	{ 0x98d4, 0x00000020 },						\
356f23d19fdSreyk 	{ 0x98d8, 0x00601068 },						\
357f23d19fdSreyk }
358f23d19fdSreyk 
359f23d19fdSreyk struct ar5k_ar5211_ini_mode {
360f23d19fdSreyk 	u_int16_t	mode_register;
361f23d19fdSreyk 	u_int32_t	mode_value[4];
362f23d19fdSreyk };
363f23d19fdSreyk 
364f23d19fdSreyk #define AR5K_AR5211_INI_MODE {						\
3656eac2691Sreyk 	{ 0x0030, { 0x00000017, 0x00000017, 0x00000017, 0x00000017 } },	\
366f23d19fdSreyk 	{ 0x1040, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },	\
367f23d19fdSreyk 	{ 0x1044, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },	\
368f23d19fdSreyk 	{ 0x1048, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },	\
369f23d19fdSreyk 	{ 0x104c, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },	\
370f23d19fdSreyk 	{ 0x1050, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },	\
371f23d19fdSreyk 	{ 0x1054, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },	\
372f23d19fdSreyk 	{ 0x1058, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },	\
373f23d19fdSreyk 	{ 0x105c, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },	\
374f23d19fdSreyk 	{ 0x1060, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },	\
375f23d19fdSreyk 	{ 0x1064, { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },	\
376f23d19fdSreyk 	{ 0x1070, { 0x00000168, 0x000001e0, 0x000001b8, 0x00000168 } },	\
377f23d19fdSreyk 	{ 0x1030, { 0x00000230, 0x000001e0, 0x000000b0, 0x00000230 } },	\
378f23d19fdSreyk 	{ 0x10b0, { 0x00000d98, 0x00001180, 0x00001f48, 0x00000d98 } },	\
379f23d19fdSreyk 	{ 0x10f0, { 0x0000a0e0, 0x00014068, 0x00005880, 0x0000a0e0 } },	\
380f23d19fdSreyk 	{ 0x8014, { 0x04000400, 0x08000800, 0x20003000, 0x04000400 } },	\
381f23d19fdSreyk 	{ 0x801c, { 0x0e8d8fa7, 0x0e8d8fcf, 0x01608f95, 0x0e8d8fa7 } },	\
382f23d19fdSreyk 	{ 0x9804, { 0x00000000, 0x00000003, 0x00000000, 0x00000000 } },	\
383f23d19fdSreyk 	{ 0x9820, { 0x02020200, 0x02020200, 0x02010200, 0x02020200 } },	\
384f23d19fdSreyk 	{ 0x9824, { 0x00000e0e, 0x00000e0e, 0x00000707, 0x00000e0e } },	\
385f23d19fdSreyk 	{ 0x9828, { 0x0a020001, 0x0a020001, 0x05010000, 0x0a020001 } },	\
386f23d19fdSreyk 	{ 0x9834, { 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e } },	\
387f23d19fdSreyk 	{ 0x9838, { 0x00000007, 0x00000007, 0x0000000b, 0x0000000b } },	\
388f23d19fdSreyk 	{ 0x9844, { 0x1372169c, 0x137216a5, 0x137216a8, 0x1372169c } },	\
389f23d19fdSreyk 	{ 0x9848, { 0x0018ba67, 0x0018ba67, 0x0018ba69, 0x0018ba69 } },	\
390f23d19fdSreyk 	{ 0x9850, { 0x0c28b4e0, 0x0c28b4e0, 0x0c28b4e0, 0x0c28b4e0 } },	\
391f23d19fdSreyk 	{ 0x9858, { 0x7e800d2e, 0x7e800d2e, 0x7ec00d2e, 0x7e800d2e } },	\
392f23d19fdSreyk 	{ 0x985c, { 0x31375d5e, 0x31375d5e, 0x313a5d5e, 0x31375d5e } },	\
393f23d19fdSreyk 	{ 0x9860, { 0x0000bd10, 0x0000bd10, 0x0000bd38, 0x0000bd10 } },	\
394f23d19fdSreyk 	{ 0x9864, { 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 } },	\
395f23d19fdSreyk 	{ 0x9914, { 0x00002710, 0x00002710, 0x0000157c, 0x00002710 } },	\
396f23d19fdSreyk 	{ 0x9918, { 0x00000190, 0x00000190, 0x00000084, 0x00000190 } },	\
397f23d19fdSreyk 	{ 0x9944, { 0x6fe01020, 0x6fe01020, 0x6fe00920, 0x6fe01020 } },	\
398f23d19fdSreyk 	{ 0xa180, { 0x05ff14ff, 0x05ff14ff, 0x05ff14ff, 0x05ff19ff } },	\
399f23d19fdSreyk 	{ 0x98d4, { 0x00000010, 0x00000014, 0x00000010, 0x00000010 } },	\
400f23d19fdSreyk }
401f23d19fdSreyk 
402b24e2ae1Sreyk struct ar5k_ar5211_ini_rf {
403b24e2ae1Sreyk 	u_int16_t	rf_register;
404b24e2ae1Sreyk 	u_int32_t	rf_value[2];
405b24e2ae1Sreyk };
406b24e2ae1Sreyk 
407b24e2ae1Sreyk #define AR5K_AR5211_INI_RF	{					\
408b24e2ae1Sreyk 	{ 0x0000a204, { 0x00000000, 0x00000000 } },			\
409b24e2ae1Sreyk 	{ 0x0000a208, { 0x503e4646, 0x503e4646 } },			\
410b24e2ae1Sreyk 	{ 0x0000a20c, { 0x6480416c, 0x6480416c } },			\
411b24e2ae1Sreyk 	{ 0x0000a210, { 0x0199a003, 0x0199a003 } },			\
412b24e2ae1Sreyk 	{ 0x0000a214, { 0x044cd610, 0x044cd610 } },			\
413b24e2ae1Sreyk 	{ 0x0000a218, { 0x13800040, 0x13800040 } },			\
414b24e2ae1Sreyk 	{ 0x0000a21c, { 0x1be00060, 0x1be00060 } },			\
415b24e2ae1Sreyk 	{ 0x0000a220, { 0x0c53800a, 0x0c53800a } },			\
416b24e2ae1Sreyk 	{ 0x0000a224, { 0x0014df3b, 0x0014df3b } },			\
417b24e2ae1Sreyk 	{ 0x0000a228, { 0x000001b5, 0x000001b5 } },			\
418b24e2ae1Sreyk 	{ 0x0000a22c, { 0x00000020, 0x00000020 } },			\
419b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
420b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
421b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
422b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
423b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
424b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
425b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
426b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
427b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
428b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
429b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
430b24e2ae1Sreyk 	{ 0x0000989c, { 0x00380000, 0x00380000 } },			\
431b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
432b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
433b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
434b24e2ae1Sreyk 	{ 0x0000989c, { 0x000400f9, 0x000400f9 } },			\
435b24e2ae1Sreyk 	{ 0x000098d4, { 0x00000000, 0x00000004 } },			\
436b24e2ae1Sreyk 									\
437b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
438b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
439b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
440b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
441b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
442b24e2ae1Sreyk 	{ 0x0000989c, { 0x10000000, 0x10000000 } },			\
443b24e2ae1Sreyk 	{ 0x0000989c, { 0x04000000, 0x04000000 } },			\
444b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
445b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
446b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x00000000 } },			\
447b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000000, 0x0a000000 } },			\
448b24e2ae1Sreyk 	{ 0x0000989c, { 0x00380080, 0x02380080 } },			\
449b24e2ae1Sreyk 	{ 0x0000989c, { 0x00020006, 0x00000006 } },			\
450b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000092, 0x00000092 } },			\
451b24e2ae1Sreyk 	{ 0x0000989c, { 0x000000a0, 0x000000a0 } },			\
452b24e2ae1Sreyk 	{ 0x0000989c, { 0x00040007, 0x00040007 } },			\
453b24e2ae1Sreyk 	{ 0x000098d4, { 0x0000001a, 0x0000001a } },			\
454b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000048, 0x00000048 } },			\
455b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000010, 0x00000010 } },			\
456b24e2ae1Sreyk 	{ 0x0000989c, { 0x00000008, 0x00000008 } },			\
457b24e2ae1Sreyk 	{ 0x0000989c, { 0x0000000f, 0x0000000f } },			\
458b24e2ae1Sreyk 	{ 0x0000989c, { 0x000000f2, 0x00000062 } },			\
459b24e2ae1Sreyk 	{ 0x0000989c, { 0x0000904f, 0x0000904c } },			\
460b24e2ae1Sreyk 	{ 0x0000989c, { 0x0000125a, 0x0000129a } },			\
461b24e2ae1Sreyk 	{ 0x000098cc, { 0x0000000e, 0x0000000f } },			\
462b24e2ae1Sreyk }
463b24e2ae1Sreyk 
464f23d19fdSreyk #endif /* _AR5K_AR5211_VAR_H */
465