xref: /linux/drivers/net/wireless/ath/ath5k/initvals.c (revision 13b81559200b8e54473e5b140323cbb5f2bb21c0)
1203c4805SLuis R. Rodriguez /*
2203c4805SLuis R. Rodriguez  * Initial register settings functions
3203c4805SLuis R. Rodriguez  *
4203c4805SLuis R. Rodriguez  * Copyright (c) 2004-2007 Reyk Floeter <reyk@openbsd.org>
5203c4805SLuis R. Rodriguez  * Copyright (c) 2006-2009 Nick Kossifidis <mickflemm@gmail.com>
6203c4805SLuis R. Rodriguez  * Copyright (c) 2007-2008 Jiri Slaby <jirislaby@gmail.com>
7203c4805SLuis R. Rodriguez  *
8203c4805SLuis R. Rodriguez  * Permission to use, copy, modify, and distribute this software for any
9203c4805SLuis R. Rodriguez  * purpose with or without fee is hereby granted, provided that the above
10203c4805SLuis R. Rodriguez  * copyright notice and this permission notice appear in all copies.
11203c4805SLuis R. Rodriguez  *
12203c4805SLuis R. Rodriguez  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13203c4805SLuis R. Rodriguez  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14203c4805SLuis R. Rodriguez  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
15203c4805SLuis R. Rodriguez  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16203c4805SLuis R. Rodriguez  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17203c4805SLuis R. Rodriguez  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18203c4805SLuis R. Rodriguez  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19203c4805SLuis R. Rodriguez  *
20203c4805SLuis R. Rodriguez  */
21203c4805SLuis R. Rodriguez 
22203c4805SLuis R. Rodriguez #include "ath5k.h"
23203c4805SLuis R. Rodriguez #include "reg.h"
24203c4805SLuis R. Rodriguez #include "debug.h"
25203c4805SLuis R. Rodriguez #include "base.h"
26203c4805SLuis R. Rodriguez 
27203c4805SLuis R. Rodriguez /*
28203c4805SLuis R. Rodriguez  * Mode-independent initial register writes
29203c4805SLuis R. Rodriguez  */
30203c4805SLuis R. Rodriguez 
31203c4805SLuis R. Rodriguez struct ath5k_ini {
32203c4805SLuis R. Rodriguez 	u16	ini_register;
33203c4805SLuis R. Rodriguez 	u32	ini_value;
34203c4805SLuis R. Rodriguez 
35203c4805SLuis R. Rodriguez 	enum {
36203c4805SLuis R. Rodriguez 		AR5K_INI_WRITE = 0,	/* Default */
37203c4805SLuis R. Rodriguez 		AR5K_INI_READ = 1,	/* Cleared on read */
38203c4805SLuis R. Rodriguez 	} ini_mode;
39203c4805SLuis R. Rodriguez };
40203c4805SLuis R. Rodriguez 
41203c4805SLuis R. Rodriguez /*
42203c4805SLuis R. Rodriguez  * Mode specific initial register values
43203c4805SLuis R. Rodriguez  */
44203c4805SLuis R. Rodriguez 
45203c4805SLuis R. Rodriguez struct ath5k_ini_mode {
46203c4805SLuis R. Rodriguez 	u16	mode_register;
47203c4805SLuis R. Rodriguez 	u32	mode_value[5];
48203c4805SLuis R. Rodriguez };
49203c4805SLuis R. Rodriguez 
50203c4805SLuis R. Rodriguez /* Initial register settings for AR5210 */
51203c4805SLuis R. Rodriguez static const struct ath5k_ini ar5210_ini[] = {
52203c4805SLuis R. Rodriguez 	/* PCU and MAC registers */
53203c4805SLuis R. Rodriguez 	{ AR5K_NOQCU_TXDP0,	0 },
54203c4805SLuis R. Rodriguez 	{ AR5K_NOQCU_TXDP1,	0 },
55203c4805SLuis R. Rodriguez 	{ AR5K_RXDP,		0 },
56203c4805SLuis R. Rodriguez 	{ AR5K_CR,		0 },
57203c4805SLuis R. Rodriguez 	{ AR5K_ISR,		0, AR5K_INI_READ },
58203c4805SLuis R. Rodriguez 	{ AR5K_IMR,		0 },
59203c4805SLuis R. Rodriguez 	{ AR5K_IER,		AR5K_IER_DISABLE },
60203c4805SLuis R. Rodriguez 	{ AR5K_BSR,		0, AR5K_INI_READ },
61203c4805SLuis R. Rodriguez 	{ AR5K_TXCFG,		AR5K_DMASIZE_128B },
62203c4805SLuis R. Rodriguez 	{ AR5K_RXCFG,		AR5K_DMASIZE_128B },
63203c4805SLuis R. Rodriguez 	{ AR5K_CFG,		AR5K_INIT_CFG },
64203c4805SLuis R. Rodriguez 	{ AR5K_TOPS,		8 },
65203c4805SLuis R. Rodriguez 	{ AR5K_RXNOFRM,		8 },
66203c4805SLuis R. Rodriguez 	{ AR5K_RPGTO,		0 },
67203c4805SLuis R. Rodriguez 	{ AR5K_TXNOFRM,		0 },
68203c4805SLuis R. Rodriguez 	{ AR5K_SFR,		0 },
69203c4805SLuis R. Rodriguez 	{ AR5K_MIBC,		0 },
70203c4805SLuis R. Rodriguez 	{ AR5K_MISC,		0 },
71203c4805SLuis R. Rodriguez 	{ AR5K_RX_FILTER_5210,	0 },
72203c4805SLuis R. Rodriguez 	{ AR5K_MCAST_FILTER0_5210, 0 },
73203c4805SLuis R. Rodriguez 	{ AR5K_MCAST_FILTER1_5210, 0 },
74203c4805SLuis R. Rodriguez 	{ AR5K_TX_MASK0,	0 },
75203c4805SLuis R. Rodriguez 	{ AR5K_TX_MASK1,	0 },
76203c4805SLuis R. Rodriguez 	{ AR5K_CLR_TMASK,	0 },
77203c4805SLuis R. Rodriguez 	{ AR5K_TRIG_LVL,	AR5K_TUNE_MIN_TX_FIFO_THRES },
78203c4805SLuis R. Rodriguez 	{ AR5K_DIAG_SW_5210,	0 },
79203c4805SLuis R. Rodriguez 	{ AR5K_RSSI_THR,	AR5K_TUNE_RSSI_THRES },
80203c4805SLuis R. Rodriguez 	{ AR5K_TSF_L32_5210,	0 },
81203c4805SLuis R. Rodriguez 	{ AR5K_TIMER0_5210,	0 },
82203c4805SLuis R. Rodriguez 	{ AR5K_TIMER1_5210,	0xffffffff },
83203c4805SLuis R. Rodriguez 	{ AR5K_TIMER2_5210,	0xffffffff },
84203c4805SLuis R. Rodriguez 	{ AR5K_TIMER3_5210,	1 },
85203c4805SLuis R. Rodriguez 	{ AR5K_CFP_DUR_5210,	0 },
86203c4805SLuis R. Rodriguez 	{ AR5K_CFP_PERIOD_5210,	0 },
87203c4805SLuis R. Rodriguez 	/* PHY registers */
88203c4805SLuis R. Rodriguez 	{ AR5K_PHY(0),	0x00000047 },
89203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGC,	0x00000000 },
90203c4805SLuis R. Rodriguez 	{ AR5K_PHY(3),	0x09848ea6 },
91203c4805SLuis R. Rodriguez 	{ AR5K_PHY(4),	0x3d32e000 },
92203c4805SLuis R. Rodriguez 	{ AR5K_PHY(5),	0x0000076b },
93203c4805SLuis R. Rodriguez 	{ AR5K_PHY_ACT,	AR5K_PHY_ACT_DISABLE },
94203c4805SLuis R. Rodriguez 	{ AR5K_PHY(8),	0x02020200 },
95203c4805SLuis R. Rodriguez 	{ AR5K_PHY(9),	0x00000e0e },
96203c4805SLuis R. Rodriguez 	{ AR5K_PHY(10),	0x0a020201 },
97203c4805SLuis R. Rodriguez 	{ AR5K_PHY(11),	0x00036ffc },
98203c4805SLuis R. Rodriguez 	{ AR5K_PHY(12),	0x00000000 },
99203c4805SLuis R. Rodriguez 	{ AR5K_PHY(13),	0x00000e0e },
100203c4805SLuis R. Rodriguez 	{ AR5K_PHY(14),	0x00000007 },
101203c4805SLuis R. Rodriguez 	{ AR5K_PHY(15),	0x00020100 },
102203c4805SLuis R. Rodriguez 	{ AR5K_PHY(16),	0x89630000 },
103203c4805SLuis R. Rodriguez 	{ AR5K_PHY(17),	0x1372169c },
104203c4805SLuis R. Rodriguez 	{ AR5K_PHY(18),	0x0018b633 },
105203c4805SLuis R. Rodriguez 	{ AR5K_PHY(19),	0x1284613c },
106203c4805SLuis R. Rodriguez 	{ AR5K_PHY(20),	0x0de8b8e0 },
107203c4805SLuis R. Rodriguez 	{ AR5K_PHY(21),	0x00074859 },
108203c4805SLuis R. Rodriguez 	{ AR5K_PHY(22),	0x7e80beba },
109203c4805SLuis R. Rodriguez 	{ AR5K_PHY(23),	0x313a665e },
110203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGCCTL, 0x00001d08 },
111203c4805SLuis R. Rodriguez 	{ AR5K_PHY(25),	0x0001ce00 },
112203c4805SLuis R. Rodriguez 	{ AR5K_PHY(26),	0x409a4190 },
113203c4805SLuis R. Rodriguez 	{ AR5K_PHY(28),	0x0000000f },
114203c4805SLuis R. Rodriguez 	{ AR5K_PHY(29),	0x00000080 },
115203c4805SLuis R. Rodriguez 	{ AR5K_PHY(30),	0x00000004 },
116203c4805SLuis R. Rodriguez 	{ AR5K_PHY(31),	0x00000018 }, 	/* 0x987c */
117203c4805SLuis R. Rodriguez 	{ AR5K_PHY(64),	0x00000000 }, 	/* 0x9900 */
118203c4805SLuis R. Rodriguez 	{ AR5K_PHY(65),	0x00000000 },
119203c4805SLuis R. Rodriguez 	{ AR5K_PHY(66),	0x00000000 },
120203c4805SLuis R. Rodriguez 	{ AR5K_PHY(67),	0x00800000 },
121203c4805SLuis R. Rodriguez 	{ AR5K_PHY(68),	0x00000003 },
122203c4805SLuis R. Rodriguez 	/* BB gain table (64bytes) */
123203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(0), 0x00000000 },
124203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(1), 0x00000020 },
125203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(2), 0x00000010 },
126203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(3), 0x00000030 },
127203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(4), 0x00000008 },
128203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(5), 0x00000028 },
129203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(6), 0x00000028 },
130203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(7), 0x00000004 },
131203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(8), 0x00000024 },
132203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(9), 0x00000014 },
133203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(10), 0x00000034 },
134203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(11), 0x0000000c },
135203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(12), 0x0000002c },
136203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(13), 0x00000002 },
137203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(14), 0x00000022 },
138203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(15), 0x00000012 },
139203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(16), 0x00000032 },
140203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(17), 0x0000000a },
141203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(18), 0x0000002a },
142203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(19), 0x00000001 },
143203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(20), 0x00000021 },
144203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(21), 0x00000011 },
145203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(22), 0x00000031 },
146203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(23), 0x00000009 },
147203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(24), 0x00000029 },
148203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(25), 0x00000005 },
149203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(26), 0x00000025 },
150203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(27), 0x00000015 },
151203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(28), 0x00000035 },
152203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(29), 0x0000000d },
153203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(30), 0x0000002d },
154203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(31), 0x00000003 },
155203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(32), 0x00000023 },
156203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(33), 0x00000013 },
157203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(34), 0x00000033 },
158203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(35), 0x0000000b },
159203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(36), 0x0000002b },
160203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(37), 0x00000007 },
161203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(38), 0x00000027 },
162203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(39), 0x00000017 },
163203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(40), 0x00000037 },
164203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(41), 0x0000000f },
165203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(42), 0x0000002f },
166203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(43), 0x0000002f },
167203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(44), 0x0000002f },
168203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(45), 0x0000002f },
169203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(46), 0x0000002f },
170203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(47), 0x0000002f },
171203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(48), 0x0000002f },
172203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(49), 0x0000002f },
173203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(50), 0x0000002f },
174203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(51), 0x0000002f },
175203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(52), 0x0000002f },
176203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(53), 0x0000002f },
177203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(54), 0x0000002f },
178203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(55), 0x0000002f },
179203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(56), 0x0000002f },
180203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(57), 0x0000002f },
181203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(58), 0x0000002f },
182203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(59), 0x0000002f },
183203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(60), 0x0000002f },
184203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(61), 0x0000002f },
185203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(62), 0x0000002f },
186203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(63), 0x0000002f },
187203c4805SLuis R. Rodriguez 	/* 5110 RF gain table (64btes) */
188203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(0), 0x0000001d },
189203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(1), 0x0000005d },
190203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(2), 0x0000009d },
191203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(3), 0x000000dd },
192203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(4), 0x0000011d },
193203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(5), 0x00000021 },
194203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(6), 0x00000061 },
195203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(7), 0x000000a1 },
196203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(8), 0x000000e1 },
197203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(9), 0x00000031 },
198203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(10), 0x00000071 },
199203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(11), 0x000000b1 },
200203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(12), 0x0000001c },
201203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(13), 0x0000005c },
202203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(14), 0x00000029 },
203203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(15), 0x00000069 },
204203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(16), 0x000000a9 },
205203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(17), 0x00000020 },
206203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(18), 0x00000019 },
207203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(19), 0x00000059 },
208203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(20), 0x00000099 },
209203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(21), 0x00000030 },
210203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(22), 0x00000005 },
211203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(23), 0x00000025 },
212203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(24), 0x00000065 },
213203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(25), 0x000000a5 },
214203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(26), 0x00000028 },
215203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(27), 0x00000068 },
216203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(28), 0x0000001f },
217203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(29), 0x0000001e },
218203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(30), 0x00000018 },
219203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(31), 0x00000058 },
220203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(32), 0x00000098 },
221203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(33), 0x00000003 },
222203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(34), 0x00000004 },
223203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(35), 0x00000044 },
224203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(36), 0x00000084 },
225203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(37), 0x00000013 },
226203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(38), 0x00000012 },
227203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(39), 0x00000052 },
228203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(40), 0x00000092 },
229203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(41), 0x000000d2 },
230203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(42), 0x0000002b },
231203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(43), 0x0000002a },
232203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(44), 0x0000006a },
233203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(45), 0x000000aa },
234203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(46), 0x0000001b },
235203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(47), 0x0000001a },
236203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(48), 0x0000005a },
237203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(49), 0x0000009a },
238203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(50), 0x000000da },
239203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(51), 0x00000006 },
240203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(52), 0x00000006 },
241203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(53), 0x00000006 },
242203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(54), 0x00000006 },
243203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(55), 0x00000006 },
244203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(56), 0x00000006 },
245203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(57), 0x00000006 },
246203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(58), 0x00000006 },
247203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(59), 0x00000006 },
248203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(60), 0x00000006 },
249203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(61), 0x00000006 },
250203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(62), 0x00000006 },
251203c4805SLuis R. Rodriguez 	{ AR5K_RF_GAIN(63), 0x00000006 },
252203c4805SLuis R. Rodriguez 	/* PHY activation */
253203c4805SLuis R. Rodriguez 	{ AR5K_PHY(53), 0x00000020 },
254203c4805SLuis R. Rodriguez 	{ AR5K_PHY(51), 0x00000004 },
255203c4805SLuis R. Rodriguez 	{ AR5K_PHY(50), 0x00060106 },
256203c4805SLuis R. Rodriguez 	{ AR5K_PHY(39), 0x0000006d },
257203c4805SLuis R. Rodriguez 	{ AR5K_PHY(48), 0x00000000 },
258203c4805SLuis R. Rodriguez 	{ AR5K_PHY(52), 0x00000014 },
259203c4805SLuis R. Rodriguez 	{ AR5K_PHY_ACT, AR5K_PHY_ACT_ENABLE },
260203c4805SLuis R. Rodriguez };
261203c4805SLuis R. Rodriguez 
262203c4805SLuis R. Rodriguez /* Initial register settings for AR5211 */
263203c4805SLuis R. Rodriguez static const struct ath5k_ini ar5211_ini[] = {
264203c4805SLuis R. Rodriguez 	{ AR5K_RXDP,		0x00000000 },
265203c4805SLuis R. Rodriguez 	{ AR5K_RTSD0,		0x84849c9c },
266203c4805SLuis R. Rodriguez 	{ AR5K_RTSD1,		0x7c7c7c7c },
267203c4805SLuis R. Rodriguez 	{ AR5K_RXCFG,		0x00000005 },
268203c4805SLuis R. Rodriguez 	{ AR5K_MIBC,		0x00000000 },
269203c4805SLuis R. Rodriguez 	{ AR5K_TOPS,		0x00000008 },
270203c4805SLuis R. Rodriguez 	{ AR5K_RXNOFRM,		0x00000008 },
271203c4805SLuis R. Rodriguez 	{ AR5K_TXNOFRM,		0x00000010 },
272203c4805SLuis R. Rodriguez 	{ AR5K_RPGTO,		0x00000000 },
273203c4805SLuis R. Rodriguez 	{ AR5K_RFCNT,		0x0000001f },
274203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(0),	0x00000000 },
275203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(1),	0x00000000 },
276203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(2),	0x00000000 },
277203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(3),	0x00000000 },
278203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(4),	0x00000000 },
279203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(5),	0x00000000 },
280203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(6),	0x00000000 },
281203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(7),	0x00000000 },
282203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(8),	0x00000000 },
283203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(9),	0x00000000 },
284203c4805SLuis R. Rodriguez 	{ AR5K_DCU_FP,		0x00000000 },
285203c4805SLuis R. Rodriguez 	{ AR5K_STA_ID1,		0x00000000 },
286203c4805SLuis R. Rodriguez 	{ AR5K_BSS_ID0,		0x00000000 },
287203c4805SLuis R. Rodriguez 	{ AR5K_BSS_ID1,		0x00000000 },
288203c4805SLuis R. Rodriguez 	{ AR5K_RSSI_THR,	0x00000000 },
289203c4805SLuis R. Rodriguez 	{ AR5K_CFP_PERIOD_5211,	0x00000000 },
290203c4805SLuis R. Rodriguez 	{ AR5K_TIMER0_5211,	0x00000030 },
291203c4805SLuis R. Rodriguez 	{ AR5K_TIMER1_5211,	0x0007ffff },
292203c4805SLuis R. Rodriguez 	{ AR5K_TIMER2_5211,	0x01ffffff },
293203c4805SLuis R. Rodriguez 	{ AR5K_TIMER3_5211,	0x00000031 },
294203c4805SLuis R. Rodriguez 	{ AR5K_CFP_DUR_5211,	0x00000000 },
295203c4805SLuis R. Rodriguez 	{ AR5K_RX_FILTER_5211,	0x00000000 },
296203c4805SLuis R. Rodriguez 	{ AR5K_MCAST_FILTER0_5211, 0x00000000 },
297203c4805SLuis R. Rodriguez 	{ AR5K_MCAST_FILTER1_5211, 0x00000002 },
298203c4805SLuis R. Rodriguez 	{ AR5K_DIAG_SW_5211,	0x00000000 },
299203c4805SLuis R. Rodriguez 	{ AR5K_ADDAC_TEST,	0x00000000 },
300203c4805SLuis R. Rodriguez 	{ AR5K_DEFAULT_ANTENNA,	0x00000000 },
301203c4805SLuis R. Rodriguez 	/* PHY registers */
302203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGC,	0x00000000 },
303203c4805SLuis R. Rodriguez 	{ AR5K_PHY(3),	0x2d849093 },
304203c4805SLuis R. Rodriguez 	{ AR5K_PHY(4),	0x7d32e000 },
305203c4805SLuis R. Rodriguez 	{ AR5K_PHY(5),	0x00000f6b },
306203c4805SLuis R. Rodriguez 	{ AR5K_PHY_ACT,	0x00000000 },
307203c4805SLuis R. Rodriguez 	{ AR5K_PHY(11),	0x00026ffe },
308203c4805SLuis R. Rodriguez 	{ AR5K_PHY(12),	0x00000000 },
309203c4805SLuis R. Rodriguez 	{ AR5K_PHY(15),	0x00020100 },
310203c4805SLuis R. Rodriguez 	{ AR5K_PHY(16),	0x206a017a },
311203c4805SLuis R. Rodriguez 	{ AR5K_PHY(19),	0x1284613c },
312203c4805SLuis R. Rodriguez 	{ AR5K_PHY(21),	0x00000859 },
313203c4805SLuis R. Rodriguez 	{ AR5K_PHY(26),	0x409a4190 },	/* 0x9868 */
314203c4805SLuis R. Rodriguez 	{ AR5K_PHY(27),	0x050cb081 },
315203c4805SLuis R. Rodriguez 	{ AR5K_PHY(28),	0x0000000f },
316203c4805SLuis R. Rodriguez 	{ AR5K_PHY(29),	0x00000080 },
317203c4805SLuis R. Rodriguez 	{ AR5K_PHY(30),	0x0000000c },
318203c4805SLuis R. Rodriguez 	{ AR5K_PHY(64),	0x00000000 },
319203c4805SLuis R. Rodriguez 	{ AR5K_PHY(65),	0x00000000 },
320203c4805SLuis R. Rodriguez 	{ AR5K_PHY(66),	0x00000000 },
321203c4805SLuis R. Rodriguez 	{ AR5K_PHY(67),	0x00800000 },
322203c4805SLuis R. Rodriguez 	{ AR5K_PHY(68),	0x00000001 },
323203c4805SLuis R. Rodriguez 	{ AR5K_PHY(71),	0x0000092a },
324203c4805SLuis R. Rodriguez 	{ AR5K_PHY_IQ,	0x00000000 },
325203c4805SLuis R. Rodriguez 	{ AR5K_PHY(73),	0x00058a05 },
326203c4805SLuis R. Rodriguez 	{ AR5K_PHY(74),	0x00000001 },
327203c4805SLuis R. Rodriguez 	{ AR5K_PHY(75),	0x00000000 },
328203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PAPD_PROBE, 0x00000000 },
329203c4805SLuis R. Rodriguez 	{ AR5K_PHY(77),	0x00000000 },	/* 0x9934 */
330203c4805SLuis R. Rodriguez 	{ AR5K_PHY(78),	0x00000000 },	/* 0x9938 */
331203c4805SLuis R. Rodriguez 	{ AR5K_PHY(79),	0x0000003f },	/* 0x993c */
332203c4805SLuis R. Rodriguez 	{ AR5K_PHY(80),	0x00000004 },
333203c4805SLuis R. Rodriguez 	{ AR5K_PHY(82),	0x00000000 },
334203c4805SLuis R. Rodriguez 	{ AR5K_PHY(83),	0x00000000 },
335203c4805SLuis R. Rodriguez 	{ AR5K_PHY(84),	0x00000000 },
336203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RADAR, 0x5d50f14c },
337203c4805SLuis R. Rodriguez 	{ AR5K_PHY(86),	0x00000018 },
338203c4805SLuis R. Rodriguez 	{ AR5K_PHY(87),	0x004b6a8e },
339203c4805SLuis R. Rodriguez 	/* Initial Power table (32bytes)
340203c4805SLuis R. Rodriguez 	 * common on all cards/modes.
341203c4805SLuis R. Rodriguez 	 * Note: Table is rewritten during
342203c4805SLuis R. Rodriguez 	 * txpower setup later using calibration
343203c4805SLuis R. Rodriguez 	 * data etc. so next write is non-common */
344203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(1), 0x06ff05ff },
345203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(2), 0x07ff07ff },
346203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(3), 0x08ff08ff },
347203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(4), 0x09ff09ff },
348203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(5), 0x0aff0aff },
349203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(6), 0x0bff0bff },
350203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(7), 0x0cff0cff },
351203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(8), 0x0dff0dff },
352203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(9), 0x0fff0eff },
353203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(10), 0x12ff12ff },
354203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(11), 0x14ff13ff },
355203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(12), 0x16ff15ff },
356203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(13), 0x19ff17ff },
357203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(14), 0x1bff1aff },
358203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(15), 0x1eff1dff },
359203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(16), 0x23ff20ff },
360203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(17), 0x27ff25ff },
361203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(18), 0x2cff29ff },
362203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(19), 0x31ff2fff },
363203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(20), 0x37ff34ff },
364203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(21), 0x3aff3aff },
365203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(22), 0x3aff3aff },
366203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(23), 0x3aff3aff },
367203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(24), 0x3aff3aff },
368203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(25), 0x3aff3aff },
369203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(26), 0x3aff3aff },
370203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(27), 0x3aff3aff },
371203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(28), 0x3aff3aff },
372203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(29), 0x3aff3aff },
373203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(30), 0x3aff3aff },
374203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER(31), 0x3aff3aff },
375203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCKTXCTL, 0x00000000 },
376203c4805SLuis R. Rodriguez 	{ AR5K_PHY(642), 0x503e4646 },
377203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN_2GHZ, 0x6480416c },
378203c4805SLuis R. Rodriguez 	{ AR5K_PHY(644), 0x0199a003 },
379203c4805SLuis R. Rodriguez 	{ AR5K_PHY(645), 0x044cd610 },
380203c4805SLuis R. Rodriguez 	{ AR5K_PHY(646), 0x13800040 },
381203c4805SLuis R. Rodriguez 	{ AR5K_PHY(647), 0x1be00060 },
382203c4805SLuis R. Rodriguez 	{ AR5K_PHY(648), 0x0c53800a },
383203c4805SLuis R. Rodriguez 	{ AR5K_PHY(649), 0x0014df3b },
384203c4805SLuis R. Rodriguez 	{ AR5K_PHY(650), 0x000001b5 },
385203c4805SLuis R. Rodriguez 	{ AR5K_PHY(651), 0x00000020 },
386203c4805SLuis R. Rodriguez };
387203c4805SLuis R. Rodriguez 
388203c4805SLuis R. Rodriguez /* Initial mode-specific settings for AR5211
389203c4805SLuis R. Rodriguez  * 5211 supports OFDM-only g (draft g) but we
390203c4805SLuis R. Rodriguez  * need to test it !
391203c4805SLuis R. Rodriguez  */
392203c4805SLuis R. Rodriguez static const struct ath5k_ini_mode ar5211_ini_mode[] = {
393203c4805SLuis R. Rodriguez 	{ AR5K_TXCFG,
394203c4805SLuis R. Rodriguez 	/*	  a	    aTurbo	  b	  g (OFDM)    */
395203c4805SLuis R. Rodriguez 	   { 0x00000015, 0x00000015, 0x0000001d, 0x00000015 } },
396203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(0),
397203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },
398203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(1),
399203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },
400203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(2),
401203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },
402203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(3),
403203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },
404203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(4),
405203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },
406203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(5),
407203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },
408203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(6),
409203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },
410203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(7),
411203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },
412203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(8),
413203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },
414203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(9),
415203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f } },
416203c4805SLuis R. Rodriguez 	{ AR5K_DCU_GBL_IFS_SLOT,
417203c4805SLuis R. Rodriguez 	   { 0x00000168, 0x000001e0, 0x000001b8, 0x00000168 } },
418203c4805SLuis R. Rodriguez 	{ AR5K_DCU_GBL_IFS_SIFS,
419203c4805SLuis R. Rodriguez 	   { 0x00000230, 0x000001e0, 0x000000b0, 0x00000230 } },
420203c4805SLuis R. Rodriguez 	{ AR5K_DCU_GBL_IFS_EIFS,
421203c4805SLuis R. Rodriguez 	   { 0x00000d98, 0x00001180, 0x00001f48, 0x00000d98 } },
422203c4805SLuis R. Rodriguez 	{ AR5K_DCU_GBL_IFS_MISC,
423203c4805SLuis R. Rodriguez 	   { 0x0000a0e0, 0x00014068, 0x00005880, 0x0000a0e0 } },
424203c4805SLuis R. Rodriguez 	{ AR5K_TIME_OUT,
425203c4805SLuis R. Rodriguez 	   { 0x04000400, 0x08000800, 0x20003000, 0x04000400 } },
426203c4805SLuis R. Rodriguez 	{ AR5K_USEC_5211,
427203c4805SLuis R. Rodriguez 	   { 0x0e8d8fa7, 0x0e8d8fcf, 0x01608f95, 0x0e8d8fa7 } },
428203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TURBO,
429203c4805SLuis R. Rodriguez 	   { 0x00000000, 0x00000003, 0x00000000, 0x00000000 } },
430203c4805SLuis R. Rodriguez 	{ AR5K_PHY(8),
431203c4805SLuis R. Rodriguez 	   { 0x02020200, 0x02020200, 0x02010200, 0x02020200 } },
432203c4805SLuis R. Rodriguez 	{ AR5K_PHY(9),
433203c4805SLuis R. Rodriguez 	   { 0x00000e0e, 0x00000e0e, 0x00000707, 0x00000e0e } },
434203c4805SLuis R. Rodriguez 	{ AR5K_PHY(10),
435203c4805SLuis R. Rodriguez 	   { 0x0a020001, 0x0a020001, 0x05010000, 0x0a020001 } },
436203c4805SLuis R. Rodriguez 	{ AR5K_PHY(13),
437203c4805SLuis R. Rodriguez 	   { 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e } },
438203c4805SLuis R. Rodriguez 	{ AR5K_PHY(14),
439203c4805SLuis R. Rodriguez 	   { 0x00000007, 0x00000007, 0x0000000b, 0x0000000b } },
440203c4805SLuis R. Rodriguez 	{ AR5K_PHY(17),
441203c4805SLuis R. Rodriguez 	   { 0x1372169c, 0x137216a5, 0x137216a8, 0x1372169c } },
442203c4805SLuis R. Rodriguez 	{ AR5K_PHY(18),
443203c4805SLuis R. Rodriguez 	   { 0x0018ba67, 0x0018ba67, 0x0018ba69, 0x0018ba69 } },
444203c4805SLuis R. Rodriguez 	{ AR5K_PHY(20),
445203c4805SLuis R. Rodriguez 	   { 0x0c28b4e0, 0x0c28b4e0, 0x0c28b4e0, 0x0c28b4e0 } },
446203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SIG,
447203c4805SLuis R. Rodriguez 	   { 0x7e800d2e, 0x7e800d2e, 0x7ec00d2e, 0x7e800d2e } },
448203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGCCOARSE,
449203c4805SLuis R. Rodriguez 	   { 0x31375d5e, 0x31375d5e, 0x313a5d5e, 0x31375d5e } },
450203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGCCTL,
451203c4805SLuis R. Rodriguez 	   { 0x0000bd10, 0x0000bd10, 0x0000bd38, 0x0000bd10 } },
452203c4805SLuis R. Rodriguez 	{ AR5K_PHY_NF,
453203c4805SLuis R. Rodriguez 	   { 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 } },
454203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RX_DELAY,
455203c4805SLuis R. Rodriguez 	   { 0x00002710, 0x00002710, 0x0000157c, 0x00002710 } },
456203c4805SLuis R. Rodriguez 	{ AR5K_PHY(70),
457203c4805SLuis R. Rodriguez 	   { 0x00000190, 0x00000190, 0x00000084, 0x00000190 } },
458203c4805SLuis R. Rodriguez 	{ AR5K_PHY_FRAME_CTL_5211,
459203c4805SLuis R. Rodriguez 	   { 0x6fe01020, 0x6fe01020, 0x6fe00920, 0x6fe01020 } },
460203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PCDAC_TXPOWER_BASE,
461203c4805SLuis R. Rodriguez 	   { 0x05ff14ff, 0x05ff14ff, 0x05ff14ff, 0x05ff19ff } },
462203c4805SLuis R. Rodriguez 	{ AR5K_RF_BUFFER_CONTROL_4,
463203c4805SLuis R. Rodriguez 	   { 0x00000010, 0x00000014, 0x00000010, 0x00000010 } },
464203c4805SLuis R. Rodriguez };
465203c4805SLuis R. Rodriguez 
466203c4805SLuis R. Rodriguez /* Initial register settings for AR5212 */
467203c4805SLuis R. Rodriguez static const struct ath5k_ini ar5212_ini_common_start[] = {
468203c4805SLuis R. Rodriguez 	{ AR5K_RXDP,		0x00000000 },
469203c4805SLuis R. Rodriguez 	{ AR5K_RXCFG,		0x00000005 },
470203c4805SLuis R. Rodriguez 	{ AR5K_MIBC,		0x00000000 },
471203c4805SLuis R. Rodriguez 	{ AR5K_TOPS,		0x00000008 },
472203c4805SLuis R. Rodriguez 	{ AR5K_RXNOFRM,		0x00000008 },
473203c4805SLuis R. Rodriguez 	{ AR5K_TXNOFRM,		0x00000010 },
474203c4805SLuis R. Rodriguez 	{ AR5K_RPGTO,		0x00000000 },
475203c4805SLuis R. Rodriguez 	{ AR5K_RFCNT,		0x0000001f },
476203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(0),	0x00000000 },
477203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(1),	0x00000000 },
478203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(2),	0x00000000 },
479203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(3),	0x00000000 },
480203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(4),	0x00000000 },
481203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(5),	0x00000000 },
482203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(6),	0x00000000 },
483203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(7),	0x00000000 },
484203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(8),	0x00000000 },
485203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_TXDP(9),	0x00000000 },
486203c4805SLuis R. Rodriguez 	{ AR5K_DCU_FP,		0x00000000 },
487203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TXP,		0x00000000 },
488203c4805SLuis R. Rodriguez 	/* Tx filter table 0 (32 entries) */
489203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(0),  0x00000000 }, /* DCU 0 */
490203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(1),  0x00000000 },
491203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(2),  0x00000000 },
492203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(3),  0x00000000 },
493203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(4),  0x00000000 }, /* DCU 1 */
494203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(5),  0x00000000 },
495203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(6),  0x00000000 },
496203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(7),  0x00000000 },
497203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(8),  0x00000000 }, /* DCU 2 */
498203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(9),  0x00000000 },
499203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(10), 0x00000000 },
500203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(11), 0x00000000 },
501203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(12), 0x00000000 }, /* DCU 3 */
502203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(13), 0x00000000 },
503203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(14), 0x00000000 },
504203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(15), 0x00000000 },
505203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(16), 0x00000000 }, /* DCU 4 */
506203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(17), 0x00000000 },
507203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(18), 0x00000000 },
508203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(19), 0x00000000 },
509203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(20), 0x00000000 }, /* DCU 5 */
510203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(21), 0x00000000 },
511203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(22), 0x00000000 },
512203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(23), 0x00000000 },
513203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(24), 0x00000000 }, /* DCU 6 */
514203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(25), 0x00000000 },
515203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(26), 0x00000000 },
516203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(27), 0x00000000 },
517203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(28), 0x00000000 }, /* DCU 7 */
518203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(29), 0x00000000 },
519203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(30), 0x00000000 },
520203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_0(31), 0x00000000 },
521203c4805SLuis R. Rodriguez 	/* Tx filter table 1 (16 entries) */
522203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(0),  0x00000000 },
523203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(1),  0x00000000 },
524203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(2),  0x00000000 },
525203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(3),  0x00000000 },
526203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(4),  0x00000000 },
527203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(5),  0x00000000 },
528203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(6),  0x00000000 },
529203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(7),  0x00000000 },
530203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(8),  0x00000000 },
531203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(9),  0x00000000 },
532203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(10), 0x00000000 },
533203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(11), 0x00000000 },
534203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(12), 0x00000000 },
535203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(13), 0x00000000 },
536203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(14), 0x00000000 },
537203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_1(15), 0x00000000 },
538203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_CLR, 0x00000000 },
539203c4805SLuis R. Rodriguez 	{ AR5K_DCU_TX_FILTER_SET, 0x00000000 },
540203c4805SLuis R. Rodriguez 	{ AR5K_STA_ID1,		0x00000000 },
541203c4805SLuis R. Rodriguez 	{ AR5K_BSS_ID0,		0x00000000 },
542203c4805SLuis R. Rodriguez 	{ AR5K_BSS_ID1,		0x00000000 },
543203c4805SLuis R. Rodriguez 	{ AR5K_BEACON_5211,	0x00000000 },
544203c4805SLuis R. Rodriguez 	{ AR5K_CFP_PERIOD_5211, 0x00000000 },
545203c4805SLuis R. Rodriguez 	{ AR5K_TIMER0_5211,	0x00000030 },
546203c4805SLuis R. Rodriguez 	{ AR5K_TIMER1_5211,	0x0007ffff },
547203c4805SLuis R. Rodriguez 	{ AR5K_TIMER2_5211,	0x01ffffff },
548203c4805SLuis R. Rodriguez 	{ AR5K_TIMER3_5211,	0x00000031 },
549203c4805SLuis R. Rodriguez 	{ AR5K_CFP_DUR_5211,	0x00000000 },
550203c4805SLuis R. Rodriguez 	{ AR5K_RX_FILTER_5211,	0x00000000 },
551203c4805SLuis R. Rodriguez 	{ AR5K_DIAG_SW_5211,	0x00000000 },
552203c4805SLuis R. Rodriguez 	{ AR5K_ADDAC_TEST,	0x00000000 },
553203c4805SLuis R. Rodriguez 	{ AR5K_DEFAULT_ANTENNA,	0x00000000 },
554203c4805SLuis R. Rodriguez 	{ AR5K_FRAME_CTL_QOSM, 	0x000fc78f },
555203c4805SLuis R. Rodriguez 	{ AR5K_XRMODE,		0x2a82301a },
556203c4805SLuis R. Rodriguez 	{ AR5K_XRDELAY,		0x05dc01e0 },
557203c4805SLuis R. Rodriguez 	{ AR5K_XRTIMEOUT,	0x1f402710 },
558203c4805SLuis R. Rodriguez 	{ AR5K_XRCHIRP,		0x01f40000 },
559203c4805SLuis R. Rodriguez 	{ AR5K_XRSTOMP,		0x00001e1c },
560203c4805SLuis R. Rodriguez 	{ AR5K_SLEEP0,		0x0002aaaa },
561203c4805SLuis R. Rodriguez 	{ AR5K_SLEEP1,		0x02005555 },
562203c4805SLuis R. Rodriguez 	{ AR5K_SLEEP2,		0x00000000 },
563*13b81559SLuis R. Rodriguez 	{ AR_BSSMSKL,		0xffffffff },
564*13b81559SLuis R. Rodriguez 	{ AR_BSSMSKU,		0x0000ffff },
565203c4805SLuis R. Rodriguez 	{ AR5K_TXPC,		0x00000000 },
566203c4805SLuis R. Rodriguez 	{ AR5K_PROFCNT_TX,	0x00000000 },
567203c4805SLuis R. Rodriguez 	{ AR5K_PROFCNT_RX,	0x00000000 },
568203c4805SLuis R. Rodriguez 	{ AR5K_PROFCNT_RXCLR,	0x00000000 },
569203c4805SLuis R. Rodriguez 	{ AR5K_PROFCNT_CYCLE,	0x00000000 },
570203c4805SLuis R. Rodriguez 	{ AR5K_QUIET_CTL1,	0x00000088 },
571203c4805SLuis R. Rodriguez 	/* Initial rate duration table (32 entries )*/
572203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(0),	0x00000000 },
573203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(1),	0x0000008c },
574203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(2),	0x000000e4 },
575203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(3),	0x000002d5 },
576203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(4),	0x00000000 },
577203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(5),	0x00000000 },
578203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(6),	0x000000a0 },
579203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(7),	0x000001c9 },
580203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(8),	0x0000002c },
581203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(9),	0x0000002c },
582203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(10),	0x00000030 },
583203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(11),	0x0000003c },
584203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(12),	0x0000002c },
585203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(13),	0x0000002c },
586203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(14),	0x00000030 },
587203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(15),	0x0000003c },
588203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(16),	0x00000000 },
589203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(17),	0x00000000 },
590203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(18),	0x00000000 },
591203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(19),	0x00000000 },
592203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(20),	0x00000000 },
593203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(21),	0x00000000 },
594203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(22),	0x00000000 },
595203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(23),	0x00000000 },
596203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(24),	0x000000d5 },
597203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(25),	0x000000df },
598203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(26),	0x00000102 },
599203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(27),	0x0000013a },
600203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(28),	0x00000075 },
601203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(29),	0x0000007f },
602203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(30),	0x000000a2 },
603203c4805SLuis R. Rodriguez 	{ AR5K_RATE_DUR(31),	0x00000000 },
604203c4805SLuis R. Rodriguez 	{ AR5K_QUIET_CTL2,	0x00010002 },
605203c4805SLuis R. Rodriguez 	{ AR5K_TSF_PARM,	0x00000001 },
606203c4805SLuis R. Rodriguez 	{ AR5K_QOS_NOACK,	0x000000c0 },
607203c4805SLuis R. Rodriguez 	{ AR5K_PHY_ERR_FIL,	0x00000000 },
608203c4805SLuis R. Rodriguez 	{ AR5K_XRLAT_TX,	0x00000168 },
609203c4805SLuis R. Rodriguez 	{ AR5K_ACKSIFS,		0x00000000 },
610203c4805SLuis R. Rodriguez 	/* Rate -> db table
611203c4805SLuis R. Rodriguez 	 * notice ...03<-02<-01<-00 ! */
612203c4805SLuis R. Rodriguez 	{ AR5K_RATE2DB(0),	0x03020100 },
613203c4805SLuis R. Rodriguez 	{ AR5K_RATE2DB(1),	0x07060504 },
614203c4805SLuis R. Rodriguez 	{ AR5K_RATE2DB(2),	0x0b0a0908 },
615203c4805SLuis R. Rodriguez 	{ AR5K_RATE2DB(3),	0x0f0e0d0c },
616203c4805SLuis R. Rodriguez 	{ AR5K_RATE2DB(4),	0x13121110 },
617203c4805SLuis R. Rodriguez 	{ AR5K_RATE2DB(5),	0x17161514 },
618203c4805SLuis R. Rodriguez 	{ AR5K_RATE2DB(6),	0x1b1a1918 },
619203c4805SLuis R. Rodriguez 	{ AR5K_RATE2DB(7),	0x1f1e1d1c },
620203c4805SLuis R. Rodriguez 	/* Db -> Rate table */
621203c4805SLuis R. Rodriguez 	{ AR5K_DB2RATE(0),	0x03020100 },
622203c4805SLuis R. Rodriguez 	{ AR5K_DB2RATE(1),	0x07060504 },
623203c4805SLuis R. Rodriguez 	{ AR5K_DB2RATE(2),	0x0b0a0908 },
624203c4805SLuis R. Rodriguez 	{ AR5K_DB2RATE(3),	0x0f0e0d0c },
625203c4805SLuis R. Rodriguez 	{ AR5K_DB2RATE(4),	0x13121110 },
626203c4805SLuis R. Rodriguez 	{ AR5K_DB2RATE(5),	0x17161514 },
627203c4805SLuis R. Rodriguez 	{ AR5K_DB2RATE(6),	0x1b1a1918 },
628203c4805SLuis R. Rodriguez 	{ AR5K_DB2RATE(7),	0x1f1e1d1c },
629203c4805SLuis R. Rodriguez 	/* PHY registers (Common settings
630203c4805SLuis R. Rodriguez 	 * for all chips/modes) */
631203c4805SLuis R. Rodriguez 	{ AR5K_PHY(3),		0xad848e19 },
632203c4805SLuis R. Rodriguez 	{ AR5K_PHY(4),		0x7d28e000 },
633203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TIMING_3,	0x9c0a9f6b },
634203c4805SLuis R. Rodriguez 	{ AR5K_PHY_ACT,		0x00000000 },
635203c4805SLuis R. Rodriguez 	{ AR5K_PHY(16),		0x206a017a },
636203c4805SLuis R. Rodriguez 	{ AR5K_PHY(21),		0x00000859 },
637203c4805SLuis R. Rodriguez 	{ AR5K_PHY_BIN_MASK_1,	0x00000000 },
638203c4805SLuis R. Rodriguez 	{ AR5K_PHY_BIN_MASK_2,	0x00000000 },
639203c4805SLuis R. Rodriguez 	{ AR5K_PHY_BIN_MASK_3,	0x00000000 },
640203c4805SLuis R. Rodriguez 	{ AR5K_PHY_BIN_MASK_CTL, 0x00800000 },
641203c4805SLuis R. Rodriguez 	{ AR5K_PHY_ANT_CTL,	0x00000001 },
642203c4805SLuis R. Rodriguez 	/*{ AR5K_PHY(71), 0x0000092a },*/ /* Old value */
643203c4805SLuis R. Rodriguez 	{ AR5K_PHY_MAX_RX_LEN,	0x00000c80 },
644203c4805SLuis R. Rodriguez 	{ AR5K_PHY_IQ,		0x05100000 },
645203c4805SLuis R. Rodriguez 	{ AR5K_PHY_WARM_RESET,	0x00000001 },
646203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CTL,		0x00000004 },
647203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TXPOWER_RATE1, 0x1e1f2022 },
648203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TXPOWER_RATE2, 0x0a0b0c0d },
649203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TXPOWER_RATE_MAX, 0x0000003f },
650203c4805SLuis R. Rodriguez 	{ AR5K_PHY(82),		0x9280b212 },
651203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RADAR,	0x5d50e188 },
652203c4805SLuis R. Rodriguez 	/*{ AR5K_PHY(86), 0x000000ff },*/
653203c4805SLuis R. Rodriguez 	{ AR5K_PHY(87),		0x004b6a8e },
654203c4805SLuis R. Rodriguez 	{ AR5K_PHY_NFTHRES,	0x000003ce },
655203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RESTART,	0x192fb515 },
656203c4805SLuis R. Rodriguez 	{ AR5K_PHY(94),		0x00000001 },
657203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RFBUS_REQ,	0x00000000 },
658203c4805SLuis R. Rodriguez 	/*{ AR5K_PHY(644), 0x0080a333 },*/ /* Old value */
659203c4805SLuis R. Rodriguez 	/*{ AR5K_PHY(645), 0x00206c10 },*/ /* Old value */
660203c4805SLuis R. Rodriguez 	{ AR5K_PHY(644),	0x00806333 },
661203c4805SLuis R. Rodriguez 	{ AR5K_PHY(645),	0x00106c10 },
662203c4805SLuis R. Rodriguez 	{ AR5K_PHY(646),	0x009c4060 },
663203c4805SLuis R. Rodriguez 	/* { AR5K_PHY(647), 0x1483800a }, */
664203c4805SLuis R. Rodriguez 	/* { AR5K_PHY(648), 0x01831061 }, */ /* Old value */
665203c4805SLuis R. Rodriguez 	{ AR5K_PHY(648),	0x018830c6 },
666203c4805SLuis R. Rodriguez 	{ AR5K_PHY(649),	0x00000400 },
667203c4805SLuis R. Rodriguez 	/*{ AR5K_PHY(650), 0x000001b5 },*/
668203c4805SLuis R. Rodriguez 	{ AR5K_PHY(651),	0x00000000 },
669203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TXPOWER_RATE3, 0x20202020 },
67077ded01cSBob Copeland 	{ AR5K_PHY_TXPOWER_RATE4, 0x20202020 },
671203c4805SLuis R. Rodriguez 	/*{ AR5K_PHY(655), 0x13c889af },*/
672203c4805SLuis R. Rodriguez 	{ AR5K_PHY(656),	0x38490a20 },
673203c4805SLuis R. Rodriguez 	{ AR5K_PHY(657),	0x00007bb6 },
674203c4805SLuis R. Rodriguez 	{ AR5K_PHY(658),	0x0fff3ffc },
675203c4805SLuis R. Rodriguez };
676203c4805SLuis R. Rodriguez 
677203c4805SLuis R. Rodriguez /* Initial mode-specific settings for AR5212 (Written before ar5212_ini) */
678203c4805SLuis R. Rodriguez static const struct ath5k_ini_mode ar5212_ini_mode_start[] = {
679203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(0),
680203c4805SLuis R. Rodriguez 	/*	a/XR	   aTurbo	  b	   g (DYN)     gTurbo     */
681203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f, 0x002ffc0f } },
682203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(1),
683203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f, 0x002ffc0f } },
684203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(2),
685203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f, 0x002ffc0f } },
686203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(3),
687203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f, 0x002ffc0f } },
688203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(4),
689203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f, 0x002ffc0f } },
690203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(5),
691203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f, 0x002ffc0f } },
692203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(6),
693203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f, 0x002ffc0f } },
694203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(7),
695203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f, 0x002ffc0f } },
696203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(8),
697203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f, 0x002ffc0f } },
698203c4805SLuis R. Rodriguez 	{ AR5K_QUEUE_DFS_LOCAL_IFS(9),
699203c4805SLuis R. Rodriguez 	   { 0x002ffc0f, 0x002ffc0f, 0x002ffc1f, 0x002ffc0f, 0x002ffc0f } },
700203c4805SLuis R. Rodriguez 	{ AR5K_DCU_GBL_IFS_SIFS,
701203c4805SLuis R. Rodriguez 	   { 0x00000230, 0x000001e0, 0x000000b0, 0x00000160, 0x000001e0 } },
702203c4805SLuis R. Rodriguez 	{ AR5K_DCU_GBL_IFS_SLOT,
703203c4805SLuis R. Rodriguez 	   { 0x00000168, 0x000001e0, 0x000001b8, 0x0000018c, 0x000001e0 } },
704203c4805SLuis R. Rodriguez 	{ AR5K_DCU_GBL_IFS_EIFS,
705203c4805SLuis R. Rodriguez 	   { 0x00000e60, 0x00001180, 0x00001f1c, 0x00003e38, 0x00001180 } },
706203c4805SLuis R. Rodriguez 	{ AR5K_DCU_GBL_IFS_MISC,
707203c4805SLuis R. Rodriguez 	   { 0x0000a0e0, 0x00014068, 0x00005880, 0x0000b0e0, 0x00014068 } },
708203c4805SLuis R. Rodriguez 	{ AR5K_TIME_OUT,
709203c4805SLuis R. Rodriguez 	   { 0x03e803e8, 0x06e006e0, 0x04200420, 0x08400840, 0x06e006e0 } },
710203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TURBO,
711203c4805SLuis R. Rodriguez 	   { 0x00000000, 0x00000003, 0x00000000, 0x00000000, 0x00000003 } },
712203c4805SLuis R. Rodriguez 	{ AR5K_PHY(8),
713203c4805SLuis R. Rodriguez 	   { 0x02020200, 0x02020200, 0x02010200, 0x02020200, 0x02020200 } },
714203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RF_CTL2,
715203c4805SLuis R. Rodriguez 	   { 0x00000e0e, 0x00000e0e, 0x00000707, 0x00000e0e, 0x00000e0e } },
716203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SETTLING,
717203c4805SLuis R. Rodriguez 	   { 0x1372161c, 0x13721c25, 0x13721722, 0x137216a2, 0x13721c25 } },
718203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGCCTL,
71977ded01cSBob Copeland 	   { 0x00009d10, 0x00009d10, 0x00009d18, 0x00009d18, 0x00009d10 } },
720203c4805SLuis R. Rodriguez 	{ AR5K_PHY_NF,
721203c4805SLuis R. Rodriguez 	   { 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00 } },
722203c4805SLuis R. Rodriguez 	{ AR5K_PHY_WEAK_OFDM_HIGH_THR,
723203c4805SLuis R. Rodriguez 	   { 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190 } },
724203c4805SLuis R. Rodriguez 	{ AR5K_PHY(70),
725203c4805SLuis R. Rodriguez 	   { 0x000001b8, 0x000001b8, 0x00000084, 0x00000108, 0x000001b8 } },
726203c4805SLuis R. Rodriguez 	{ AR5K_PHY_OFDM_SELFCORR,
727203c4805SLuis R. Rodriguez 	   { 0x10058a05, 0x10058a05, 0x10058a05, 0x10058a05, 0x10058a05 } },
728203c4805SLuis R. Rodriguez 	{ 0xa230,
729203c4805SLuis R. Rodriguez 	   { 0x00000000, 0x00000000, 0x00000000, 0x00000108, 0x00000000 } },
730203c4805SLuis R. Rodriguez };
731203c4805SLuis R. Rodriguez 
732203c4805SLuis R. Rodriguez /* Initial mode-specific settings for AR5212 + RF5111 (Written after ar5212_ini) */
733203c4805SLuis R. Rodriguez static const struct ath5k_ini_mode rf5111_ini_mode_end[] = {
734203c4805SLuis R. Rodriguez 	{ AR5K_TXCFG,
735203c4805SLuis R. Rodriguez 	/*	a/XR	   aTurbo	  b	   g (DYN)     gTurbo     */
736203c4805SLuis R. Rodriguez 	   { 0x00008015, 0x00008015, 0x00008015, 0x00008015, 0x00008015 } },
737203c4805SLuis R. Rodriguez 	{ AR5K_USEC_5211,
738203c4805SLuis R. Rodriguez 	   { 0x128d8fa7, 0x09880fcf, 0x04e00f95, 0x12e00fab, 0x09880fcf } },
739203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RF_CTL3,
740203c4805SLuis R. Rodriguez 	   { 0x0a020001, 0x0a020001, 0x05010100, 0x0a020001, 0x0a020001 } },
741203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RF_CTL4,
742203c4805SLuis R. Rodriguez 	   { 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e } },
743203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PA_CTL,
744203c4805SLuis R. Rodriguez 	   { 0x00000007, 0x00000007, 0x0000000b, 0x0000000b, 0x0000000b } },
745203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN,
746203c4805SLuis R. Rodriguez 	   { 0x0018da5a, 0x0018da5a, 0x0018ca69, 0x0018ca69, 0x0018ca69 } },
747203c4805SLuis R. Rodriguez 	{ AR5K_PHY_DESIRED_SIZE,
748203c4805SLuis R. Rodriguez 	   { 0x0de8b4e0, 0x0de8b4e0, 0x0de8b4e0, 0x0de8b4e0, 0x0de8b4e0 } },
749203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SIG,
750203c4805SLuis R. Rodriguez 	   { 0x7e800d2e, 0x7e800d2e, 0x7ee84d2e, 0x7ee84d2e, 0x7e800d2e } },
751203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGCCOARSE,
752203c4805SLuis R. Rodriguez 	   { 0x3137665e, 0x3137665e, 0x3137665e, 0x3137665e, 0x3137615e } },
753203c4805SLuis R. Rodriguez 	{ AR5K_PHY_WEAK_OFDM_LOW_THR,
754203c4805SLuis R. Rodriguez 	   { 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb080, 0x050cb080 } },
755203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RX_DELAY,
756203c4805SLuis R. Rodriguez 	   { 0x00002710, 0x00002710, 0x0000157c, 0x00002af8, 0x00002710 } },
757203c4805SLuis R. Rodriguez 	{ AR5K_PHY_FRAME_CTL_5211,
758203c4805SLuis R. Rodriguez 	   { 0xf7b81020, 0xf7b81020, 0xf7b80d20, 0xf7b81020, 0xf7b81020 } },
759203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN_2GHZ,
760203c4805SLuis R. Rodriguez 	   { 0x642c416a, 0x642c416a, 0x6440416a, 0x6440416a, 0x6440416a } },
761203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCK_RX_CTL_4,
762203c4805SLuis R. Rodriguez 	   { 0x1883800a, 0x1883800a, 0x1873800a, 0x1883800a, 0x1883800a } },
763203c4805SLuis R. Rodriguez };
764203c4805SLuis R. Rodriguez 
765203c4805SLuis R. Rodriguez static const struct ath5k_ini rf5111_ini_common_end[] = {
766203c4805SLuis R. Rodriguez 	{ AR5K_DCU_FP,		0x00000000 },
767203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGC, 	0x00000000 },
768203c4805SLuis R. Rodriguez 	{ AR5K_PHY_ADC_CTL, 	0x00022ffe },
769203c4805SLuis R. Rodriguez 	{ 0x983c, 		0x00020100 },
770203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN_OFFSET,	0x1284613c },
771203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PAPD_PROBE,	0x00004883 },
772203c4805SLuis R. Rodriguez 	{ 0x9940,		0x00000004 },
773203c4805SLuis R. Rodriguez 	{ 0x9958,		0x000000ff },
774203c4805SLuis R. Rodriguez 	{ 0x9974,		0x00000000 },
775203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SPENDING,	0x00000018 },
776203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCKTXCTL,	0x00000000 },
777203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCK_CROSSCORR, 0xd03e6788 },
778203c4805SLuis R. Rodriguez 	{ AR5K_PHY_DAG_CCK_CTL,	0x000001b5 },
779203c4805SLuis R. Rodriguez 	{ 0xa23c,		0x13c889af },
780203c4805SLuis R. Rodriguez };
781203c4805SLuis R. Rodriguez 
782203c4805SLuis R. Rodriguez /* Initial mode-specific settings for AR5212 + RF5112 (Written after ar5212_ini) */
783203c4805SLuis R. Rodriguez static const struct ath5k_ini_mode rf5112_ini_mode_end[] = {
784203c4805SLuis R. Rodriguez 	{ AR5K_TXCFG,
785203c4805SLuis R. Rodriguez 	/*	a/XR	   aTurbo	  b	   g (DYN)     gTurbo     */
786203c4805SLuis R. Rodriguez 	   { 0x00008015, 0x00008015, 0x00008015, 0x00008015, 0x00008015 } },
787203c4805SLuis R. Rodriguez 	{ AR5K_USEC_5211,
788203c4805SLuis R. Rodriguez 	   { 0x128d93a7, 0x098813cf, 0x04e01395, 0x12e013ab, 0x098813cf } },
789203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RF_CTL3,
790203c4805SLuis R. Rodriguez 	   { 0x0a020001, 0x0a020001, 0x05020100, 0x0a020001, 0x0a020001 } },
791203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RF_CTL4,
792203c4805SLuis R. Rodriguez 	   { 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e } },
793203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PA_CTL,
794203c4805SLuis R. Rodriguez 	   { 0x00000007, 0x00000007, 0x0000000b, 0x0000000b, 0x0000000b } },
795203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN,
796203c4805SLuis R. Rodriguez 	   { 0x0018da6d, 0x0018da6d, 0x0018ca75, 0x0018ca75, 0x0018ca75 } },
797203c4805SLuis R. Rodriguez 	{ AR5K_PHY_DESIRED_SIZE,
798203c4805SLuis R. Rodriguez 	   { 0x0de8b4e0, 0x0de8b4e0, 0x0de8b4e0, 0x0de8b4e0, 0x0de8b4e0 } },
799203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SIG,
80077ded01cSBob Copeland 	   { 0x7e800d2e, 0x7e800d2e, 0x7ee80d2e, 0x7ee80d2e, 0x7e800d2e } },
801203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGCCOARSE,
802203c4805SLuis R. Rodriguez 	   { 0x3137665e, 0x3137665e, 0x3137665e, 0x3137665e, 0x3137665e } },
803203c4805SLuis R. Rodriguez 	{ AR5K_PHY_WEAK_OFDM_LOW_THR,
804203c4805SLuis R. Rodriguez 	   { 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 } },
805203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RX_DELAY,
806203c4805SLuis R. Rodriguez 	   { 0x000007d0, 0x000007d0, 0x0000044c, 0x00000898, 0x000007d0 } },
807203c4805SLuis R. Rodriguez 	{ AR5K_PHY_FRAME_CTL_5211,
808203c4805SLuis R. Rodriguez 	   { 0xf7b81020, 0xf7b81020, 0xf7b80d10, 0xf7b81010, 0xf7b81010 } },
809203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCKTXCTL,
810203c4805SLuis R. Rodriguez 	   { 0x00000000, 0x00000000, 0x00000008, 0x00000008, 0x00000008 } },
811203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCK_CROSSCORR,
812203c4805SLuis R. Rodriguez 	   { 0xd6be6788, 0xd6be6788, 0xd03e6788, 0xd03e6788, 0xd03e6788 } },
813203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN_2GHZ,
814203c4805SLuis R. Rodriguez 	   { 0x642c0140, 0x642c0140, 0x6442c160, 0x6442c160, 0x6442c160 } },
815203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCK_RX_CTL_4,
816203c4805SLuis R. Rodriguez 	   { 0x1883800a, 0x1883800a, 0x1873800a, 0x1883800a, 0x1883800a } },
817203c4805SLuis R. Rodriguez };
818203c4805SLuis R. Rodriguez 
819203c4805SLuis R. Rodriguez static const struct ath5k_ini rf5112_ini_common_end[] = {
820203c4805SLuis R. Rodriguez 	{ AR5K_DCU_FP,		0x00000000 },
821203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGC,		0x00000000 },
822203c4805SLuis R. Rodriguez 	{ AR5K_PHY_ADC_CTL,	0x00022ffe },
823203c4805SLuis R. Rodriguez 	{ 0x983c,		0x00020100 },
824203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN_OFFSET,	0x1284613c },
825203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PAPD_PROBE,	0x00004882 },
826203c4805SLuis R. Rodriguez 	{ 0x9940,		0x00000004 },
827203c4805SLuis R. Rodriguez 	{ 0x9958,		0x000000ff },
828203c4805SLuis R. Rodriguez 	{ 0x9974,		0x00000000 },
829203c4805SLuis R. Rodriguez 	{ AR5K_PHY_DAG_CCK_CTL,	0x000001b5 },
830203c4805SLuis R. Rodriguez 	{ 0xa23c,		0x13c889af },
831203c4805SLuis R. Rodriguez };
832203c4805SLuis R. Rodriguez 
833203c4805SLuis R. Rodriguez /* Initial mode-specific settings for RF5413/5414 (Written after ar5212_ini) */
834203c4805SLuis R. Rodriguez static const struct ath5k_ini_mode rf5413_ini_mode_end[] = {
835203c4805SLuis R. Rodriguez 	{ AR5K_TXCFG,
836203c4805SLuis R. Rodriguez 	/*	a/XR	   aTurbo	  b	   g (DYN)     gTurbo     */
837203c4805SLuis R. Rodriguez 	   { 0x00000015, 0x00000015, 0x00000015, 0x00000015, 0x00000015 } },
838203c4805SLuis R. Rodriguez 	{ AR5K_USEC_5211,
839203c4805SLuis R. Rodriguez 	   { 0x128d93a7, 0x098813cf, 0x04e01395, 0x12e013ab, 0x098813cf } },
840203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RF_CTL3,
841203c4805SLuis R. Rodriguez 	   { 0x0a020001, 0x0a020001, 0x05020100, 0x0a020001, 0x0a020001 } },
842203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RF_CTL4,
843203c4805SLuis R. Rodriguez 	   { 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e } },
844203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PA_CTL,
845203c4805SLuis R. Rodriguez 	   { 0x00000007, 0x00000007, 0x0000000b, 0x0000000b, 0x0000000b } },
846203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN,
847203c4805SLuis R. Rodriguez 	   { 0x0018fa61, 0x0018fa61, 0x001a1a63, 0x001a1a63, 0x001a1a63 } },
848203c4805SLuis R. Rodriguez 	{ AR5K_PHY_DESIRED_SIZE,
849203c4805SLuis R. Rodriguez 	   { 0x0c98b4e0, 0x0c98b4e0, 0x0c98b0da, 0x0c98b0da, 0x0c98b0da } },
850203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SIG,
851203c4805SLuis R. Rodriguez 	   { 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e } },
852203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGCCOARSE,
853203c4805SLuis R. Rodriguez 	   { 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e } },
854203c4805SLuis R. Rodriguez 	{ AR5K_PHY_WEAK_OFDM_LOW_THR,
855203c4805SLuis R. Rodriguez 	   { 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 } },
856203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RX_DELAY,
857203c4805SLuis R. Rodriguez 	   { 0x000007d0, 0x000007d0, 0x0000044c, 0x00000898, 0x000007d0 } },
858203c4805SLuis R. Rodriguez 	{ AR5K_PHY_FRAME_CTL_5211,
859203c4805SLuis R. Rodriguez 	   { 0xf7b81000, 0xf7b81000, 0xf7b80d00, 0xf7b81000, 0xf7b81000 } },
860203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCKTXCTL,
861203c4805SLuis R. Rodriguez 	   { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } },
862203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCK_CROSSCORR,
863203c4805SLuis R. Rodriguez 	   { 0xd6be6788, 0xd6be6788, 0xd03e6788, 0xd03e6788, 0xd03e6788 } },
864203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN_2GHZ,
865203c4805SLuis R. Rodriguez 	   { 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120 } },
866203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCK_RX_CTL_4,
867203c4805SLuis R. Rodriguez 	   { 0x1883800a, 0x1883800a, 0x1863800a, 0x1883800a, 0x1883800a } },
868203c4805SLuis R. Rodriguez 	{ 0xa300,
869203c4805SLuis R. Rodriguez 	   { 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000 } },
870203c4805SLuis R. Rodriguez 	{ 0xa304,
871203c4805SLuis R. Rodriguez 	   { 0x30032602, 0x30032602, 0x30032602, 0x30032602, 0x30032602 } },
872203c4805SLuis R. Rodriguez 	{ 0xa308,
873203c4805SLuis R. Rodriguez 	   { 0x48073e06, 0x48073e06, 0x48073e06, 0x48073e06, 0x48073e06 } },
874203c4805SLuis R. Rodriguez 	{ 0xa30c,
875203c4805SLuis R. Rodriguez 	   { 0x560b4c0a, 0x560b4c0a, 0x560b4c0a, 0x560b4c0a, 0x560b4c0a } },
876203c4805SLuis R. Rodriguez 	{ 0xa310,
877203c4805SLuis R. Rodriguez 	   { 0x641a600f, 0x641a600f, 0x641a600f, 0x641a600f, 0x641a600f } },
878203c4805SLuis R. Rodriguez 	{ 0xa314,
879203c4805SLuis R. Rodriguez 	   { 0x784f6e1b, 0x784f6e1b, 0x784f6e1b, 0x784f6e1b, 0x784f6e1b } },
880203c4805SLuis R. Rodriguez 	{ 0xa318,
881203c4805SLuis R. Rodriguez 	   { 0x868f7c5a, 0x868f7c5a, 0x868f7c5a, 0x868f7c5a, 0x868f7c5a } },
882203c4805SLuis R. Rodriguez 	{ 0xa31c,
883203c4805SLuis R. Rodriguez 	   { 0x90cf865b, 0x90cf865b, 0x8ecf865b, 0x8ecf865b, 0x8ecf865b } },
884203c4805SLuis R. Rodriguez 	{ 0xa320,
885203c4805SLuis R. Rodriguez 	   { 0x9d4f970f, 0x9d4f970f, 0x9b4f970f, 0x9b4f970f, 0x9b4f970f } },
886203c4805SLuis R. Rodriguez 	{ 0xa324,
887203c4805SLuis R. Rodriguez 	   { 0xa7cfa38f, 0xa7cfa38f, 0xa3cf9f8f, 0xa3cf9f8f, 0xa3cf9f8f } },
888203c4805SLuis R. Rodriguez 	{ 0xa328,
889203c4805SLuis R. Rodriguez 	   { 0xb55faf1f, 0xb55faf1f, 0xb35faf1f, 0xb35faf1f, 0xb35faf1f } },
890203c4805SLuis R. Rodriguez 	{ 0xa32c,
891203c4805SLuis R. Rodriguez 	   { 0xbddfb99f, 0xbddfb99f, 0xbbdfb99f, 0xbbdfb99f, 0xbbdfb99f } },
892203c4805SLuis R. Rodriguez 	{ 0xa330,
893203c4805SLuis R. Rodriguez 	   { 0xcb7fc53f, 0xcb7fc53f, 0xcb7fc73f, 0xcb7fc73f, 0xcb7fc73f } },
894203c4805SLuis R. Rodriguez 	{ 0xa334,
895203c4805SLuis R. Rodriguez 	   { 0xd5ffd1bf, 0xd5ffd1bf, 0xd3ffd1bf, 0xd3ffd1bf, 0xd3ffd1bf } },
896203c4805SLuis R. Rodriguez };
897203c4805SLuis R. Rodriguez 
898203c4805SLuis R. Rodriguez static const struct ath5k_ini rf5413_ini_common_end[] = {
899203c4805SLuis R. Rodriguez 	{ AR5K_DCU_FP,		0x000003e0 },
900203c4805SLuis R. Rodriguez 	{ AR5K_5414_CBCFG,	0x00000010 },
901203c4805SLuis R. Rodriguez 	{ AR5K_SEQ_MASK,	0x0000000f },
902203c4805SLuis R. Rodriguez 	{ 0x809c,		0x00000000 },
903203c4805SLuis R. Rodriguez 	{ 0x80a0,		0x00000000 },
904203c4805SLuis R. Rodriguez 	{ AR5K_MIC_QOS_CTL,	0x00000000 },
905203c4805SLuis R. Rodriguez 	{ AR5K_MIC_QOS_SEL,	0x00000000 },
906203c4805SLuis R. Rodriguez 	{ AR5K_MISC_MODE,	0x00000000 },
907203c4805SLuis R. Rodriguez 	{ AR5K_OFDM_FIL_CNT,	0x00000000 },
908203c4805SLuis R. Rodriguez 	{ AR5K_CCK_FIL_CNT,	0x00000000 },
909203c4805SLuis R. Rodriguez 	{ AR5K_PHYERR_CNT1,	0x00000000 },
910203c4805SLuis R. Rodriguez 	{ AR5K_PHYERR_CNT1_MASK, 0x00000000 },
911203c4805SLuis R. Rodriguez 	{ AR5K_PHYERR_CNT2,	0x00000000 },
912203c4805SLuis R. Rodriguez 	{ AR5K_PHYERR_CNT2_MASK, 0x00000000 },
913203c4805SLuis R. Rodriguez 	{ AR5K_TSF_THRES,	0x00000000 },
914203c4805SLuis R. Rodriguez 	{ 0x8140,		0x800003f9 },
915203c4805SLuis R. Rodriguez 	{ 0x8144,		0x00000000 },
916203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGC,		0x00000000 },
917203c4805SLuis R. Rodriguez 	{ AR5K_PHY_ADC_CTL,	0x0000a000 },
918203c4805SLuis R. Rodriguez 	{ 0x983c,		0x00200400 },
919203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN_OFFSET, 0x1284233c },
920203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SCR,		0x0000001f },
921203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SLMT,	0x00000080 },
922203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SCAL,	0x0000000e },
923203c4805SLuis R. Rodriguez 	{ 0x9958,		0x00081fff },
924203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TIMING_7,	0x00000000 },
925203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TIMING_8,	0x02800000 },
926203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TIMING_11,	0x00000000 },
927203c4805SLuis R. Rodriguez 	{ AR5K_PHY_HEAVY_CLIP_ENABLE, 0x00000000 },
928203c4805SLuis R. Rodriguez 	{ 0x99e4,		0xaaaaaaaa },
929203c4805SLuis R. Rodriguez 	{ 0x99e8,		0x3c466478 },
930203c4805SLuis R. Rodriguez 	{ 0x99ec,		0x000000aa },
931203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SCLOCK,	0x0000000c },
932203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SDELAY,	0x000000ff },
933203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SPENDING,	0x00000014 },
934203c4805SLuis R. Rodriguez 	{ AR5K_PHY_DAG_CCK_CTL, 0x000009b5 },
935203c4805SLuis R. Rodriguez 	{ 0xa23c,		0x93c889af },
936203c4805SLuis R. Rodriguez 	{ AR5K_PHY_FAST_ADC,	0x00000001 },
937203c4805SLuis R. Rodriguez 	{ 0xa250,		0x0000a000 },
938203c4805SLuis R. Rodriguez 	{ AR5K_PHY_BLUETOOTH,	0x00000000 },
939203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TPC_RG1,	0x0cc75380 },
940203c4805SLuis R. Rodriguez 	{ 0xa25c,		0x0f0f0f01 },
941203c4805SLuis R. Rodriguez 	{ 0xa260,		0x5f690f01 },
942203c4805SLuis R. Rodriguez 	{ 0xa264,		0x00418a11 },
943203c4805SLuis R. Rodriguez 	{ 0xa268,		0x00000000 },
944203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TPC_RG5,	0x0c30c16a },
945203c4805SLuis R. Rodriguez 	{ 0xa270, 0x00820820 },
946203c4805SLuis R. Rodriguez 	{ 0xa274, 0x081b7caa },
947203c4805SLuis R. Rodriguez 	{ 0xa278, 0x1ce739ce },
948203c4805SLuis R. Rodriguez 	{ 0xa27c, 0x051701ce },
949203c4805SLuis R. Rodriguez 	{ 0xa338, 0x00000000 },
950203c4805SLuis R. Rodriguez 	{ 0xa33c, 0x00000000 },
951203c4805SLuis R. Rodriguez 	{ 0xa340, 0x00000000 },
952203c4805SLuis R. Rodriguez 	{ 0xa344, 0x00000000 },
953203c4805SLuis R. Rodriguez 	{ 0xa348, 0x3fffffff },
954203c4805SLuis R. Rodriguez 	{ 0xa34c, 0x3fffffff },
955203c4805SLuis R. Rodriguez 	{ 0xa350, 0x3fffffff },
956203c4805SLuis R. Rodriguez 	{ 0xa354, 0x0003ffff },
957203c4805SLuis R. Rodriguez 	{ 0xa358, 0x79a8aa1f },
958203c4805SLuis R. Rodriguez 	{ 0xa35c, 0x066c420f },
959203c4805SLuis R. Rodriguez 	{ 0xa360, 0x0f282207 },
960203c4805SLuis R. Rodriguez 	{ 0xa364, 0x17601685 },
961203c4805SLuis R. Rodriguez 	{ 0xa368, 0x1f801104 },
962203c4805SLuis R. Rodriguez 	{ 0xa36c, 0x37a00c03 },
963203c4805SLuis R. Rodriguez 	{ 0xa370, 0x3fc40883 },
964203c4805SLuis R. Rodriguez 	{ 0xa374, 0x57c00803 },
965203c4805SLuis R. Rodriguez 	{ 0xa378, 0x5fd80682 },
966203c4805SLuis R. Rodriguez 	{ 0xa37c, 0x7fe00482 },
967203c4805SLuis R. Rodriguez 	{ 0xa380, 0x7f3c7bba },
968203c4805SLuis R. Rodriguez 	{ 0xa384, 0xf3307ff0 },
969203c4805SLuis R. Rodriguez };
970203c4805SLuis R. Rodriguez 
971203c4805SLuis R. Rodriguez /* Initial mode-specific settings for RF2413/2414 (Written after ar5212_ini) */
972203c4805SLuis R. Rodriguez /* XXX: a mode ? */
973203c4805SLuis R. Rodriguez static const struct ath5k_ini_mode rf2413_ini_mode_end[] = {
974203c4805SLuis R. Rodriguez 	{ AR5K_TXCFG,
975203c4805SLuis R. Rodriguez 	/*	a/XR	   aTurbo	  b	   g (DYN)     gTurbo     */
976203c4805SLuis R. Rodriguez 	   { 0x00000015, 0x00000015, 0x00000015, 0x00000015, 0x00000015 } },
977203c4805SLuis R. Rodriguez 	{ AR5K_USEC_5211,
978203c4805SLuis R. Rodriguez 	   { 0x128d93a7, 0x098813cf, 0x04e01395, 0x12e013ab, 0x098813cf } },
979203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RF_CTL3,
980203c4805SLuis R. Rodriguez 	   { 0x0a020001, 0x0a020001, 0x05020000, 0x0a020001, 0x0a020001 } },
981203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RF_CTL4,
982203c4805SLuis R. Rodriguez 	   { 0x00000e00, 0x00000e00, 0x00000e00, 0x00000e00, 0x00000e00 } },
983203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PA_CTL,
984203c4805SLuis R. Rodriguez 	   { 0x00000002, 0x00000002, 0x0000000a, 0x0000000a, 0x0000000a } },
985203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN,
986203c4805SLuis R. Rodriguez 	   { 0x0018da6d, 0x0018da6d, 0x001a6a64, 0x001a6a64, 0x001a6a64 } },
987203c4805SLuis R. Rodriguez 	{ AR5K_PHY_DESIRED_SIZE,
988203c4805SLuis R. Rodriguez 	   { 0x0de8b4e0, 0x0de8b4e0, 0x0de8b0da, 0x0c98b0da, 0x0de8b0da } },
989203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SIG,
990203c4805SLuis R. Rodriguez 	   { 0x7e800d2e, 0x7e800d2e, 0x7ee80d2e, 0x7ec80d2e, 0x7e800d2e } },
991203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGCCOARSE,
992203c4805SLuis R. Rodriguez 	   { 0x3137665e, 0x3137665e, 0x3137665e, 0x3139605e, 0x3137665e } },
993203c4805SLuis R. Rodriguez 	{ AR5K_PHY_WEAK_OFDM_LOW_THR,
994203c4805SLuis R. Rodriguez 	   { 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 } },
995203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RX_DELAY,
996203c4805SLuis R. Rodriguez 	   { 0x000007d0, 0x000007d0, 0x0000044c, 0x00000898, 0x000007d0 } },
997203c4805SLuis R. Rodriguez 	{ AR5K_PHY_FRAME_CTL_5211,
998203c4805SLuis R. Rodriguez 	   { 0xf7b81000, 0xf7b81000, 0xf7b80d00, 0xf7b81000, 0xf7b81000 } },
999203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCKTXCTL,
1000203c4805SLuis R. Rodriguez 	   { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } },
1001203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCK_CROSSCORR,
1002203c4805SLuis R. Rodriguez 	   { 0xd6be6788, 0xd6be6788, 0xd03e6788, 0xd03e6788, 0xd03e6788 } },
1003203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN_2GHZ,
1004203c4805SLuis R. Rodriguez 	   { 0x002c0140, 0x002c0140, 0x0042c140, 0x0042c140, 0x0042c140 } },
1005203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCK_RX_CTL_4,
1006203c4805SLuis R. Rodriguez 	   { 0x1883800a, 0x1883800a, 0x1863800a, 0x1883800a, 0x1883800a } },
1007203c4805SLuis R. Rodriguez };
1008203c4805SLuis R. Rodriguez 
1009203c4805SLuis R. Rodriguez static const struct ath5k_ini rf2413_ini_common_end[] = {
1010203c4805SLuis R. Rodriguez 	{ AR5K_DCU_FP,		0x000003e0 },
1011203c4805SLuis R. Rodriguez 	{ AR5K_SEQ_MASK,	0x0000000f },
1012203c4805SLuis R. Rodriguez 	{ AR5K_MIC_QOS_CTL,	0x00000000 },
1013203c4805SLuis R. Rodriguez 	{ AR5K_MIC_QOS_SEL,	0x00000000 },
1014203c4805SLuis R. Rodriguez 	{ AR5K_MISC_MODE,	0x00000000 },
1015203c4805SLuis R. Rodriguez 	{ AR5K_OFDM_FIL_CNT,	0x00000000 },
1016203c4805SLuis R. Rodriguez 	{ AR5K_CCK_FIL_CNT,	0x00000000 },
1017203c4805SLuis R. Rodriguez 	{ AR5K_PHYERR_CNT1,	0x00000000 },
1018203c4805SLuis R. Rodriguez 	{ AR5K_PHYERR_CNT1_MASK, 0x00000000 },
1019203c4805SLuis R. Rodriguez 	{ AR5K_PHYERR_CNT2,	0x00000000 },
1020203c4805SLuis R. Rodriguez 	{ AR5K_PHYERR_CNT2_MASK, 0x00000000 },
1021203c4805SLuis R. Rodriguez 	{ AR5K_TSF_THRES,	0x00000000 },
1022203c4805SLuis R. Rodriguez 	{ 0x8140,		0x800000a8 },
1023203c4805SLuis R. Rodriguez 	{ 0x8144,		0x00000000 },
1024203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGC,		0x00000000 },
1025203c4805SLuis R. Rodriguez 	{ AR5K_PHY_ADC_CTL,	0x0000a000 },
1026203c4805SLuis R. Rodriguez 	{ 0x983c,		0x00200400 },
1027203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN_OFFSET,	0x1284233c },
1028203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SCR,		0x0000001f },
1029203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SLMT,	0x00000080 },
1030203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SCAL,	0x0000000e },
1031203c4805SLuis R. Rodriguez 	{ 0x9958,		0x000000ff },
1032203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TIMING_7,	0x00000000 },
1033203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TIMING_8,	0x02800000 },
1034203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TIMING_11,	0x00000000 },
1035203c4805SLuis R. Rodriguez 	{ AR5K_PHY_HEAVY_CLIP_ENABLE, 0x00000000 },
1036203c4805SLuis R. Rodriguez 	{ 0x99e4,		0xaaaaaaaa },
1037203c4805SLuis R. Rodriguez 	{ 0x99e8,		0x3c466478 },
1038203c4805SLuis R. Rodriguez 	{ 0x99ec,		0x000000aa },
1039203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SCLOCK,	0x0000000c },
1040203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SDELAY,	0x000000ff },
1041203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SPENDING,	0x00000014 },
1042203c4805SLuis R. Rodriguez 	{ AR5K_PHY_DAG_CCK_CTL,	0x000009b5 },
1043203c4805SLuis R. Rodriguez 	{ 0xa23c,		0x93c889af },
1044203c4805SLuis R. Rodriguez 	{ AR5K_PHY_FAST_ADC,	0x00000001 },
1045203c4805SLuis R. Rodriguez 	{ 0xa250,		0x0000a000 },
1046203c4805SLuis R. Rodriguez 	{ AR5K_PHY_BLUETOOTH,	0x00000000 },
1047203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TPC_RG1,	0x0cc75380 },
1048203c4805SLuis R. Rodriguez 	{ 0xa25c,		0x0f0f0f01 },
1049203c4805SLuis R. Rodriguez 	{ 0xa260,		0x5f690f01 },
1050203c4805SLuis R. Rodriguez 	{ 0xa264,		0x00418a11 },
1051203c4805SLuis R. Rodriguez 	{ 0xa268,		0x00000000 },
1052203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TPC_RG5,	0x0c30c16a },
1053203c4805SLuis R. Rodriguez 	{ 0xa270, 0x00820820 },
1054203c4805SLuis R. Rodriguez 	{ 0xa274, 0x001b7caa },
1055203c4805SLuis R. Rodriguez 	{ 0xa278, 0x1ce739ce },
1056203c4805SLuis R. Rodriguez 	{ 0xa27c, 0x051701ce },
1057203c4805SLuis R. Rodriguez 	{ 0xa300, 0x18010000 },
1058203c4805SLuis R. Rodriguez 	{ 0xa304, 0x30032602 },
1059203c4805SLuis R. Rodriguez 	{ 0xa308, 0x48073e06 },
1060203c4805SLuis R. Rodriguez 	{ 0xa30c, 0x560b4c0a },
1061203c4805SLuis R. Rodriguez 	{ 0xa310, 0x641a600f },
1062203c4805SLuis R. Rodriguez 	{ 0xa314, 0x784f6e1b },
1063203c4805SLuis R. Rodriguez 	{ 0xa318, 0x868f7c5a },
1064203c4805SLuis R. Rodriguez 	{ 0xa31c, 0x8ecf865b },
1065203c4805SLuis R. Rodriguez 	{ 0xa320, 0x9d4f970f },
1066203c4805SLuis R. Rodriguez 	{ 0xa324, 0xa5cfa18f },
1067203c4805SLuis R. Rodriguez 	{ 0xa328, 0xb55faf1f },
1068203c4805SLuis R. Rodriguez 	{ 0xa32c, 0xbddfb99f },
1069203c4805SLuis R. Rodriguez 	{ 0xa330, 0xcd7fc73f },
1070203c4805SLuis R. Rodriguez 	{ 0xa334, 0xd5ffd1bf },
1071203c4805SLuis R. Rodriguez 	{ 0xa338, 0x00000000 },
1072203c4805SLuis R. Rodriguez 	{ 0xa33c, 0x00000000 },
1073203c4805SLuis R. Rodriguez 	{ 0xa340, 0x00000000 },
1074203c4805SLuis R. Rodriguez 	{ 0xa344, 0x00000000 },
1075203c4805SLuis R. Rodriguez 	{ 0xa348, 0x3fffffff },
1076203c4805SLuis R. Rodriguez 	{ 0xa34c, 0x3fffffff },
1077203c4805SLuis R. Rodriguez 	{ 0xa350, 0x3fffffff },
1078203c4805SLuis R. Rodriguez 	{ 0xa354, 0x0003ffff },
1079203c4805SLuis R. Rodriguez 	{ 0xa358, 0x79a8aa1f },
1080203c4805SLuis R. Rodriguez 	{ 0xa35c, 0x066c420f },
1081203c4805SLuis R. Rodriguez 	{ 0xa360, 0x0f282207 },
1082203c4805SLuis R. Rodriguez 	{ 0xa364, 0x17601685 },
1083203c4805SLuis R. Rodriguez 	{ 0xa368, 0x1f801104 },
1084203c4805SLuis R. Rodriguez 	{ 0xa36c, 0x37a00c03 },
1085203c4805SLuis R. Rodriguez 	{ 0xa370, 0x3fc40883 },
1086203c4805SLuis R. Rodriguez 	{ 0xa374, 0x57c00803 },
1087203c4805SLuis R. Rodriguez 	{ 0xa378, 0x5fd80682 },
1088203c4805SLuis R. Rodriguez 	{ 0xa37c, 0x7fe00482 },
1089203c4805SLuis R. Rodriguez 	{ 0xa380, 0x7f3c7bba },
1090203c4805SLuis R. Rodriguez 	{ 0xa384, 0xf3307ff0 },
1091203c4805SLuis R. Rodriguez };
1092203c4805SLuis R. Rodriguez 
1093203c4805SLuis R. Rodriguez /* Initial mode-specific settings for RF2425 (Written after ar5212_ini) */
1094203c4805SLuis R. Rodriguez /* XXX: a mode ? */
1095203c4805SLuis R. Rodriguez static const struct ath5k_ini_mode rf2425_ini_mode_end[] = {
1096203c4805SLuis R. Rodriguez 	{ AR5K_TXCFG,
1097203c4805SLuis R. Rodriguez 	/*	a/XR	   aTurbo	  b	   g (DYN)     gTurbo     */
1098203c4805SLuis R. Rodriguez 	   { 0x00000015, 0x00000015, 0x00000015, 0x00000015, 0x00000015 } },
1099203c4805SLuis R. Rodriguez 	{ AR5K_USEC_5211,
1100203c4805SLuis R. Rodriguez 	   { 0x128d93a7, 0x098813cf, 0x04e01395, 0x12e013ab, 0x098813cf } },
1101203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TURBO,
1102203c4805SLuis R. Rodriguez 	   { 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000001 } },
1103203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RF_CTL3,
1104203c4805SLuis R. Rodriguez 	   { 0x0a020001, 0x0a020001, 0x05020100, 0x0a020001, 0x0a020001 } },
1105203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RF_CTL4,
1106203c4805SLuis R. Rodriguez 	   { 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e } },
1107203c4805SLuis R. Rodriguez 	{ AR5K_PHY_PA_CTL,
1108203c4805SLuis R. Rodriguez 	   { 0x00000003, 0x00000003, 0x0000000b, 0x0000000b, 0x0000000b } },
1109203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SETTLING,
1110203c4805SLuis R. Rodriguez 	   { 0x1372161c, 0x13721c25, 0x13721722, 0x13721422, 0x13721c25 } },
1111203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN,
1112203c4805SLuis R. Rodriguez 	   { 0x0018fa61, 0x0018fa61, 0x00199a65, 0x00199a65, 0x00199a65 } },
1113203c4805SLuis R. Rodriguez 	{ AR5K_PHY_DESIRED_SIZE,
1114203c4805SLuis R. Rodriguez 	   { 0x0c98b4e0, 0x0c98b4e0, 0x0c98b0da, 0x0c98b0da, 0x0c98b0da } },
1115203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SIG,
1116203c4805SLuis R. Rodriguez 	   { 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e } },
1117203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGCCOARSE,
1118203c4805SLuis R. Rodriguez 	   { 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e } },
1119203c4805SLuis R. Rodriguez 	{ AR5K_PHY_WEAK_OFDM_LOW_THR,
1120203c4805SLuis R. Rodriguez 	   { 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081 } },
1121203c4805SLuis R. Rodriguez 	{ AR5K_PHY_RX_DELAY,
1122203c4805SLuis R. Rodriguez 	   { 0x000007d0, 0x000007d0, 0x0000044c, 0x00000898, 0x000007d0 } },
1123203c4805SLuis R. Rodriguez 	{ AR5K_PHY_FRAME_CTL_5211,
1124203c4805SLuis R. Rodriguez 	   { 0xf7b81000, 0xf7b81000, 0xf7b80d00, 0xf7b81000, 0xf7b81000 } },
1125203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCKTXCTL,
1126203c4805SLuis R. Rodriguez 	   { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } },
1127203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCK_CROSSCORR,
1128203c4805SLuis R. Rodriguez 	   { 0xd6be6788, 0xd6be6788, 0xd03e6788, 0xd03e6788, 0xd03e6788 } },
1129203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN_2GHZ,
1130203c4805SLuis R. Rodriguez 	   { 0x00000140, 0x00000140, 0x0052c140, 0x0052c140, 0x0052c140 } },
1131203c4805SLuis R. Rodriguez 	{ AR5K_PHY_CCK_RX_CTL_4,
1132203c4805SLuis R. Rodriguez 	   { 0x1883800a, 0x1883800a, 0x1863800a, 0x1883800a, 0x1883800a } },
1133203c4805SLuis R. Rodriguez 	{ 0xa324,
1134203c4805SLuis R. Rodriguez 	   { 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf } },
1135203c4805SLuis R. Rodriguez 	{ 0xa328,
1136203c4805SLuis R. Rodriguez 	   { 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf } },
1137203c4805SLuis R. Rodriguez 	{ 0xa32c,
1138203c4805SLuis R. Rodriguez 	   { 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf } },
1139203c4805SLuis R. Rodriguez 	{ 0xa330,
1140203c4805SLuis R. Rodriguez 	   { 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf } },
1141203c4805SLuis R. Rodriguez 	{ 0xa334,
1142203c4805SLuis R. Rodriguez 	   { 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf, 0xa7cfa7cf } },
1143203c4805SLuis R. Rodriguez };
1144203c4805SLuis R. Rodriguez 
1145203c4805SLuis R. Rodriguez static const struct ath5k_ini rf2425_ini_common_end[] = {
1146203c4805SLuis R. Rodriguez 	{ AR5K_DCU_FP,		0x000003e0 },
1147203c4805SLuis R. Rodriguez 	{ AR5K_SEQ_MASK,	0x0000000f },
1148203c4805SLuis R. Rodriguez 	{ 0x809c,		0x00000000 },
1149203c4805SLuis R. Rodriguez 	{ 0x80a0,		0x00000000 },
1150203c4805SLuis R. Rodriguez 	{ AR5K_MIC_QOS_CTL,	0x00000000 },
1151203c4805SLuis R. Rodriguez 	{ AR5K_MIC_QOS_SEL,	0x00000000 },
1152203c4805SLuis R. Rodriguez 	{ AR5K_MISC_MODE,	0x00000000 },
1153203c4805SLuis R. Rodriguez 	{ AR5K_OFDM_FIL_CNT,	0x00000000 },
1154203c4805SLuis R. Rodriguez 	{ AR5K_CCK_FIL_CNT,	0x00000000 },
1155203c4805SLuis R. Rodriguez 	{ AR5K_PHYERR_CNT1,	0x00000000 },
1156203c4805SLuis R. Rodriguez 	{ AR5K_PHYERR_CNT1_MASK, 0x00000000 },
1157203c4805SLuis R. Rodriguez 	{ AR5K_PHYERR_CNT2,	0x00000000 },
1158203c4805SLuis R. Rodriguez 	{ AR5K_PHYERR_CNT2_MASK, 0x00000000 },
1159203c4805SLuis R. Rodriguez 	{ AR5K_TSF_THRES,	0x00000000 },
1160203c4805SLuis R. Rodriguez 	{ 0x8140,		0x800003f9 },
1161203c4805SLuis R. Rodriguez 	{ 0x8144,		0x00000000 },
1162203c4805SLuis R. Rodriguez 	{ AR5K_PHY_AGC,		0x00000000 },
1163203c4805SLuis R. Rodriguez 	{ AR5K_PHY_ADC_CTL,	0x0000a000 },
1164203c4805SLuis R. Rodriguez 	{ 0x983c,		0x00200400 },
1165203c4805SLuis R. Rodriguez 	{ AR5K_PHY_GAIN_OFFSET, 0x1284233c },
1166203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SCR,		0x0000001f },
1167203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SLMT,	0x00000080 },
1168203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SCAL,	0x0000000e },
1169203c4805SLuis R. Rodriguez 	{ 0x9958,		0x00081fff },
1170203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TIMING_7,	0x00000000 },
1171203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TIMING_8,	0x02800000 },
1172203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TIMING_11,	0x00000000 },
1173203c4805SLuis R. Rodriguez 	{ 0x99dc,		0xfebadbe8 },
1174203c4805SLuis R. Rodriguez 	{ AR5K_PHY_HEAVY_CLIP_ENABLE, 0x00000000 },
1175203c4805SLuis R. Rodriguez 	{ 0x99e4,		0xaaaaaaaa },
1176203c4805SLuis R. Rodriguez 	{ 0x99e8,		0x3c466478 },
1177203c4805SLuis R. Rodriguez 	{ 0x99ec,		0x000000aa },
1178203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SCLOCK,	0x0000000c },
1179203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SDELAY,	0x000000ff },
1180203c4805SLuis R. Rodriguez 	{ AR5K_PHY_SPENDING,	0x00000014 },
1181203c4805SLuis R. Rodriguez 	{ AR5K_PHY_DAG_CCK_CTL,	0x000009b5 },
1182203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TXPOWER_RATE3, 0x20202020 },
1183203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TXPOWER_RATE4, 0x20202020 },
1184203c4805SLuis R. Rodriguez 	{ 0xa23c,		0x93c889af },
1185203c4805SLuis R. Rodriguez 	{ AR5K_PHY_FAST_ADC,	0x00000001 },
1186203c4805SLuis R. Rodriguez 	{ 0xa250,		0x0000a000 },
1187203c4805SLuis R. Rodriguez 	{ AR5K_PHY_BLUETOOTH,	0x00000000 },
1188203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TPC_RG1,	0x0cc75380 },
1189203c4805SLuis R. Rodriguez 	{ 0xa25c,		0x0f0f0f01 },
1190203c4805SLuis R. Rodriguez 	{ 0xa260,		0x5f690f01 },
1191203c4805SLuis R. Rodriguez 	{ 0xa264,		0x00418a11 },
1192203c4805SLuis R. Rodriguez 	{ 0xa268,		0x00000000 },
1193203c4805SLuis R. Rodriguez 	{ AR5K_PHY_TPC_RG5,	0x0c30c166 },
1194203c4805SLuis R. Rodriguez 	{ 0xa270, 0x00820820 },
1195203c4805SLuis R. Rodriguez 	{ 0xa274, 0x081a3caa },
1196203c4805SLuis R. Rodriguez 	{ 0xa278, 0x1ce739ce },
1197203c4805SLuis R. Rodriguez 	{ 0xa27c, 0x051701ce },
1198203c4805SLuis R. Rodriguez 	{ 0xa300, 0x16010000 },
1199203c4805SLuis R. Rodriguez 	{ 0xa304, 0x2c032402 },
1200203c4805SLuis R. Rodriguez 	{ 0xa308, 0x48433e42 },
1201203c4805SLuis R. Rodriguez 	{ 0xa30c, 0x5a0f500b },
1202203c4805SLuis R. Rodriguez 	{ 0xa310, 0x6c4b624a },
1203203c4805SLuis R. Rodriguez 	{ 0xa314, 0x7e8b748a },
1204203c4805SLuis R. Rodriguez 	{ 0xa318, 0x96cf8ccb },
1205203c4805SLuis R. Rodriguez 	{ 0xa31c, 0xa34f9d0f },
1206203c4805SLuis R. Rodriguez 	{ 0xa320, 0xa7cfa58f },
1207203c4805SLuis R. Rodriguez 	{ 0xa348, 0x3fffffff },
1208203c4805SLuis R. Rodriguez 	{ 0xa34c, 0x3fffffff },
1209203c4805SLuis R. Rodriguez 	{ 0xa350, 0x3fffffff },
1210203c4805SLuis R. Rodriguez 	{ 0xa354, 0x0003ffff },
1211203c4805SLuis R. Rodriguez 	{ 0xa358, 0x79a8aa1f },
1212203c4805SLuis R. Rodriguez 	{ 0xa35c, 0x066c420f },
1213203c4805SLuis R. Rodriguez 	{ 0xa360, 0x0f282207 },
1214203c4805SLuis R. Rodriguez 	{ 0xa364, 0x17601685 },
1215203c4805SLuis R. Rodriguez 	{ 0xa368, 0x1f801104 },
1216203c4805SLuis R. Rodriguez 	{ 0xa36c, 0x37a00c03 },
1217203c4805SLuis R. Rodriguez 	{ 0xa370, 0x3fc40883 },
1218203c4805SLuis R. Rodriguez 	{ 0xa374, 0x57c00803 },
1219203c4805SLuis R. Rodriguez 	{ 0xa378, 0x5fd80682 },
1220203c4805SLuis R. Rodriguez 	{ 0xa37c, 0x7fe00482 },
1221203c4805SLuis R. Rodriguez 	{ 0xa380, 0x7f3c7bba },
1222203c4805SLuis R. Rodriguez 	{ 0xa384, 0xf3307ff0 },
1223203c4805SLuis R. Rodriguez };
1224203c4805SLuis R. Rodriguez 
1225203c4805SLuis R. Rodriguez /*
1226203c4805SLuis R. Rodriguez  * Initial BaseBand Gain settings for RF5111/5112 (AR5210 comes with
1227203c4805SLuis R. Rodriguez  * RF5110 only so initial BB Gain settings are included in AR5K_AR5210_INI)
1228203c4805SLuis R. Rodriguez  */
1229203c4805SLuis R. Rodriguez 
1230203c4805SLuis R. Rodriguez /* RF5111 Initial BaseBand Gain settings */
1231203c4805SLuis R. Rodriguez static const struct ath5k_ini rf5111_ini_bbgain[] = {
1232203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(0), 0x00000000 },
1233203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(1), 0x00000020 },
1234203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(2), 0x00000010 },
1235203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(3), 0x00000030 },
1236203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(4), 0x00000008 },
1237203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(5), 0x00000028 },
1238203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(6), 0x00000004 },
1239203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(7), 0x00000024 },
1240203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(8), 0x00000014 },
1241203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(9), 0x00000034 },
1242203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(10), 0x0000000c },
1243203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(11), 0x0000002c },
1244203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(12), 0x00000002 },
1245203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(13), 0x00000022 },
1246203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(14), 0x00000012 },
1247203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(15), 0x00000032 },
1248203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(16), 0x0000000a },
1249203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(17), 0x0000002a },
1250203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(18), 0x00000006 },
1251203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(19), 0x00000026 },
1252203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(20), 0x00000016 },
1253203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(21), 0x00000036 },
1254203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(22), 0x0000000e },
1255203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(23), 0x0000002e },
1256203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(24), 0x00000001 },
1257203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(25), 0x00000021 },
1258203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(26), 0x00000011 },
1259203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(27), 0x00000031 },
1260203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(28), 0x00000009 },
1261203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(29), 0x00000029 },
1262203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(30), 0x00000005 },
1263203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(31), 0x00000025 },
1264203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(32), 0x00000015 },
1265203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(33), 0x00000035 },
1266203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(34), 0x0000000d },
1267203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(35), 0x0000002d },
1268203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(36), 0x00000003 },
1269203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(37), 0x00000023 },
1270203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(38), 0x00000013 },
1271203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(39), 0x00000033 },
1272203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(40), 0x0000000b },
1273203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(41), 0x0000002b },
1274203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(42), 0x0000002b },
1275203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(43), 0x0000002b },
1276203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(44), 0x0000002b },
1277203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(45), 0x0000002b },
1278203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(46), 0x0000002b },
1279203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(47), 0x0000002b },
1280203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(48), 0x0000002b },
1281203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(49), 0x0000002b },
1282203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(50), 0x0000002b },
1283203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(51), 0x0000002b },
1284203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(52), 0x0000002b },
1285203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(53), 0x0000002b },
1286203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(54), 0x0000002b },
1287203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(55), 0x0000002b },
1288203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(56), 0x0000002b },
1289203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(57), 0x0000002b },
1290203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(58), 0x0000002b },
1291203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(59), 0x0000002b },
1292203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(60), 0x0000002b },
1293203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(61), 0x0000002b },
1294203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(62), 0x00000002 },
1295203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(63), 0x00000016 },
1296203c4805SLuis R. Rodriguez };
1297203c4805SLuis R. Rodriguez 
1298203c4805SLuis R. Rodriguez /* RF5112 Initial BaseBand Gain settings (Same for RF5413/5414+) */
1299203c4805SLuis R. Rodriguez static const struct ath5k_ini rf5112_ini_bbgain[] = {
1300203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(0), 0x00000000 },
1301203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(1), 0x00000001 },
1302203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(2), 0x00000002 },
1303203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(3), 0x00000003 },
1304203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(4), 0x00000004 },
1305203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(5), 0x00000005 },
1306203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(6), 0x00000008 },
1307203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(7), 0x00000009 },
1308203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(8), 0x0000000a },
1309203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(9), 0x0000000b },
1310203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(10), 0x0000000c },
1311203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(11), 0x0000000d },
1312203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(12), 0x00000010 },
1313203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(13), 0x00000011 },
1314203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(14), 0x00000012 },
1315203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(15), 0x00000013 },
1316203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(16), 0x00000014 },
1317203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(17), 0x00000015 },
1318203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(18), 0x00000018 },
1319203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(19), 0x00000019 },
1320203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(20), 0x0000001a },
1321203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(21), 0x0000001b },
1322203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(22), 0x0000001c },
1323203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(23), 0x0000001d },
1324203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(24), 0x00000020 },
1325203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(25), 0x00000021 },
1326203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(26), 0x00000022 },
1327203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(27), 0x00000023 },
1328203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(28), 0x00000024 },
1329203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(29), 0x00000025 },
1330203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(30), 0x00000028 },
1331203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(31), 0x00000029 },
1332203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(32), 0x0000002a },
1333203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(33), 0x0000002b },
1334203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(34), 0x0000002c },
1335203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(35), 0x0000002d },
1336203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(36), 0x00000030 },
1337203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(37), 0x00000031 },
1338203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(38), 0x00000032 },
1339203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(39), 0x00000033 },
1340203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(40), 0x00000034 },
1341203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(41), 0x00000035 },
1342203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(42), 0x00000035 },
1343203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(43), 0x00000035 },
1344203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(44), 0x00000035 },
1345203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(45), 0x00000035 },
1346203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(46), 0x00000035 },
1347203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(47), 0x00000035 },
1348203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(48), 0x00000035 },
1349203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(49), 0x00000035 },
1350203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(50), 0x00000035 },
1351203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(51), 0x00000035 },
1352203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(52), 0x00000035 },
1353203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(53), 0x00000035 },
1354203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(54), 0x00000035 },
1355203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(55), 0x00000035 },
1356203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(56), 0x00000035 },
1357203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(57), 0x00000035 },
1358203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(58), 0x00000035 },
1359203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(59), 0x00000035 },
1360203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(60), 0x00000035 },
1361203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(61), 0x00000035 },
1362203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(62), 0x00000010 },
1363203c4805SLuis R. Rodriguez 	{ AR5K_BB_GAIN(63), 0x0000001a },
1364203c4805SLuis R. Rodriguez };
1365203c4805SLuis R. Rodriguez 
1366203c4805SLuis R. Rodriguez 
1367203c4805SLuis R. Rodriguez /*
1368203c4805SLuis R. Rodriguez  * Write initial register dump
1369203c4805SLuis R. Rodriguez  */
1370203c4805SLuis R. Rodriguez static void ath5k_hw_ini_registers(struct ath5k_hw *ah, unsigned int size,
1371203c4805SLuis R. Rodriguez 		const struct ath5k_ini *ini_regs, bool change_channel)
1372203c4805SLuis R. Rodriguez {
1373203c4805SLuis R. Rodriguez 	unsigned int i;
1374203c4805SLuis R. Rodriguez 
1375203c4805SLuis R. Rodriguez 	/* Write initial registers */
1376203c4805SLuis R. Rodriguez 	for (i = 0; i < size; i++) {
1377203c4805SLuis R. Rodriguez 		/* On channel change there is
1378203c4805SLuis R. Rodriguez 		 * no need to mess with PCU */
1379203c4805SLuis R. Rodriguez 		if (change_channel &&
1380203c4805SLuis R. Rodriguez 				ini_regs[i].ini_register >= AR5K_PCU_MIN &&
1381203c4805SLuis R. Rodriguez 				ini_regs[i].ini_register <= AR5K_PCU_MAX)
1382203c4805SLuis R. Rodriguez 			continue;
1383203c4805SLuis R. Rodriguez 
1384203c4805SLuis R. Rodriguez 		switch (ini_regs[i].ini_mode) {
1385203c4805SLuis R. Rodriguez 		case AR5K_INI_READ:
1386203c4805SLuis R. Rodriguez 			/* Cleared on read */
1387203c4805SLuis R. Rodriguez 			ath5k_hw_reg_read(ah, ini_regs[i].ini_register);
1388203c4805SLuis R. Rodriguez 			break;
1389203c4805SLuis R. Rodriguez 		case AR5K_INI_WRITE:
1390203c4805SLuis R. Rodriguez 		default:
1391203c4805SLuis R. Rodriguez 			AR5K_REG_WAIT(i);
1392203c4805SLuis R. Rodriguez 			ath5k_hw_reg_write(ah, ini_regs[i].ini_value,
1393203c4805SLuis R. Rodriguez 					ini_regs[i].ini_register);
1394203c4805SLuis R. Rodriguez 		}
1395203c4805SLuis R. Rodriguez 	}
1396203c4805SLuis R. Rodriguez }
1397203c4805SLuis R. Rodriguez 
1398203c4805SLuis R. Rodriguez static void ath5k_hw_ini_mode_registers(struct ath5k_hw *ah,
1399203c4805SLuis R. Rodriguez 		unsigned int size, const struct ath5k_ini_mode *ini_mode,
1400203c4805SLuis R. Rodriguez 		u8 mode)
1401203c4805SLuis R. Rodriguez {
1402203c4805SLuis R. Rodriguez 	unsigned int i;
1403203c4805SLuis R. Rodriguez 
1404203c4805SLuis R. Rodriguez 	for (i = 0; i < size; i++) {
1405203c4805SLuis R. Rodriguez 		AR5K_REG_WAIT(i);
1406203c4805SLuis R. Rodriguez 		ath5k_hw_reg_write(ah, ini_mode[i].mode_value[mode],
1407203c4805SLuis R. Rodriguez 			(u32)ini_mode[i].mode_register);
1408203c4805SLuis R. Rodriguez 	}
1409203c4805SLuis R. Rodriguez 
1410203c4805SLuis R. Rodriguez }
1411203c4805SLuis R. Rodriguez 
1412203c4805SLuis R. Rodriguez int ath5k_hw_write_initvals(struct ath5k_hw *ah, u8 mode, bool change_channel)
1413203c4805SLuis R. Rodriguez {
1414203c4805SLuis R. Rodriguez 	/*
1415203c4805SLuis R. Rodriguez 	 * Write initial register settings
1416203c4805SLuis R. Rodriguez 	 */
1417203c4805SLuis R. Rodriguez 
1418203c4805SLuis R. Rodriguez 	/* For AR5212 and combatible */
1419203c4805SLuis R. Rodriguez 	if (ah->ah_version == AR5K_AR5212) {
1420203c4805SLuis R. Rodriguez 
1421203c4805SLuis R. Rodriguez 		/* First set of mode-specific settings */
1422203c4805SLuis R. Rodriguez 		ath5k_hw_ini_mode_registers(ah,
1423203c4805SLuis R. Rodriguez 			ARRAY_SIZE(ar5212_ini_mode_start),
1424203c4805SLuis R. Rodriguez 			ar5212_ini_mode_start, mode);
1425203c4805SLuis R. Rodriguez 
1426203c4805SLuis R. Rodriguez 		/*
1427203c4805SLuis R. Rodriguez 		 * Write initial settings common for all modes
1428203c4805SLuis R. Rodriguez 		 */
1429203c4805SLuis R. Rodriguez 		ath5k_hw_ini_registers(ah, ARRAY_SIZE(ar5212_ini_common_start),
1430203c4805SLuis R. Rodriguez 				ar5212_ini_common_start, change_channel);
1431203c4805SLuis R. Rodriguez 
1432203c4805SLuis R. Rodriguez 		/* Second set of mode-specific settings */
1433203c4805SLuis R. Rodriguez 		switch (ah->ah_radio) {
1434203c4805SLuis R. Rodriguez 		case AR5K_RF5111:
1435203c4805SLuis R. Rodriguez 
1436203c4805SLuis R. Rodriguez 			ath5k_hw_ini_mode_registers(ah,
1437203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf5111_ini_mode_end),
1438203c4805SLuis R. Rodriguez 					rf5111_ini_mode_end, mode);
1439203c4805SLuis R. Rodriguez 
1440203c4805SLuis R. Rodriguez 			ath5k_hw_ini_registers(ah,
1441203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf5111_ini_common_end),
1442203c4805SLuis R. Rodriguez 					rf5111_ini_common_end, change_channel);
1443203c4805SLuis R. Rodriguez 
1444203c4805SLuis R. Rodriguez 			/* Baseband gain table */
1445203c4805SLuis R. Rodriguez 			ath5k_hw_ini_registers(ah,
1446203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf5111_ini_bbgain),
1447203c4805SLuis R. Rodriguez 					rf5111_ini_bbgain, change_channel);
1448203c4805SLuis R. Rodriguez 
1449203c4805SLuis R. Rodriguez 			break;
1450203c4805SLuis R. Rodriguez 		case AR5K_RF5112:
1451203c4805SLuis R. Rodriguez 
1452203c4805SLuis R. Rodriguez 			ath5k_hw_ini_mode_registers(ah,
1453203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf5112_ini_mode_end),
1454203c4805SLuis R. Rodriguez 					rf5112_ini_mode_end, mode);
1455203c4805SLuis R. Rodriguez 
1456203c4805SLuis R. Rodriguez 			ath5k_hw_ini_registers(ah,
1457203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf5112_ini_common_end),
1458203c4805SLuis R. Rodriguez 					rf5112_ini_common_end, change_channel);
1459203c4805SLuis R. Rodriguez 
1460203c4805SLuis R. Rodriguez 			ath5k_hw_ini_registers(ah,
1461203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf5112_ini_bbgain),
1462203c4805SLuis R. Rodriguez 					rf5112_ini_bbgain, change_channel);
1463203c4805SLuis R. Rodriguez 
1464203c4805SLuis R. Rodriguez 			break;
1465203c4805SLuis R. Rodriguez 		case AR5K_RF5413:
1466203c4805SLuis R. Rodriguez 
1467203c4805SLuis R. Rodriguez 			ath5k_hw_ini_mode_registers(ah,
1468203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf5413_ini_mode_end),
1469203c4805SLuis R. Rodriguez 					rf5413_ini_mode_end, mode);
1470203c4805SLuis R. Rodriguez 
1471203c4805SLuis R. Rodriguez 			ath5k_hw_ini_registers(ah,
1472203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf5413_ini_common_end),
1473203c4805SLuis R. Rodriguez 					rf5413_ini_common_end, change_channel);
1474203c4805SLuis R. Rodriguez 
1475203c4805SLuis R. Rodriguez 			ath5k_hw_ini_registers(ah,
1476203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf5112_ini_bbgain),
1477203c4805SLuis R. Rodriguez 					rf5112_ini_bbgain, change_channel);
1478203c4805SLuis R. Rodriguez 
1479203c4805SLuis R. Rodriguez 			break;
1480203c4805SLuis R. Rodriguez 		case AR5K_RF2316:
1481203c4805SLuis R. Rodriguez 		case AR5K_RF2413:
1482203c4805SLuis R. Rodriguez 
1483203c4805SLuis R. Rodriguez 			ath5k_hw_ini_mode_registers(ah,
1484203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf2413_ini_mode_end),
1485203c4805SLuis R. Rodriguez 					rf2413_ini_mode_end, mode);
1486203c4805SLuis R. Rodriguez 
1487203c4805SLuis R. Rodriguez 			ath5k_hw_ini_registers(ah,
1488203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf2413_ini_common_end),
1489203c4805SLuis R. Rodriguez 					rf2413_ini_common_end, change_channel);
1490203c4805SLuis R. Rodriguez 
1491203c4805SLuis R. Rodriguez 			/* Override settings from rf2413_ini_common_end */
1492203c4805SLuis R. Rodriguez 			if (ah->ah_radio == AR5K_RF2316) {
1493203c4805SLuis R. Rodriguez 				ath5k_hw_reg_write(ah, 0x00004000,
1494203c4805SLuis R. Rodriguez 							AR5K_PHY_AGC);
1495203c4805SLuis R. Rodriguez 				ath5k_hw_reg_write(ah, 0x081b7caa,
1496203c4805SLuis R. Rodriguez 							0xa274);
1497203c4805SLuis R. Rodriguez 			}
1498203c4805SLuis R. Rodriguez 
1499203c4805SLuis R. Rodriguez 			ath5k_hw_ini_registers(ah,
1500203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf5112_ini_bbgain),
1501203c4805SLuis R. Rodriguez 					rf5112_ini_bbgain, change_channel);
1502203c4805SLuis R. Rodriguez 			break;
1503203c4805SLuis R. Rodriguez 		case AR5K_RF2317:
1504203c4805SLuis R. Rodriguez 		case AR5K_RF2425:
1505203c4805SLuis R. Rodriguez 
1506203c4805SLuis R. Rodriguez 			ath5k_hw_ini_mode_registers(ah,
1507203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf2425_ini_mode_end),
1508203c4805SLuis R. Rodriguez 					rf2425_ini_mode_end, mode);
1509203c4805SLuis R. Rodriguez 
1510203c4805SLuis R. Rodriguez 			ath5k_hw_ini_registers(ah,
1511203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf2425_ini_common_end),
1512203c4805SLuis R. Rodriguez 					rf2425_ini_common_end, change_channel);
1513203c4805SLuis R. Rodriguez 
1514203c4805SLuis R. Rodriguez 			ath5k_hw_ini_registers(ah,
1515203c4805SLuis R. Rodriguez 					ARRAY_SIZE(rf5112_ini_bbgain),
1516203c4805SLuis R. Rodriguez 					rf5112_ini_bbgain, change_channel);
1517203c4805SLuis R. Rodriguez 			break;
1518203c4805SLuis R. Rodriguez 		default:
1519203c4805SLuis R. Rodriguez 			return -EINVAL;
1520203c4805SLuis R. Rodriguez 
1521203c4805SLuis R. Rodriguez 		}
1522203c4805SLuis R. Rodriguez 
1523203c4805SLuis R. Rodriguez 	/* For AR5211 */
1524203c4805SLuis R. Rodriguez 	} else if (ah->ah_version == AR5K_AR5211) {
1525203c4805SLuis R. Rodriguez 
1526203c4805SLuis R. Rodriguez 		/* AR5K_MODE_11B */
1527203c4805SLuis R. Rodriguez 		if (mode > 2) {
1528203c4805SLuis R. Rodriguez 			ATH5K_ERR(ah->ah_sc,
1529203c4805SLuis R. Rodriguez 				"unsupported channel mode: %d\n", mode);
1530203c4805SLuis R. Rodriguez 			return -EINVAL;
1531203c4805SLuis R. Rodriguez 		}
1532203c4805SLuis R. Rodriguez 
1533203c4805SLuis R. Rodriguez 		/* Mode-specific settings */
1534203c4805SLuis R. Rodriguez 		ath5k_hw_ini_mode_registers(ah, ARRAY_SIZE(ar5211_ini_mode),
1535203c4805SLuis R. Rodriguez 				ar5211_ini_mode, mode);
1536203c4805SLuis R. Rodriguez 
1537203c4805SLuis R. Rodriguez 		/*
1538203c4805SLuis R. Rodriguez 		 * Write initial settings common for all modes
1539203c4805SLuis R. Rodriguez 		 */
1540203c4805SLuis R. Rodriguez 		ath5k_hw_ini_registers(ah, ARRAY_SIZE(ar5211_ini),
1541203c4805SLuis R. Rodriguez 				ar5211_ini, change_channel);
1542203c4805SLuis R. Rodriguez 
1543203c4805SLuis R. Rodriguez 		/* AR5211 only comes with 5111 */
1544203c4805SLuis R. Rodriguez 
1545203c4805SLuis R. Rodriguez 		/* Baseband gain table */
1546203c4805SLuis R. Rodriguez 		ath5k_hw_ini_registers(ah, ARRAY_SIZE(rf5111_ini_bbgain),
1547203c4805SLuis R. Rodriguez 				rf5111_ini_bbgain, change_channel);
1548203c4805SLuis R. Rodriguez 	/* For AR5210 (for mode settings check out ath5k_hw_reset_tx_queue) */
1549203c4805SLuis R. Rodriguez 	} else if (ah->ah_version == AR5K_AR5210) {
1550203c4805SLuis R. Rodriguez 		ath5k_hw_ini_registers(ah, ARRAY_SIZE(ar5210_ini),
1551203c4805SLuis R. Rodriguez 				ar5210_ini, change_channel);
1552203c4805SLuis R. Rodriguez 	}
1553203c4805SLuis R. Rodriguez 
1554203c4805SLuis R. Rodriguez 	return 0;
1555203c4805SLuis R. Rodriguez }
1556