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