1 /*
2  * Afatech AF9013 demodulator driver
3  *
4  * Copyright (C) 2007 Antti Palosaari <crope@iki.fi>
5  * Copyright (C) 2011 Antti Palosaari <crope@iki.fi>
6  *
7  * Thanks to Afatech who kindly provided information.
8  *
9  *    This program is free software; you can redistribute it and/or modify
10  *    it under the terms of the GNU General Public License as published by
11  *    the Free Software Foundation; either version 2 of the License, or
12  *    (at your option) any later version.
13  *
14  *    This program is distributed in the hope that it will be useful,
15  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
16  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  *    GNU General Public License for more details.
18  *
19  *    You should have received a copy of the GNU General Public License
20  *    along with this program; if not, write to the Free Software
21  *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22  *
23  */
24 
25 #ifndef AF9013_PRIV_H
26 #define AF9013_PRIV_H
27 
28 #include "dvb_frontend.h"
29 #include "af9013.h"
30 #include <linux/firmware.h>
31 
32 #define AF9013_FIRMWARE "dvb-fe-af9013.fw"
33 
34 struct af9013_reg_bit {
35 	u16 addr;
36 	u8  pos:4;
37 	u8  len:4;
38 	u8  val;
39 };
40 
41 struct af9013_snr {
42 	u32 val;
43 	u8 snr;
44 };
45 
46 struct af9013_coeff {
47 	u32 clock;
48 	u32 bandwidth_hz;
49 	u8 val[24];
50 };
51 
52 /* pre-calculated coeff lookup table */
53 static const struct af9013_coeff coeff_lut[] = {
54 	/* 28.800 MHz */
55 	{ 28800000, 8000000, { 0x02, 0x8a, 0x28, 0xa3, 0x05, 0x14,
56 		0x51, 0x11, 0x00, 0xa2, 0x8f, 0x3d, 0x00, 0xa2, 0x8a,
57 		0x29, 0x00, 0xa2, 0x85, 0x14, 0x01, 0x45, 0x14, 0x14 } },
58 	{ 28800000, 7000000, { 0x02, 0x38, 0xe3, 0x8e, 0x04, 0x71,
59 		0xc7, 0x07, 0x00, 0x8e, 0x3d, 0x55, 0x00, 0x8e, 0x38,
60 		0xe4, 0x00, 0x8e, 0x34, 0x72, 0x01, 0x1c, 0x71, 0x32 } },
61 	{ 28800000, 6000000, { 0x01, 0xe7, 0x9e, 0x7a, 0x03, 0xcf,
62 		0x3c, 0x3d, 0x00, 0x79, 0xeb, 0x6e, 0x00, 0x79, 0xe7,
63 		0x9e, 0x00, 0x79, 0xe3, 0xcf, 0x00, 0xf3, 0xcf, 0x0f } },
64 	/* 20.480 MHz */
65 	{ 20480000, 8000000, { 0x03, 0x92, 0x49, 0x26, 0x07, 0x24,
66 		0x92, 0x13, 0x00, 0xe4, 0x99, 0x6e, 0x00, 0xe4, 0x92,
67 		0x49, 0x00, 0xe4, 0x8b, 0x25, 0x01, 0xc9, 0x24, 0x25 } },
68 	{ 20480000, 7000000, { 0x03, 0x20, 0x00, 0x01, 0x06, 0x40,
69 		0x00, 0x00, 0x00, 0xc8, 0x06, 0x40, 0x00, 0xc8, 0x00,
70 		0x00, 0x00, 0xc7, 0xf9, 0xc0, 0x01, 0x90, 0x00, 0x00 } },
71 	{ 20480000, 6000000, { 0x02, 0xad, 0xb6, 0xdc, 0x05, 0x5b,
72 		0x6d, 0x2e, 0x00, 0xab, 0x73, 0x13, 0x00, 0xab, 0x6d,
73 		0xb7, 0x00, 0xab, 0x68, 0x5c, 0x01, 0x56, 0xdb, 0x1c } },
74 	/* 28.000 MHz */
75 	{ 28000000, 8000000, { 0x02, 0x9c, 0xbc, 0x15, 0x05, 0x39,
76 		0x78, 0x0a, 0x00, 0xa7, 0x34, 0x3f, 0x00, 0xa7, 0x2f,
77 		0x05, 0x00, 0xa7, 0x29, 0xcc, 0x01, 0x4e, 0x5e, 0x03 } },
78 	{ 28000000, 7000000, { 0x02, 0x49, 0x24, 0x92, 0x04, 0x92,
79 		0x49, 0x09, 0x00, 0x92, 0x4d, 0xb7, 0x00, 0x92, 0x49,
80 		0x25, 0x00, 0x92, 0x44, 0x92, 0x01, 0x24, 0x92, 0x12 } },
81 	{ 28000000, 6000000, { 0x01, 0xf5, 0x8d, 0x10, 0x03, 0xeb,
82 		0x1a, 0x08, 0x00, 0x7d, 0x67, 0x2f, 0x00, 0x7d, 0x63,
83 		0x44, 0x00, 0x7d, 0x5f, 0x59, 0x00, 0xfa, 0xc6, 0x22 } },
84 	/* 25.000 MHz */
85 	{ 25000000, 8000000, { 0x02, 0xec, 0xfb, 0x9d, 0x05, 0xd9,
86 		0xf7, 0x0e, 0x00, 0xbb, 0x44, 0xc1, 0x00, 0xbb, 0x3e,
87 		0xe7, 0x00, 0xbb, 0x39, 0x0d, 0x01, 0x76, 0x7d, 0x34 } },
88 	{ 25000000, 7000000, { 0x02, 0x8f, 0x5c, 0x29, 0x05, 0x1e,
89 		0xb8, 0x14, 0x00, 0xa3, 0xdc, 0x29, 0x00, 0xa3, 0xd7,
90 		0x0a, 0x00, 0xa3, 0xd1, 0xec, 0x01, 0x47, 0xae, 0x05 } },
91 	{ 25000000, 6000000, { 0x02, 0x31, 0xbc, 0xb5, 0x04, 0x63,
92 		0x79, 0x1b, 0x00, 0x8c, 0x73, 0x91, 0x00, 0x8c, 0x6f,
93 		0x2d, 0x00, 0x8c, 0x6a, 0xca, 0x01, 0x18, 0xde, 0x17 } },
94 };
95 
96 /* QPSK SNR lookup table */
97 static const struct af9013_snr qpsk_snr_lut[] = {
98 	{ 0x000000,  0 },
99 	{ 0x0b4771,  0 },
100 	{ 0x0c1aed,  1 },
101 	{ 0x0d0d27,  2 },
102 	{ 0x0e4d19,  3 },
103 	{ 0x0e5da8,  4 },
104 	{ 0x107097,  5 },
105 	{ 0x116975,  6 },
106 	{ 0x1252d9,  7 },
107 	{ 0x131fa4,  8 },
108 	{ 0x13d5e1,  9 },
109 	{ 0x148e53, 10 },
110 	{ 0x15358b, 11 },
111 	{ 0x15dd29, 12 },
112 	{ 0x168112, 13 },
113 	{ 0x170b61, 14 },
114 	{ 0xffffff, 15 },
115 };
116 
117 /* QAM16 SNR lookup table */
118 static const struct af9013_snr qam16_snr_lut[] = {
119 	{ 0x000000,  0 },
120 	{ 0x05eb62,  5 },
121 	{ 0x05fecf,  6 },
122 	{ 0x060b80,  7 },
123 	{ 0x062501,  8 },
124 	{ 0x064865,  9 },
125 	{ 0x069604, 10 },
126 	{ 0x06f356, 11 },
127 	{ 0x07706a, 12 },
128 	{ 0x0804d3, 13 },
129 	{ 0x089d1a, 14 },
130 	{ 0x093e3d, 15 },
131 	{ 0x09e35d, 16 },
132 	{ 0x0a7c3c, 17 },
133 	{ 0x0afaf8, 18 },
134 	{ 0x0b719d, 19 },
135 	{ 0xffffff, 20 },
136 };
137 
138 /* QAM64 SNR lookup table */
139 static const struct af9013_snr qam64_snr_lut[] = {
140 	{ 0x000000,  0 },
141 	{ 0x03109b, 12 },
142 	{ 0x0310d4, 13 },
143 	{ 0x031920, 14 },
144 	{ 0x0322d0, 15 },
145 	{ 0x0339fc, 16 },
146 	{ 0x0364a1, 17 },
147 	{ 0x038bcc, 18 },
148 	{ 0x03c7d3, 19 },
149 	{ 0x0408cc, 20 },
150 	{ 0x043bed, 21 },
151 	{ 0x048061, 22 },
152 	{ 0x04be95, 23 },
153 	{ 0x04fa7d, 24 },
154 	{ 0x052405, 25 },
155 	{ 0x05570d, 26 },
156 	{ 0xffffff, 27 },
157 };
158 
159 static const struct af9013_reg_bit ofsm_init[] = {
160 	{ 0xd73a, 0, 8, 0xa1 },
161 	{ 0xd73b, 0, 8, 0x1f },
162 	{ 0xd73c, 4, 4, 0x0a },
163 	{ 0xd732, 3, 1, 0x00 },
164 	{ 0xd731, 4, 2, 0x03 },
165 	{ 0xd73d, 7, 1, 0x01 },
166 	{ 0xd740, 0, 1, 0x00 },
167 	{ 0xd740, 1, 1, 0x00 },
168 	{ 0xd740, 2, 1, 0x00 },
169 	{ 0xd740, 3, 1, 0x01 },
170 	{ 0xd3c1, 4, 1, 0x01 },
171 	{ 0x9124, 0, 8, 0x58 },
172 	{ 0x9125, 0, 2, 0x02 },
173 	{ 0xd3a2, 0, 8, 0x00 },
174 	{ 0xd3a3, 0, 8, 0x04 },
175 	{ 0xd305, 0, 8, 0x32 },
176 	{ 0xd306, 0, 8, 0x10 },
177 	{ 0xd304, 0, 8, 0x04 },
178 	{ 0x9112, 0, 1, 0x01 },
179 	{ 0x911d, 0, 1, 0x01 },
180 	{ 0x911a, 0, 1, 0x01 },
181 	{ 0x911b, 0, 1, 0x01 },
182 	{ 0x9bce, 0, 4, 0x02 },
183 	{ 0x9116, 0, 1, 0x01 },
184 	{ 0x9122, 0, 8, 0xd0 },
185 	{ 0xd2e0, 0, 8, 0xd0 },
186 	{ 0xd2e9, 0, 4, 0x0d },
187 	{ 0xd38c, 0, 8, 0xfc },
188 	{ 0xd38d, 0, 8, 0x00 },
189 	{ 0xd38e, 0, 8, 0x7e },
190 	{ 0xd38f, 0, 8, 0x00 },
191 	{ 0xd390, 0, 8, 0x2f },
192 	{ 0xd145, 4, 1, 0x01 },
193 	{ 0xd1a9, 4, 1, 0x01 },
194 	{ 0xd158, 5, 3, 0x01 },
195 	{ 0xd159, 0, 6, 0x06 },
196 	{ 0xd167, 0, 8, 0x00 },
197 	{ 0xd168, 0, 4, 0x07 },
198 	{ 0xd1c3, 5, 3, 0x00 },
199 	{ 0xd1c4, 0, 6, 0x00 },
200 	{ 0xd1c5, 0, 7, 0x10 },
201 	{ 0xd1c6, 0, 3, 0x02 },
202 	{ 0xd080, 2, 5, 0x03 },
203 	{ 0xd081, 4, 4, 0x09 },
204 	{ 0xd098, 4, 4, 0x0f },
205 	{ 0xd098, 0, 4, 0x03 },
206 	{ 0xdbc0, 4, 1, 0x01 },
207 	{ 0xdbc7, 0, 8, 0x08 },
208 	{ 0xdbc8, 4, 4, 0x00 },
209 	{ 0xdbc9, 0, 5, 0x01 },
210 	{ 0xd280, 0, 8, 0xe0 },
211 	{ 0xd281, 0, 8, 0xff },
212 	{ 0xd282, 0, 8, 0xff },
213 	{ 0xd283, 0, 8, 0xc3 },
214 	{ 0xd284, 0, 8, 0xff },
215 	{ 0xd285, 0, 4, 0x01 },
216 	{ 0xd0f0, 0, 7, 0x1a },
217 	{ 0xd0f1, 4, 1, 0x01 },
218 	{ 0xd0f2, 0, 8, 0x0c },
219 	{ 0xd101, 5, 3, 0x06 },
220 	{ 0xd103, 0, 4, 0x08 },
221 	{ 0xd0f8, 0, 7, 0x20 },
222 	{ 0xd111, 5, 1, 0x00 },
223 	{ 0xd111, 6, 1, 0x00 },
224 	{ 0x910b, 0, 8, 0x0a },
225 	{ 0x9115, 0, 8, 0x02 },
226 	{ 0x910c, 0, 8, 0x02 },
227 	{ 0x910d, 0, 8, 0x08 },
228 	{ 0x910e, 0, 8, 0x0a },
229 	{ 0x9bf6, 0, 8, 0x06 },
230 	{ 0x9bf8, 0, 8, 0x02 },
231 	{ 0x9bf7, 0, 8, 0x05 },
232 	{ 0x9bf9, 0, 8, 0x0f },
233 	{ 0x9bfc, 0, 8, 0x13 },
234 	{ 0x9bd3, 0, 8, 0xff },
235 	{ 0x9bbe, 0, 1, 0x01 },
236 	{ 0x9bcc, 0, 1, 0x01 },
237 };
238 
239 /* Panasonic ENV77H11D5 tuner init
240    AF9013_TUNER_ENV77H11D5 = 129 */
241 static const struct af9013_reg_bit tuner_init_env77h11d5[] = {
242 	{ 0x9bd5, 0, 8, 0x01 },
243 	{ 0x9bd6, 0, 8, 0x03 },
244 	{ 0x9bbe, 0, 8, 0x01 },
245 	{ 0xd1a0, 1, 1, 0x01 },
246 	{ 0xd000, 0, 1, 0x01 },
247 	{ 0xd000, 1, 1, 0x00 },
248 	{ 0xd001, 1, 1, 0x01 },
249 	{ 0xd001, 0, 1, 0x00 },
250 	{ 0xd001, 5, 1, 0x00 },
251 	{ 0xd002, 0, 5, 0x19 },
252 	{ 0xd003, 0, 5, 0x1a },
253 	{ 0xd004, 0, 5, 0x19 },
254 	{ 0xd005, 0, 5, 0x1a },
255 	{ 0xd00e, 0, 5, 0x10 },
256 	{ 0xd00f, 0, 3, 0x04 },
257 	{ 0xd00f, 3, 3, 0x05 },
258 	{ 0xd010, 0, 3, 0x04 },
259 	{ 0xd010, 3, 3, 0x05 },
260 	{ 0xd016, 4, 4, 0x03 },
261 	{ 0xd01f, 0, 6, 0x0a },
262 	{ 0xd020, 0, 6, 0x0a },
263 	{ 0x9bda, 0, 8, 0x00 },
264 	{ 0x9be3, 0, 8, 0x00 },
265 	{ 0xd015, 0, 8, 0x50 },
266 	{ 0xd016, 0, 1, 0x00 },
267 	{ 0xd044, 0, 8, 0x46 },
268 	{ 0xd045, 0, 1, 0x00 },
269 	{ 0xd008, 0, 8, 0xdf },
270 	{ 0xd009, 0, 2, 0x02 },
271 	{ 0xd006, 0, 8, 0x44 },
272 	{ 0xd007, 0, 2, 0x01 },
273 	{ 0xd00c, 0, 8, 0xeb },
274 	{ 0xd00d, 0, 2, 0x02 },
275 	{ 0xd00a, 0, 8, 0xf4 },
276 	{ 0xd00b, 0, 2, 0x01 },
277 	{ 0x9bba, 0, 8, 0xf9 },
278 	{ 0x9bc3, 0, 8, 0xdf },
279 	{ 0x9bc4, 0, 8, 0x02 },
280 	{ 0x9bc5, 0, 8, 0xeb },
281 	{ 0x9bc6, 0, 8, 0x02 },
282 	{ 0x9bc9, 0, 8, 0x52 },
283 	{ 0xd011, 0, 8, 0x3c },
284 	{ 0xd012, 0, 2, 0x01 },
285 	{ 0xd013, 0, 8, 0xf7 },
286 	{ 0xd014, 0, 2, 0x02 },
287 	{ 0xd040, 0, 8, 0x0b },
288 	{ 0xd041, 0, 2, 0x02 },
289 	{ 0xd042, 0, 8, 0x4d },
290 	{ 0xd043, 0, 2, 0x00 },
291 	{ 0xd045, 1, 1, 0x00 },
292 	{ 0x9bcf, 0, 1, 0x01 },
293 	{ 0xd045, 2, 1, 0x01 },
294 	{ 0xd04f, 0, 8, 0x9a },
295 	{ 0xd050, 0, 1, 0x01 },
296 	{ 0xd051, 0, 8, 0x5a },
297 	{ 0xd052, 0, 1, 0x01 },
298 	{ 0xd053, 0, 8, 0x50 },
299 	{ 0xd054, 0, 8, 0x46 },
300 	{ 0x9bd7, 0, 8, 0x0a },
301 	{ 0x9bd8, 0, 8, 0x14 },
302 	{ 0x9bd9, 0, 8, 0x08 },
303 };
304 
305 /* Microtune MT2060 tuner init
306    AF9013_TUNER_MT2060     = 130 */
307 static const struct af9013_reg_bit tuner_init_mt2060[] = {
308 	{ 0x9bd5, 0, 8, 0x01 },
309 	{ 0x9bd6, 0, 8, 0x07 },
310 	{ 0xd1a0, 1, 1, 0x01 },
311 	{ 0xd000, 0, 1, 0x01 },
312 	{ 0xd000, 1, 1, 0x00 },
313 	{ 0xd001, 1, 1, 0x01 },
314 	{ 0xd001, 0, 1, 0x00 },
315 	{ 0xd001, 5, 1, 0x00 },
316 	{ 0xd002, 0, 5, 0x19 },
317 	{ 0xd003, 0, 5, 0x1a },
318 	{ 0xd004, 0, 5, 0x19 },
319 	{ 0xd005, 0, 5, 0x1a },
320 	{ 0xd00e, 0, 5, 0x10 },
321 	{ 0xd00f, 0, 3, 0x04 },
322 	{ 0xd00f, 3, 3, 0x05 },
323 	{ 0xd010, 0, 3, 0x04 },
324 	{ 0xd010, 3, 3, 0x05 },
325 	{ 0xd016, 4, 4, 0x03 },
326 	{ 0xd01f, 0, 6, 0x0a },
327 	{ 0xd020, 0, 6, 0x0a },
328 	{ 0x9bda, 0, 8, 0x00 },
329 	{ 0x9be3, 0, 8, 0x00 },
330 	{ 0x9bbe, 0, 1, 0x00 },
331 	{ 0x9bcc, 0, 1, 0x00 },
332 	{ 0x9bb9, 0, 8, 0x75 },
333 	{ 0x9bcd, 0, 8, 0x24 },
334 	{ 0x9bff, 0, 8, 0x30 },
335 	{ 0xd015, 0, 8, 0x46 },
336 	{ 0xd016, 0, 1, 0x00 },
337 	{ 0xd044, 0, 8, 0x46 },
338 	{ 0xd045, 0, 1, 0x00 },
339 	{ 0xd008, 0, 8, 0x0f },
340 	{ 0xd009, 0, 2, 0x02 },
341 	{ 0xd006, 0, 8, 0x32 },
342 	{ 0xd007, 0, 2, 0x01 },
343 	{ 0xd00c, 0, 8, 0x36 },
344 	{ 0xd00d, 0, 2, 0x03 },
345 	{ 0xd00a, 0, 8, 0x35 },
346 	{ 0xd00b, 0, 2, 0x01 },
347 	{ 0x9bc7, 0, 8, 0x07 },
348 	{ 0x9bc8, 0, 8, 0x90 },
349 	{ 0x9bc3, 0, 8, 0x0f },
350 	{ 0x9bc4, 0, 8, 0x02 },
351 	{ 0x9bc5, 0, 8, 0x36 },
352 	{ 0x9bc6, 0, 8, 0x03 },
353 	{ 0x9bba, 0, 8, 0xc9 },
354 	{ 0x9bc9, 0, 8, 0x79 },
355 	{ 0xd011, 0, 8, 0x10 },
356 	{ 0xd012, 0, 2, 0x01 },
357 	{ 0xd013, 0, 8, 0x45 },
358 	{ 0xd014, 0, 2, 0x03 },
359 	{ 0xd040, 0, 8, 0x98 },
360 	{ 0xd041, 0, 2, 0x00 },
361 	{ 0xd042, 0, 8, 0xcf },
362 	{ 0xd043, 0, 2, 0x03 },
363 	{ 0xd045, 1, 1, 0x00 },
364 	{ 0x9bcf, 0, 1, 0x01 },
365 	{ 0xd045, 2, 1, 0x01 },
366 	{ 0xd04f, 0, 8, 0x9a },
367 	{ 0xd050, 0, 1, 0x01 },
368 	{ 0xd051, 0, 8, 0x5a },
369 	{ 0xd052, 0, 1, 0x01 },
370 	{ 0xd053, 0, 8, 0x50 },
371 	{ 0xd054, 0, 8, 0x46 },
372 	{ 0x9bd7, 0, 8, 0x0a },
373 	{ 0x9bd8, 0, 8, 0x14 },
374 	{ 0x9bd9, 0, 8, 0x08 },
375 	{ 0x9bd0, 0, 8, 0xcc },
376 	{ 0x9be4, 0, 8, 0xa0 },
377 	{ 0x9bbd, 0, 8, 0x8e },
378 	{ 0x9be2, 0, 8, 0x4d },
379 	{ 0x9bee, 0, 1, 0x01 },
380 };
381 
382 /* Microtune MT2060 tuner init
383    AF9013_TUNER_MT2060_2   = 147 */
384 static const struct af9013_reg_bit tuner_init_mt2060_2[] = {
385 	{ 0x9bd5, 0, 8, 0x01 },
386 	{ 0x9bd6, 0, 8, 0x06 },
387 	{ 0x9bbe, 0, 8, 0x01 },
388 	{ 0xd1a0, 1, 1, 0x01 },
389 	{ 0xd000, 0, 1, 0x01 },
390 	{ 0xd000, 1, 1, 0x00 },
391 	{ 0xd001, 1, 1, 0x01 },
392 	{ 0xd001, 0, 1, 0x00 },
393 	{ 0xd001, 5, 1, 0x00 },
394 	{ 0xd002, 0, 5, 0x19 },
395 	{ 0xd003, 0, 5, 0x1a },
396 	{ 0xd004, 0, 5, 0x19 },
397 	{ 0xd005, 0, 5, 0x1a },
398 	{ 0xd00e, 0, 5, 0x10 },
399 	{ 0xd00f, 0, 3, 0x04 },
400 	{ 0xd00f, 3, 3, 0x05 },
401 	{ 0xd010, 0, 3, 0x04 },
402 	{ 0xd010, 3, 3, 0x05 },
403 	{ 0xd016, 4, 4, 0x03 },
404 	{ 0xd01f, 0, 6, 0x0a },
405 	{ 0xd020, 0, 6, 0x0a },
406 	{ 0xd015, 0, 8, 0x46 },
407 	{ 0xd016, 0, 1, 0x00 },
408 	{ 0xd044, 0, 8, 0x46 },
409 	{ 0xd045, 0, 1, 0x00 },
410 	{ 0xd008, 0, 8, 0x0f },
411 	{ 0xd009, 0, 2, 0x02 },
412 	{ 0xd006, 0, 8, 0x32 },
413 	{ 0xd007, 0, 2, 0x01 },
414 	{ 0xd00c, 0, 8, 0x36 },
415 	{ 0xd00d, 0, 2, 0x03 },
416 	{ 0xd00a, 0, 8, 0x35 },
417 	{ 0xd00b, 0, 2, 0x01 },
418 	{ 0x9bc7, 0, 8, 0x07 },
419 	{ 0x9bc8, 0, 8, 0x90 },
420 	{ 0x9bc3, 0, 8, 0x0f },
421 	{ 0x9bc4, 0, 8, 0x02 },
422 	{ 0x9bc5, 0, 8, 0x36 },
423 	{ 0x9bc6, 0, 8, 0x03 },
424 	{ 0x9bba, 0, 8, 0xc9 },
425 	{ 0x9bc9, 0, 8, 0x79 },
426 	{ 0xd011, 0, 8, 0x10 },
427 	{ 0xd012, 0, 2, 0x01 },
428 	{ 0xd013, 0, 8, 0x45 },
429 	{ 0xd014, 0, 2, 0x03 },
430 	{ 0xd040, 0, 8, 0x98 },
431 	{ 0xd041, 0, 2, 0x00 },
432 	{ 0xd042, 0, 8, 0xcf },
433 	{ 0xd043, 0, 2, 0x03 },
434 	{ 0xd045, 1, 1, 0x00 },
435 	{ 0x9bcf, 0, 8, 0x01 },
436 	{ 0xd045, 2, 1, 0x01 },
437 	{ 0xd04f, 0, 8, 0x9a },
438 	{ 0xd050, 0, 1, 0x01 },
439 	{ 0xd051, 0, 8, 0x5a },
440 	{ 0xd052, 0, 1, 0x01 },
441 	{ 0xd053, 0, 8, 0x96 },
442 	{ 0xd054, 0, 8, 0x46 },
443 	{ 0xd045, 7, 1, 0x00 },
444 	{ 0x9bd7, 0, 8, 0x0a },
445 	{ 0x9bd8, 0, 8, 0x14 },
446 	{ 0x9bd9, 0, 8, 0x08 },
447 };
448 
449 /* MaxLinear MXL5003 tuner init
450    AF9013_TUNER_MXL5003D   =   3 */
451 static const struct af9013_reg_bit tuner_init_mxl5003d[] = {
452 	{ 0x9bd5, 0, 8, 0x01 },
453 	{ 0x9bd6, 0, 8, 0x09 },
454 	{ 0xd1a0, 1, 1, 0x01 },
455 	{ 0xd000, 0, 1, 0x01 },
456 	{ 0xd000, 1, 1, 0x00 },
457 	{ 0xd001, 1, 1, 0x01 },
458 	{ 0xd001, 0, 1, 0x00 },
459 	{ 0xd001, 5, 1, 0x00 },
460 	{ 0xd002, 0, 5, 0x19 },
461 	{ 0xd003, 0, 5, 0x1a },
462 	{ 0xd004, 0, 5, 0x19 },
463 	{ 0xd005, 0, 5, 0x1a },
464 	{ 0xd00e, 0, 5, 0x10 },
465 	{ 0xd00f, 0, 3, 0x04 },
466 	{ 0xd00f, 3, 3, 0x05 },
467 	{ 0xd010, 0, 3, 0x04 },
468 	{ 0xd010, 3, 3, 0x05 },
469 	{ 0xd016, 4, 4, 0x03 },
470 	{ 0xd01f, 0, 6, 0x0a },
471 	{ 0xd020, 0, 6, 0x0a },
472 	{ 0x9bda, 0, 8, 0x00 },
473 	{ 0x9be3, 0, 8, 0x00 },
474 	{ 0x9bfc, 0, 8, 0x0f },
475 	{ 0x9bf6, 0, 8, 0x01 },
476 	{ 0x9bbe, 0, 1, 0x01 },
477 	{ 0xd015, 0, 8, 0x33 },
478 	{ 0xd016, 0, 1, 0x00 },
479 	{ 0xd044, 0, 8, 0x40 },
480 	{ 0xd045, 0, 1, 0x00 },
481 	{ 0xd008, 0, 8, 0x0f },
482 	{ 0xd009, 0, 2, 0x02 },
483 	{ 0xd006, 0, 8, 0x6c },
484 	{ 0xd007, 0, 2, 0x00 },
485 	{ 0xd00c, 0, 8, 0x3d },
486 	{ 0xd00d, 0, 2, 0x00 },
487 	{ 0xd00a, 0, 8, 0x45 },
488 	{ 0xd00b, 0, 2, 0x01 },
489 	{ 0x9bc7, 0, 8, 0x07 },
490 	{ 0x9bc8, 0, 8, 0x52 },
491 	{ 0x9bc3, 0, 8, 0x0f },
492 	{ 0x9bc4, 0, 8, 0x02 },
493 	{ 0x9bc5, 0, 8, 0x3d },
494 	{ 0x9bc6, 0, 8, 0x00 },
495 	{ 0x9bba, 0, 8, 0xa2 },
496 	{ 0x9bc9, 0, 8, 0xa0 },
497 	{ 0xd011, 0, 8, 0x56 },
498 	{ 0xd012, 0, 2, 0x00 },
499 	{ 0xd013, 0, 8, 0x50 },
500 	{ 0xd014, 0, 2, 0x00 },
501 	{ 0xd040, 0, 8, 0x56 },
502 	{ 0xd041, 0, 2, 0x00 },
503 	{ 0xd042, 0, 8, 0x50 },
504 	{ 0xd043, 0, 2, 0x00 },
505 	{ 0xd045, 1, 1, 0x00 },
506 	{ 0x9bcf, 0, 8, 0x01 },
507 	{ 0xd045, 2, 1, 0x01 },
508 	{ 0xd04f, 0, 8, 0x9a },
509 	{ 0xd050, 0, 1, 0x01 },
510 	{ 0xd051, 0, 8, 0x5a },
511 	{ 0xd052, 0, 1, 0x01 },
512 	{ 0xd053, 0, 8, 0x50 },
513 	{ 0xd054, 0, 8, 0x46 },
514 	{ 0x9bd7, 0, 8, 0x0a },
515 	{ 0x9bd8, 0, 8, 0x14 },
516 	{ 0x9bd9, 0, 8, 0x08 },
517 };
518 
519 /* MaxLinear MXL5005S & MXL5007T tuner init
520    AF9013_TUNER_MXL5005D   =  13
521    AF9013_TUNER_MXL5005R   =  30
522    AF9013_TUNER_MXL5007T   = 177 */
523 static const struct af9013_reg_bit tuner_init_mxl5005[] = {
524 	{ 0x9bd5, 0, 8, 0x01 },
525 	{ 0x9bd6, 0, 8, 0x07 },
526 	{ 0xd1a0, 1, 1, 0x01 },
527 	{ 0xd000, 0, 1, 0x01 },
528 	{ 0xd000, 1, 1, 0x00 },
529 	{ 0xd001, 1, 1, 0x01 },
530 	{ 0xd001, 0, 1, 0x00 },
531 	{ 0xd001, 5, 1, 0x00 },
532 	{ 0xd002, 0, 5, 0x19 },
533 	{ 0xd003, 0, 5, 0x1a },
534 	{ 0xd004, 0, 5, 0x19 },
535 	{ 0xd005, 0, 5, 0x1a },
536 	{ 0xd00e, 0, 5, 0x10 },
537 	{ 0xd00f, 0, 3, 0x04 },
538 	{ 0xd00f, 3, 3, 0x05 },
539 	{ 0xd010, 0, 3, 0x04 },
540 	{ 0xd010, 3, 3, 0x05 },
541 	{ 0xd016, 4, 4, 0x03 },
542 	{ 0xd01f, 0, 6, 0x0a },
543 	{ 0xd020, 0, 6, 0x0a },
544 	{ 0x9bda, 0, 8, 0x01 },
545 	{ 0x9be3, 0, 8, 0x01 },
546 	{ 0x9bbe, 0, 1, 0x01 },
547 	{ 0x9bcc, 0, 1, 0x01 },
548 	{ 0x9bb9, 0, 8, 0x00 },
549 	{ 0x9bcd, 0, 8, 0x28 },
550 	{ 0x9bff, 0, 8, 0x24 },
551 	{ 0xd015, 0, 8, 0x40 },
552 	{ 0xd016, 0, 1, 0x00 },
553 	{ 0xd044, 0, 8, 0x40 },
554 	{ 0xd045, 0, 1, 0x00 },
555 	{ 0xd008, 0, 8, 0x0f },
556 	{ 0xd009, 0, 2, 0x02 },
557 	{ 0xd006, 0, 8, 0x73 },
558 	{ 0xd007, 0, 2, 0x01 },
559 	{ 0xd00c, 0, 8, 0xfa },
560 	{ 0xd00d, 0, 2, 0x01 },
561 	{ 0xd00a, 0, 8, 0xff },
562 	{ 0xd00b, 0, 2, 0x01 },
563 	{ 0x9bc7, 0, 8, 0x23 },
564 	{ 0x9bc8, 0, 8, 0x55 },
565 	{ 0x9bc3, 0, 8, 0x01 },
566 	{ 0x9bc4, 0, 8, 0x02 },
567 	{ 0x9bc5, 0, 8, 0xfa },
568 	{ 0x9bc6, 0, 8, 0x01 },
569 	{ 0x9bba, 0, 8, 0xff },
570 	{ 0x9bc9, 0, 8, 0xff },
571 	{ 0x9bd3, 0, 8, 0x95 },
572 	{ 0xd011, 0, 8, 0x70 },
573 	{ 0xd012, 0, 2, 0x01 },
574 	{ 0xd013, 0, 8, 0xfb },
575 	{ 0xd014, 0, 2, 0x01 },
576 	{ 0xd040, 0, 8, 0x70 },
577 	{ 0xd041, 0, 2, 0x01 },
578 	{ 0xd042, 0, 8, 0xfb },
579 	{ 0xd043, 0, 2, 0x01 },
580 	{ 0xd045, 1, 1, 0x00 },
581 	{ 0x9bcf, 0, 1, 0x01 },
582 	{ 0xd045, 2, 1, 0x01 },
583 	{ 0xd04f, 0, 8, 0x9a },
584 	{ 0xd050, 0, 1, 0x01 },
585 	{ 0xd051, 0, 8, 0x5a },
586 	{ 0xd052, 0, 1, 0x01 },
587 	{ 0xd053, 0, 8, 0x50 },
588 	{ 0xd054, 0, 8, 0x46 },
589 	{ 0x9bd7, 0, 8, 0x0a },
590 	{ 0x9bd8, 0, 8, 0x14 },
591 	{ 0x9bd9, 0, 8, 0x08 },
592 	{ 0x9bd0, 0, 8, 0x93 },
593 	{ 0x9be4, 0, 8, 0xfe },
594 	{ 0x9bbd, 0, 8, 0x63 },
595 	{ 0x9be2, 0, 8, 0xfe },
596 	{ 0x9bee, 0, 1, 0x01 },
597 };
598 
599 /* Quantek QT1010 tuner init
600    AF9013_TUNER_QT1010     = 134
601    AF9013_TUNER_QT1010A    = 162 */
602 static const struct af9013_reg_bit tuner_init_qt1010[] = {
603 	{ 0x9bd5, 0, 8, 0x01 },
604 	{ 0x9bd6, 0, 8, 0x09 },
605 	{ 0xd1a0, 1, 1, 0x01 },
606 	{ 0xd000, 0, 1, 0x01 },
607 	{ 0xd000, 1, 1, 0x00 },
608 	{ 0xd001, 1, 1, 0x01 },
609 	{ 0xd001, 0, 1, 0x00 },
610 	{ 0xd001, 5, 1, 0x00 },
611 	{ 0xd002, 0, 5, 0x19 },
612 	{ 0xd003, 0, 5, 0x1a },
613 	{ 0xd004, 0, 5, 0x19 },
614 	{ 0xd005, 0, 5, 0x1a },
615 	{ 0xd00e, 0, 5, 0x10 },
616 	{ 0xd00f, 0, 3, 0x04 },
617 	{ 0xd00f, 3, 3, 0x05 },
618 	{ 0xd010, 0, 3, 0x04 },
619 	{ 0xd010, 3, 3, 0x05 },
620 	{ 0xd016, 4, 4, 0x03 },
621 	{ 0xd01f, 0, 6, 0x0a },
622 	{ 0xd020, 0, 6, 0x0a },
623 	{ 0x9bda, 0, 8, 0x01 },
624 	{ 0x9be3, 0, 8, 0x01 },
625 	{ 0xd015, 0, 8, 0x46 },
626 	{ 0xd016, 0, 1, 0x00 },
627 	{ 0xd044, 0, 8, 0x46 },
628 	{ 0xd045, 0, 1, 0x00 },
629 	{ 0x9bbe, 0, 1, 0x01 },
630 	{ 0x9bcc, 0, 1, 0x01 },
631 	{ 0x9bb9, 0, 8, 0x00 },
632 	{ 0x9bcd, 0, 8, 0x28 },
633 	{ 0x9bff, 0, 8, 0x20 },
634 	{ 0xd008, 0, 8, 0x0f },
635 	{ 0xd009, 0, 2, 0x02 },
636 	{ 0xd006, 0, 8, 0x99 },
637 	{ 0xd007, 0, 2, 0x01 },
638 	{ 0xd00c, 0, 8, 0x0f },
639 	{ 0xd00d, 0, 2, 0x02 },
640 	{ 0xd00a, 0, 8, 0x50 },
641 	{ 0xd00b, 0, 2, 0x01 },
642 	{ 0x9bc7, 0, 8, 0x00 },
643 	{ 0x9bc8, 0, 8, 0x00 },
644 	{ 0x9bc3, 0, 8, 0x0f },
645 	{ 0x9bc4, 0, 8, 0x02 },
646 	{ 0x9bc5, 0, 8, 0x0f },
647 	{ 0x9bc6, 0, 8, 0x02 },
648 	{ 0x9bba, 0, 8, 0xc5 },
649 	{ 0x9bc9, 0, 8, 0xff },
650 	{ 0xd011, 0, 8, 0x58 },
651 	{ 0xd012, 0, 2, 0x02 },
652 	{ 0xd013, 0, 8, 0x89 },
653 	{ 0xd014, 0, 2, 0x01 },
654 	{ 0xd040, 0, 8, 0x58 },
655 	{ 0xd041, 0, 2, 0x02 },
656 	{ 0xd042, 0, 8, 0x89 },
657 	{ 0xd043, 0, 2, 0x01 },
658 	{ 0xd045, 1, 1, 0x00 },
659 	{ 0x9bcf, 0, 1, 0x01 },
660 	{ 0xd045, 2, 1, 0x01 },
661 	{ 0xd04f, 0, 8, 0x9a },
662 	{ 0xd050, 0, 1, 0x01 },
663 	{ 0xd051, 0, 8, 0x5a },
664 	{ 0xd052, 0, 1, 0x01 },
665 	{ 0xd053, 0, 8, 0x50 },
666 	{ 0xd054, 0, 8, 0x46 },
667 	{ 0x9bd7, 0, 8, 0x0a },
668 	{ 0x9bd8, 0, 8, 0x14 },
669 	{ 0x9bd9, 0, 8, 0x08 },
670 	{ 0x9bd0, 0, 8, 0xcd },
671 	{ 0x9be4, 0, 8, 0xbb },
672 	{ 0x9bbd, 0, 8, 0x93 },
673 	{ 0x9be2, 0, 8, 0x80 },
674 	{ 0x9bee, 0, 1, 0x01 },
675 };
676 
677 /* Freescale MC44S803 tuner init
678    AF9013_TUNER_MC44S803   = 133 */
679 static const struct af9013_reg_bit tuner_init_mc44s803[] = {
680 	{ 0x9bd5, 0, 8, 0x01 },
681 	{ 0x9bd6, 0, 8, 0x06 },
682 	{ 0xd1a0, 1, 1, 0x01 },
683 	{ 0xd000, 0, 1, 0x01 },
684 	{ 0xd000, 1, 1, 0x00 },
685 	{ 0xd001, 1, 1, 0x01 },
686 	{ 0xd001, 0, 1, 0x00 },
687 	{ 0xd001, 5, 1, 0x00 },
688 	{ 0xd002, 0, 5, 0x19 },
689 	{ 0xd003, 0, 5, 0x1a },
690 	{ 0xd004, 0, 5, 0x19 },
691 	{ 0xd005, 0, 5, 0x1a },
692 	{ 0xd00e, 0, 5, 0x10 },
693 	{ 0xd00f, 0, 3, 0x04 },
694 	{ 0xd00f, 3, 3, 0x05 },
695 	{ 0xd010, 0, 3, 0x04 },
696 	{ 0xd010, 3, 3, 0x05 },
697 	{ 0xd016, 4, 4, 0x03 },
698 	{ 0xd01f, 0, 6, 0x0a },
699 	{ 0xd020, 0, 6, 0x0a },
700 	{ 0x9bda, 0, 8, 0x00 },
701 	{ 0x9be3, 0, 8, 0x00 },
702 	{ 0x9bf6, 0, 8, 0x01 },
703 	{ 0x9bf8, 0, 8, 0x02 },
704 	{ 0x9bf9, 0, 8, 0x02 },
705 	{ 0x9bfc, 0, 8, 0x1f },
706 	{ 0x9bbe, 0, 1, 0x01 },
707 	{ 0x9bcc, 0, 1, 0x01 },
708 	{ 0x9bb9, 0, 8, 0x00 },
709 	{ 0x9bcd, 0, 8, 0x24 },
710 	{ 0x9bff, 0, 8, 0x24 },
711 	{ 0xd015, 0, 8, 0x46 },
712 	{ 0xd016, 0, 1, 0x00 },
713 	{ 0xd044, 0, 8, 0x46 },
714 	{ 0xd045, 0, 1, 0x00 },
715 	{ 0xd008, 0, 8, 0x01 },
716 	{ 0xd009, 0, 2, 0x02 },
717 	{ 0xd006, 0, 8, 0x7b },
718 	{ 0xd007, 0, 2, 0x00 },
719 	{ 0xd00c, 0, 8, 0x7c },
720 	{ 0xd00d, 0, 2, 0x02 },
721 	{ 0xd00a, 0, 8, 0xfe },
722 	{ 0xd00b, 0, 2, 0x01 },
723 	{ 0x9bc7, 0, 8, 0x08 },
724 	{ 0x9bc8, 0, 8, 0x9a },
725 	{ 0x9bc3, 0, 8, 0x01 },
726 	{ 0x9bc4, 0, 8, 0x02 },
727 	{ 0x9bc5, 0, 8, 0x7c },
728 	{ 0x9bc6, 0, 8, 0x02 },
729 	{ 0x9bba, 0, 8, 0xfc },
730 	{ 0x9bc9, 0, 8, 0xaa },
731 	{ 0xd011, 0, 8, 0x6b },
732 	{ 0xd012, 0, 2, 0x00 },
733 	{ 0xd013, 0, 8, 0x88 },
734 	{ 0xd014, 0, 2, 0x02 },
735 	{ 0xd040, 0, 8, 0x6b },
736 	{ 0xd041, 0, 2, 0x00 },
737 	{ 0xd042, 0, 8, 0x7c },
738 	{ 0xd043, 0, 2, 0x02 },
739 	{ 0xd045, 1, 1, 0x00 },
740 	{ 0x9bcf, 0, 1, 0x01 },
741 	{ 0xd045, 2, 1, 0x01 },
742 	{ 0xd04f, 0, 8, 0x9a },
743 	{ 0xd050, 0, 1, 0x01 },
744 	{ 0xd051, 0, 8, 0x5a },
745 	{ 0xd052, 0, 1, 0x01 },
746 	{ 0xd053, 0, 8, 0x50 },
747 	{ 0xd054, 0, 8, 0x46 },
748 	{ 0x9bd7, 0, 8, 0x0a },
749 	{ 0x9bd8, 0, 8, 0x14 },
750 	{ 0x9bd9, 0, 8, 0x08 },
751 	{ 0x9bd0, 0, 8, 0x9e },
752 	{ 0x9be4, 0, 8, 0xff },
753 	{ 0x9bbd, 0, 8, 0x9e },
754 	{ 0x9be2, 0, 8, 0x25 },
755 	{ 0x9bee, 0, 1, 0x01 },
756 	{ 0xd73b, 3, 1, 0x00 },
757 };
758 
759 /* unknown, probably for tin can tuner, tuner init
760    AF9013_TUNER_UNKNOWN   = 140 */
761 static const struct af9013_reg_bit tuner_init_unknown[] = {
762 	{ 0x9bd5, 0, 8, 0x01 },
763 	{ 0x9bd6, 0, 8, 0x02 },
764 	{ 0xd1a0, 1, 1, 0x01 },
765 	{ 0xd000, 0, 1, 0x01 },
766 	{ 0xd000, 1, 1, 0x00 },
767 	{ 0xd001, 1, 1, 0x01 },
768 	{ 0xd001, 0, 1, 0x00 },
769 	{ 0xd001, 5, 1, 0x00 },
770 	{ 0xd002, 0, 5, 0x19 },
771 	{ 0xd003, 0, 5, 0x1a },
772 	{ 0xd004, 0, 5, 0x19 },
773 	{ 0xd005, 0, 5, 0x1a },
774 	{ 0xd00e, 0, 5, 0x10 },
775 	{ 0xd00f, 0, 3, 0x04 },
776 	{ 0xd00f, 3, 3, 0x05 },
777 	{ 0xd010, 0, 3, 0x04 },
778 	{ 0xd010, 3, 3, 0x05 },
779 	{ 0xd016, 4, 4, 0x03 },
780 	{ 0xd01f, 0, 6, 0x0a },
781 	{ 0xd020, 0, 6, 0x0a },
782 	{ 0x9bda, 0, 8, 0x01 },
783 	{ 0x9be3, 0, 8, 0x01 },
784 	{ 0xd1a0, 1, 1, 0x00 },
785 	{ 0x9bbe, 0, 1, 0x01 },
786 	{ 0x9bcc, 0, 1, 0x01 },
787 	{ 0x9bb9, 0, 8, 0x00 },
788 	{ 0x9bcd, 0, 8, 0x18 },
789 	{ 0x9bff, 0, 8, 0x2c },
790 	{ 0xd015, 0, 8, 0x46 },
791 	{ 0xd016, 0, 1, 0x00 },
792 	{ 0xd044, 0, 8, 0x46 },
793 	{ 0xd045, 0, 1, 0x00 },
794 	{ 0xd008, 0, 8, 0xdf },
795 	{ 0xd009, 0, 2, 0x02 },
796 	{ 0xd006, 0, 8, 0x44 },
797 	{ 0xd007, 0, 2, 0x01 },
798 	{ 0xd00c, 0, 8, 0x00 },
799 	{ 0xd00d, 0, 2, 0x02 },
800 	{ 0xd00a, 0, 8, 0xf6 },
801 	{ 0xd00b, 0, 2, 0x01 },
802 	{ 0x9bba, 0, 8, 0xf9 },
803 	{ 0x9bc8, 0, 8, 0xaa },
804 	{ 0x9bc3, 0, 8, 0xdf },
805 	{ 0x9bc4, 0, 8, 0x02 },
806 	{ 0x9bc5, 0, 8, 0x00 },
807 	{ 0x9bc6, 0, 8, 0x02 },
808 	{ 0x9bc9, 0, 8, 0xf0 },
809 	{ 0xd011, 0, 8, 0x3c },
810 	{ 0xd012, 0, 2, 0x01 },
811 	{ 0xd013, 0, 8, 0xf7 },
812 	{ 0xd014, 0, 2, 0x02 },
813 	{ 0xd040, 0, 8, 0x0b },
814 	{ 0xd041, 0, 2, 0x02 },
815 	{ 0xd042, 0, 8, 0x4d },
816 	{ 0xd043, 0, 2, 0x00 },
817 	{ 0xd045, 1, 1, 0x00 },
818 	{ 0x9bcf, 0, 1, 0x01 },
819 	{ 0xd045, 2, 1, 0x01 },
820 	{ 0xd04f, 0, 8, 0x9a },
821 	{ 0xd050, 0, 1, 0x01 },
822 	{ 0xd051, 0, 8, 0x5a },
823 	{ 0xd052, 0, 1, 0x01 },
824 	{ 0xd053, 0, 8, 0x50 },
825 	{ 0xd054, 0, 8, 0x46 },
826 	{ 0x9bd7, 0, 8, 0x0a },
827 	{ 0x9bd8, 0, 8, 0x14 },
828 	{ 0x9bd9, 0, 8, 0x08 },
829 };
830 
831 /* NXP TDA18271 & TDA18218 tuner init
832    AF9013_TUNER_TDA18271   = 156
833    AF9013_TUNER_TDA18218   = 179 */
834 static const struct af9013_reg_bit tuner_init_tda18271[] = {
835 	{ 0x9bd5, 0, 8, 0x01 },
836 	{ 0x9bd6, 0, 8, 0x04 },
837 	{ 0xd1a0, 1, 1, 0x01 },
838 	{ 0xd000, 0, 1, 0x01 },
839 	{ 0xd000, 1, 1, 0x00 },
840 	{ 0xd001, 1, 1, 0x01 },
841 	{ 0xd001, 0, 1, 0x00 },
842 	{ 0xd001, 5, 1, 0x00 },
843 	{ 0xd002, 0, 5, 0x19 },
844 	{ 0xd003, 0, 5, 0x1a },
845 	{ 0xd004, 0, 5, 0x19 },
846 	{ 0xd005, 0, 5, 0x1a },
847 	{ 0xd00e, 0, 5, 0x10 },
848 	{ 0xd00f, 0, 3, 0x04 },
849 	{ 0xd00f, 3, 3, 0x05 },
850 	{ 0xd010, 0, 3, 0x04 },
851 	{ 0xd010, 3, 3, 0x05 },
852 	{ 0xd016, 4, 4, 0x03 },
853 	{ 0xd01f, 0, 6, 0x0a },
854 	{ 0xd020, 0, 6, 0x0a },
855 	{ 0x9bda, 0, 8, 0x01 },
856 	{ 0x9be3, 0, 8, 0x01 },
857 	{ 0xd1a0, 1, 1, 0x00 },
858 	{ 0x9bbe, 0, 1, 0x01 },
859 	{ 0x9bcc, 0, 1, 0x01 },
860 	{ 0x9bb9, 0, 8, 0x00 },
861 	{ 0x9bcd, 0, 8, 0x18 },
862 	{ 0x9bff, 0, 8, 0x2c },
863 	{ 0xd015, 0, 8, 0x46 },
864 	{ 0xd016, 0, 1, 0x00 },
865 	{ 0xd044, 0, 8, 0x46 },
866 	{ 0xd045, 0, 1, 0x00 },
867 	{ 0xd008, 0, 8, 0xdf },
868 	{ 0xd009, 0, 2, 0x02 },
869 	{ 0xd006, 0, 8, 0x44 },
870 	{ 0xd007, 0, 2, 0x01 },
871 	{ 0xd00c, 0, 8, 0x00 },
872 	{ 0xd00d, 0, 2, 0x02 },
873 	{ 0xd00a, 0, 8, 0xf6 },
874 	{ 0xd00b, 0, 2, 0x01 },
875 	{ 0x9bba, 0, 8, 0xf9 },
876 	{ 0x9bc8, 0, 8, 0xaa },
877 	{ 0x9bc3, 0, 8, 0xdf },
878 	{ 0x9bc4, 0, 8, 0x02 },
879 	{ 0x9bc5, 0, 8, 0x00 },
880 	{ 0x9bc6, 0, 8, 0x02 },
881 	{ 0x9bc9, 0, 8, 0xf0 },
882 	{ 0xd011, 0, 8, 0x3c },
883 	{ 0xd012, 0, 2, 0x01 },
884 	{ 0xd013, 0, 8, 0xf7 },
885 	{ 0xd014, 0, 2, 0x02 },
886 	{ 0xd040, 0, 8, 0x0b },
887 	{ 0xd041, 0, 2, 0x02 },
888 	{ 0xd042, 0, 8, 0x4d },
889 	{ 0xd043, 0, 2, 0x00 },
890 	{ 0xd045, 1, 1, 0x00 },
891 	{ 0x9bcf, 0, 1, 0x01 },
892 	{ 0xd045, 2, 1, 0x01 },
893 	{ 0xd04f, 0, 8, 0x9a },
894 	{ 0xd050, 0, 1, 0x01 },
895 	{ 0xd051, 0, 8, 0x5a },
896 	{ 0xd052, 0, 1, 0x01 },
897 	{ 0xd053, 0, 8, 0x50 },
898 	{ 0xd054, 0, 8, 0x46 },
899 	{ 0x9bd7, 0, 8, 0x0a },
900 	{ 0x9bd8, 0, 8, 0x14 },
901 	{ 0x9bd9, 0, 8, 0x08 },
902 	{ 0x9bd0, 0, 8, 0xa8 },
903 	{ 0x9be4, 0, 8, 0x7f },
904 	{ 0x9bbd, 0, 8, 0xa8 },
905 	{ 0x9be2, 0, 8, 0x20 },
906 	{ 0x9bee, 0, 1, 0x01 },
907 };
908 
909 #endif /* AF9013_PRIV_H */
910