Merge ssh://master.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[pandora-kernel.git] / drivers / media / video / tuner-types.c
1 /*
2  *
3  * i2c tv tuner chip device type database.
4  *
5  */
6
7 #include <linux/i2c.h>
8 #include <media/tuner.h>
9 #include <media/tuner-types.h>
10
11 /* ---------------------------------------------------------------------- */
12
13 /*
14  *      The floats in the tuner struct are computed at compile time
15  *      by gcc and cast back to integers. Thus we don't violate the
16  *      "no float in kernel" rule.
17  *
18  *      A tuner_range may be referenced by multiple tuner_params structs.
19  *      There are many duplicates in here. Reusing tuner_range structs,
20  *      rather than defining new ones for each tuner, will cut down on
21  *      memory usage, and is preferred when possible.
22  *
23  *      Each tuner_params array may contain one or more elements, one
24  *      for each video standard.
25  *
26  *      FIXME: Some tuner_range definitions are duplicated, and
27  *      should be eliminated.
28  *
29  *      FIXME: tunertype struct contains an element, has_tda988x.
30  *      We must set this for all tunertypes that contain a tda988x
31  *      chip, and then we can remove this setting from the various
32  *      card structs.
33  */
34
35 /* 0-9 */
36 /* ------------ TUNER_TEMIC_PAL - TEMIC PAL ------------ */
37
38 static struct tuner_range tuner_temic_pal_ranges[] = {
39         { 16 * 140.25 /*MHz*/, 0x02, },
40         { 16 * 463.25 /*MHz*/, 0x04, },
41         { 16 * 999.99        , 0x01, },
42 };
43
44 static struct tuner_params tuner_temic_pal_params[] = {
45         {
46                 .type   = TUNER_PARAM_TYPE_PAL,
47                 .ranges = tuner_temic_pal_ranges,
48                 .count  = ARRAY_SIZE(tuner_temic_pal_ranges),
49                 .config = 0x8e,
50         },
51 };
52
53 /* ------------ TUNER_PHILIPS_PAL_I - Philips PAL_I ------------ */
54
55 static struct tuner_range tuner_philips_pal_i_ranges[] = {
56         { 16 * 140.25 /*MHz*/, 0xa0, },
57         { 16 * 463.25 /*MHz*/, 0x90, },
58         { 16 * 999.99        , 0x30, },
59 };
60
61 static struct tuner_params tuner_philips_pal_i_params[] = {
62         {
63                 .type   = TUNER_PARAM_TYPE_PAL,
64                 .ranges = tuner_philips_pal_i_ranges,
65                 .count  = ARRAY_SIZE(tuner_philips_pal_i_ranges),
66                 .config = 0x8e,
67         },
68 };
69
70 /* ------------ TUNER_PHILIPS_NTSC - Philips NTSC ------------ */
71
72 static struct tuner_range tuner_philips_ntsc_ranges[] = {
73         { 16 * 157.25 /*MHz*/, 0xa0, },
74         { 16 * 451.25 /*MHz*/, 0x90, },
75         { 16 * 999.99        , 0x30, },
76 };
77
78 static struct tuner_params tuner_philips_ntsc_params[] = {
79         {
80                 .type   = TUNER_PARAM_TYPE_NTSC,
81                 .ranges = tuner_philips_ntsc_ranges,
82                 .count  = ARRAY_SIZE(tuner_philips_ntsc_ranges),
83                 .config = 0x8e,
84         },
85 };
86
87 /* ------------ TUNER_PHILIPS_SECAM - Philips SECAM ------------ */
88
89 static struct tuner_range tuner_philips_secam_ranges[] = {
90         { 16 * 168.25 /*MHz*/, 0xa7, },
91         { 16 * 447.25 /*MHz*/, 0x97, },
92         { 16 * 999.99        , 0x37, },
93 };
94
95 static struct tuner_params tuner_philips_secam_params[] = {
96         {
97                 .type   = TUNER_PARAM_TYPE_SECAM,
98                 .ranges = tuner_philips_secam_ranges,
99                 .count  = ARRAY_SIZE(tuner_philips_secam_ranges),
100                 .config = 0x8e,
101         },
102 };
103
104 /* ------------ TUNER_PHILIPS_PAL - Philips PAL ------------ */
105
106 static struct tuner_range tuner_philips_pal_ranges[] = {
107         { 16 * 168.25 /*MHz*/, 0xa0, },
108         { 16 * 447.25 /*MHz*/, 0x90, },
109         { 16 * 999.99        , 0x30, },
110 };
111
112 static struct tuner_params tuner_philips_pal_params[] = {
113         {
114                 .type   = TUNER_PARAM_TYPE_PAL,
115                 .ranges = tuner_philips_pal_ranges,
116                 .count  = ARRAY_SIZE(tuner_philips_pal_ranges),
117                 .config = 0x8e,
118         },
119 };
120
121 /* ------------ TUNER_TEMIC_NTSC - TEMIC NTSC ------------ */
122
123 static struct tuner_range tuner_temic_ntsc_ranges[] = {
124         { 16 * 157.25 /*MHz*/, 0x02, },
125         { 16 * 463.25 /*MHz*/, 0x04, },
126         { 16 * 999.99        , 0x01, },
127 };
128
129 static struct tuner_params tuner_temic_ntsc_params[] = {
130         {
131                 .type   = TUNER_PARAM_TYPE_NTSC,
132                 .ranges = tuner_temic_ntsc_ranges,
133                 .count  = ARRAY_SIZE(tuner_temic_ntsc_ranges),
134                 .config = 0x8e,
135         },
136 };
137
138 /* ------------ TUNER_TEMIC_PAL_I - TEMIC PAL_I ------------ */
139
140 static struct tuner_range tuner_temic_pal_i_ranges[] = {
141         { 16 * 170.00 /*MHz*/, 0x02, },
142         { 16 * 450.00 /*MHz*/, 0x04, },
143         { 16 * 999.99        , 0x01, },
144 };
145
146 static struct tuner_params tuner_temic_pal_i_params[] = {
147         {
148                 .type   = TUNER_PARAM_TYPE_PAL,
149                 .ranges = tuner_temic_pal_i_ranges,
150                 .count  = ARRAY_SIZE(tuner_temic_pal_i_ranges),
151                 .config = 0x8e,
152         },
153 };
154
155 /* ------------ TUNER_TEMIC_4036FY5_NTSC - TEMIC NTSC ------------ */
156
157 static struct tuner_range tuner_temic_4036fy5_ntsc_ranges[] = {
158         { 16 * 157.25 /*MHz*/, 0xa0, },
159         { 16 * 463.25 /*MHz*/, 0x90, },
160         { 16 * 999.99        , 0x30, },
161 };
162
163 static struct tuner_params tuner_temic_4036fy5_ntsc_params[] = {
164         {
165                 .type   = TUNER_PARAM_TYPE_NTSC,
166                 .ranges = tuner_temic_4036fy5_ntsc_ranges,
167                 .count  = ARRAY_SIZE(tuner_temic_4036fy5_ntsc_ranges),
168                 .config = 0x8e,
169         },
170 };
171
172 /* ------------ TUNER_ALPS_TSBH1_NTSC - TEMIC NTSC ------------ */
173
174 static struct tuner_range tuner_alps_tsb_1_ranges[] = {
175         { 16 * 137.25 /*MHz*/, 0x01, },
176         { 16 * 385.25 /*MHz*/, 0x02, },
177         { 16 * 999.99        , 0x08, },
178 };
179
180 static struct tuner_params tuner_alps_tsbh1_ntsc_params[] = {
181         {
182                 .type   = TUNER_PARAM_TYPE_NTSC,
183                 .ranges = tuner_alps_tsb_1_ranges,
184                 .count  = ARRAY_SIZE(tuner_alps_tsb_1_ranges),
185                 .config = 0x8e,
186         },
187 };
188
189 /* 10-19 */
190 /* ------------ TUNER_ALPS_TSBE1_PAL - TEMIC PAL ------------ */
191
192 static struct tuner_params tuner_alps_tsb_1_params[] = {
193         {
194                 .type   = TUNER_PARAM_TYPE_PAL,
195                 .ranges = tuner_alps_tsb_1_ranges,
196                 .count  = ARRAY_SIZE(tuner_alps_tsb_1_ranges),
197                 .config = 0x8e,
198         },
199 };
200
201 /* ------------ TUNER_ALPS_TSBB5_PAL_I - Alps PAL_I ------------ */
202
203 static struct tuner_range tuner_alps_tsb_5_pal_ranges[] = {
204         { 16 * 133.25 /*MHz*/, 0x01, },
205         { 16 * 351.25 /*MHz*/, 0x02, },
206         { 16 * 999.99        , 0x08, },
207 };
208
209 static struct tuner_params tuner_alps_tsbb5_params[] = {
210         {
211                 .type   = TUNER_PARAM_TYPE_PAL,
212                 .ranges = tuner_alps_tsb_5_pal_ranges,
213                 .count  = ARRAY_SIZE(tuner_alps_tsb_5_pal_ranges),
214                 .config = 0x8e,
215         },
216 };
217
218 /* ------------ TUNER_ALPS_TSBE5_PAL - Alps PAL ------------ */
219
220 static struct tuner_params tuner_alps_tsbe5_params[] = {
221         {
222                 .type   = TUNER_PARAM_TYPE_PAL,
223                 .ranges = tuner_alps_tsb_5_pal_ranges,
224                 .count  = ARRAY_SIZE(tuner_alps_tsb_5_pal_ranges),
225                 .config = 0x8e,
226         },
227 };
228
229 /* ------------ TUNER_ALPS_TSBC5_PAL - Alps PAL ------------ */
230
231 static struct tuner_params tuner_alps_tsbc5_params[] = {
232         {
233                 .type   = TUNER_PARAM_TYPE_PAL,
234                 .ranges = tuner_alps_tsb_5_pal_ranges,
235                 .count  = ARRAY_SIZE(tuner_alps_tsb_5_pal_ranges),
236                 .config = 0x8e,
237         },
238 };
239
240 /* ------------ TUNER_TEMIC_4006FH5_PAL - TEMIC PAL ------------ */
241
242 static struct tuner_range tuner_temic_4006fh5_pal_ranges[] = {
243         { 16 * 170.00 /*MHz*/, 0xa0, },
244         { 16 * 450.00 /*MHz*/, 0x90, },
245         { 16 * 999.99        , 0x30, },
246 };
247
248 static struct tuner_params tuner_temic_4006fh5_params[] = {
249         {
250                 .type   = TUNER_PARAM_TYPE_PAL,
251                 .ranges = tuner_temic_4006fh5_pal_ranges,
252                 .count  = ARRAY_SIZE(tuner_temic_4006fh5_pal_ranges),
253                 .config = 0x8e,
254         },
255 };
256
257 /* ------------ TUNER_ALPS_TSHC6_NTSC - Alps NTSC ------------ */
258
259 static struct tuner_range tuner_alps_tshc6_ntsc_ranges[] = {
260         { 16 * 137.25 /*MHz*/, 0x14, },
261         { 16 * 385.25 /*MHz*/, 0x12, },
262         { 16 * 999.99        , 0x11, },
263 };
264
265 static struct tuner_params tuner_alps_tshc6_params[] = {
266         {
267                 .type   = TUNER_PARAM_TYPE_NTSC,
268                 .ranges = tuner_alps_tshc6_ntsc_ranges,
269                 .count  = ARRAY_SIZE(tuner_alps_tshc6_ntsc_ranges),
270                 .config = 0x8e,
271         },
272 };
273
274 /* ------------ TUNER_TEMIC_PAL_DK - TEMIC PAL ------------ */
275
276 static struct tuner_range tuner_temic_pal_dk_ranges[] = {
277         { 16 * 168.25 /*MHz*/, 0xa0, },
278         { 16 * 456.25 /*MHz*/, 0x90, },
279         { 16 * 999.99        , 0x30, },
280 };
281
282 static struct tuner_params tuner_temic_pal_dk_params[] = {
283         {
284                 .type   = TUNER_PARAM_TYPE_PAL,
285                 .ranges = tuner_temic_pal_dk_ranges,
286                 .count  = ARRAY_SIZE(tuner_temic_pal_dk_ranges),
287                 .config = 0x8e,
288         },
289 };
290
291 /* ------------ TUNER_PHILIPS_NTSC_M - Philips NTSC ------------ */
292
293 static struct tuner_range tuner_philips_ntsc_m_ranges[] = {
294         { 16 * 160.00 /*MHz*/, 0xa0, },
295         { 16 * 454.00 /*MHz*/, 0x90, },
296         { 16 * 999.99        , 0x30, },
297 };
298
299 static struct tuner_params tuner_philips_ntsc_m_params[] = {
300         {
301                 .type   = TUNER_PARAM_TYPE_NTSC,
302                 .ranges = tuner_philips_ntsc_m_ranges,
303                 .count  = ARRAY_SIZE(tuner_philips_ntsc_m_ranges),
304                 .config = 0x8e,
305         },
306 };
307
308 /* ------------ TUNER_TEMIC_4066FY5_PAL_I - TEMIC PAL_I ------------ */
309
310 static struct tuner_range tuner_temic_40x6f_5_pal_ranges[] = {
311         { 16 * 169.00 /*MHz*/, 0xa0, },
312         { 16 * 454.00 /*MHz*/, 0x90, },
313         { 16 * 999.99        , 0x30, },
314 };
315
316 static struct tuner_params tuner_temic_4066fy5_pal_i_params[] = {
317         {
318                 .type   = TUNER_PARAM_TYPE_PAL,
319                 .ranges = tuner_temic_40x6f_5_pal_ranges,
320                 .count  = ARRAY_SIZE(tuner_temic_40x6f_5_pal_ranges),
321                 .config = 0x8e,
322         },
323 };
324
325 /* ------------ TUNER_TEMIC_4006FN5_MULTI_PAL - TEMIC PAL ------------ */
326
327 static struct tuner_params tuner_temic_4006fn5_multi_params[] = {
328         {
329                 .type   = TUNER_PARAM_TYPE_PAL,
330                 .ranges = tuner_temic_40x6f_5_pal_ranges,
331                 .count  = ARRAY_SIZE(tuner_temic_40x6f_5_pal_ranges),
332                 .config = 0x8e,
333         },
334 };
335
336 /* 20-29 */
337 /* ------------ TUNER_TEMIC_4009FR5_PAL - TEMIC PAL ------------ */
338
339 static struct tuner_range tuner_temic_4009f_5_pal_ranges[] = {
340         { 16 * 141.00 /*MHz*/, 0xa0, },
341         { 16 * 464.00 /*MHz*/, 0x90, },
342         { 16 * 999.99        , 0x30, },
343 };
344
345 static struct tuner_params tuner_temic_4009f_5_params[] = {
346         {
347                 .type   = TUNER_PARAM_TYPE_PAL,
348                 .ranges = tuner_temic_4009f_5_pal_ranges,
349                 .count  = ARRAY_SIZE(tuner_temic_4009f_5_pal_ranges),
350                 .config = 0x8e,
351         },
352 };
353
354 /* ------------ TUNER_TEMIC_4039FR5_NTSC - TEMIC NTSC ------------ */
355
356 static struct tuner_range tuner_temic_4039fr5_ntsc_ranges[] = {
357         { 16 * 158.00 /*MHz*/, 0xa0, },
358         { 16 * 453.00 /*MHz*/, 0x90, },
359         { 16 * 999.99        , 0x30, },
360 };
361
362 static struct tuner_params tuner_temic_4039fr5_params[] = {
363         {
364                 .type   = TUNER_PARAM_TYPE_NTSC,
365                 .ranges = tuner_temic_4039fr5_ntsc_ranges,
366                 .count  = ARRAY_SIZE(tuner_temic_4039fr5_ntsc_ranges),
367                 .config = 0x8e,
368         },
369 };
370
371 /* ------------ TUNER_TEMIC_4046FM5 - TEMIC PAL ------------ */
372
373 static struct tuner_range tuner_temic_4046fm5_pal_ranges[] = {
374         { 16 * 169.00 /*MHz*/, 0xa0, },
375         { 16 * 454.00 /*MHz*/, 0x90, },
376         { 16 * 999.99        , 0x30, },
377 };
378
379 static struct tuner_params tuner_temic_4046fm5_params[] = {
380         {
381                 .type   = TUNER_PARAM_TYPE_PAL,
382                 .ranges = tuner_temic_4046fm5_pal_ranges,
383                 .count  = ARRAY_SIZE(tuner_temic_4046fm5_pal_ranges),
384                 .config = 0x8e,
385         },
386 };
387
388 /* ------------ TUNER_PHILIPS_PAL_DK - Philips PAL ------------ */
389
390 static struct tuner_range tuner_lg_pal_ranges[] = {
391         { 16 * 170.00 /*MHz*/, 0xa0, },
392         { 16 * 450.00 /*MHz*/, 0x90, },
393         { 16 * 999.99        , 0x30, },
394 };
395
396 static struct tuner_params tuner_philips_pal_dk_params[] = {
397         {
398                 .type   = TUNER_PARAM_TYPE_PAL,
399                 .ranges = tuner_lg_pal_ranges,
400                 .count  = ARRAY_SIZE(tuner_lg_pal_ranges),
401                 .config = 0x8e,
402         },
403 };
404
405 /* ------------ TUNER_PHILIPS_FQ1216ME - Philips PAL ------------ */
406
407 static struct tuner_params tuner_philips_fq1216me_params[] = {
408         {
409                 .type   = TUNER_PARAM_TYPE_PAL,
410                 .ranges = tuner_lg_pal_ranges,
411                 .count  = ARRAY_SIZE(tuner_lg_pal_ranges),
412                 .config = 0x8e,
413         },
414 };
415
416 /* ------------ TUNER_LG_PAL_I_FM - LGINNOTEK PAL_I ------------ */
417
418 static struct tuner_params tuner_lg_pal_i_fm_params[] = {
419         {
420                 .type   = TUNER_PARAM_TYPE_PAL,
421                 .ranges = tuner_lg_pal_ranges,
422                 .count  = ARRAY_SIZE(tuner_lg_pal_ranges),
423                 .config = 0x8e,
424         },
425 };
426
427 /* ------------ TUNER_LG_PAL_I - LGINNOTEK PAL_I ------------ */
428
429 static struct tuner_params tuner_lg_pal_i_params[] = {
430         {
431                 .type   = TUNER_PARAM_TYPE_PAL,
432                 .ranges = tuner_lg_pal_ranges,
433                 .count  = ARRAY_SIZE(tuner_lg_pal_ranges),
434                 .config = 0x8e,
435         },
436 };
437
438 /* ------------ TUNER_LG_NTSC_FM - LGINNOTEK NTSC ------------ */
439
440 static struct tuner_range tuner_lg_ntsc_fm_ranges[] = {
441         { 16 * 210.00 /*MHz*/, 0xa0, },
442         { 16 * 497.00 /*MHz*/, 0x90, },
443         { 16 * 999.99        , 0x30, },
444 };
445
446 static struct tuner_params tuner_lg_ntsc_fm_params[] = {
447         {
448                 .type   = TUNER_PARAM_TYPE_NTSC,
449                 .ranges = tuner_lg_ntsc_fm_ranges,
450                 .count  = ARRAY_SIZE(tuner_lg_ntsc_fm_ranges),
451                 .config = 0x8e,
452         },
453 };
454
455 /* ------------ TUNER_LG_PAL_FM - LGINNOTEK PAL ------------ */
456
457 static struct tuner_params tuner_lg_pal_fm_params[] = {
458         {
459                 .type   = TUNER_PARAM_TYPE_PAL,
460                 .ranges = tuner_lg_pal_ranges,
461                 .count  = ARRAY_SIZE(tuner_lg_pal_ranges),
462                 .config = 0x8e,
463         },
464 };
465
466 /* ------------ TUNER_LG_PAL - LGINNOTEK PAL ------------ */
467
468 static struct tuner_params tuner_lg_pal_params[] = {
469         {
470                 .type   = TUNER_PARAM_TYPE_PAL,
471                 .ranges = tuner_lg_pal_ranges,
472                 .count  = ARRAY_SIZE(tuner_lg_pal_ranges),
473                 .config = 0x8e,
474         },
475 };
476
477 /* 30-39 */
478 /* ------------ TUNER_TEMIC_4009FN5_MULTI_PAL_FM - TEMIC PAL ------------ */
479
480 static struct tuner_params tuner_temic_4009_fn5_multi_pal_fm_params[] = {
481         {
482                 .type   = TUNER_PARAM_TYPE_PAL,
483                 .ranges = tuner_temic_4009f_5_pal_ranges,
484                 .count  = ARRAY_SIZE(tuner_temic_4009f_5_pal_ranges),
485                 .config = 0x8e,
486         },
487 };
488
489 /* ------------ TUNER_SHARP_2U5JF5540_NTSC - SHARP NTSC ------------ */
490
491 static struct tuner_range tuner_sharp_2u5jf5540_ntsc_ranges[] = {
492         { 16 * 137.25 /*MHz*/, 0x01, },
493         { 16 * 317.25 /*MHz*/, 0x02, },
494         { 16 * 999.99        , 0x08, },
495 };
496
497 static struct tuner_params tuner_sharp_2u5jf5540_params[] = {
498         {
499                 .type   = TUNER_PARAM_TYPE_NTSC,
500                 .ranges = tuner_sharp_2u5jf5540_ntsc_ranges,
501                 .count  = ARRAY_SIZE(tuner_sharp_2u5jf5540_ntsc_ranges),
502                 .config = 0x8e,
503         },
504 };
505
506 /* ------------ TUNER_Samsung_PAL_TCPM9091PD27 - Samsung PAL ------------ */
507
508 static struct tuner_range tuner_samsung_pal_tcpm9091pd27_ranges[] = {
509         { 16 * 169 /*MHz*/, 0xa0, },
510         { 16 * 464 /*MHz*/, 0x90, },
511         { 16 * 999.99     , 0x30, },
512 };
513
514 static struct tuner_params tuner_samsung_pal_tcpm9091pd27_params[] = {
515         {
516                 .type   = TUNER_PARAM_TYPE_PAL,
517                 .ranges = tuner_samsung_pal_tcpm9091pd27_ranges,
518                 .count  = ARRAY_SIZE(tuner_samsung_pal_tcpm9091pd27_ranges),
519                 .config = 0x8e,
520         },
521 };
522
523 /* ------------ TUNER_TEMIC_4106FH5 - TEMIC PAL ------------ */
524
525 static struct tuner_params tuner_temic_4106fh5_params[] = {
526         {
527                 .type   = TUNER_PARAM_TYPE_PAL,
528                 .ranges = tuner_temic_4009f_5_pal_ranges,
529                 .count  = ARRAY_SIZE(tuner_temic_4009f_5_pal_ranges),
530                 .config = 0x8e,
531         },
532 };
533
534 /* ------------ TUNER_TEMIC_4012FY5 - TEMIC PAL ------------ */
535
536 static struct tuner_range tuner_temic_4012fy5_pal_ranges[] = {
537         { 16 * 140.25 /*MHz*/, 0x02, },
538         { 16 * 463.25 /*MHz*/, 0x04, },
539         { 16 * 999.99        , 0x01, },
540 };
541
542 static struct tuner_params tuner_temic_4012fy5_params[] = {
543         {
544                 .type   = TUNER_PARAM_TYPE_PAL,
545                 .ranges = tuner_temic_4012fy5_pal_ranges,
546                 .count  = ARRAY_SIZE(tuner_temic_4012fy5_pal_ranges),
547                 .config = 0x8e,
548         },
549 };
550
551 /* ------------ TUNER_TEMIC_4136FY5 - TEMIC NTSC ------------ */
552
553 static struct tuner_range tuner_temic_4136_fy5_ntsc_ranges[] = {
554         { 16 * 158.00 /*MHz*/, 0xa0, },
555         { 16 * 453.00 /*MHz*/, 0x90, },
556         { 16 * 999.99        , 0x30, },
557 };
558
559 static struct tuner_params tuner_temic_4136_fy5_params[] = {
560         {
561                 .type   = TUNER_PARAM_TYPE_NTSC,
562                 .ranges = tuner_temic_4136_fy5_ntsc_ranges,
563                 .count  = ARRAY_SIZE(tuner_temic_4136_fy5_ntsc_ranges),
564                 .config = 0x8e,
565         },
566 };
567
568 /* ------------ TUNER_LG_PAL_NEW_TAPC - LGINNOTEK PAL ------------ */
569
570 static struct tuner_range tuner_lg_new_tapc_ranges[] = {
571         { 16 * 170.00 /*MHz*/, 0x01, },
572         { 16 * 450.00 /*MHz*/, 0x02, },
573         { 16 * 999.99        , 0x08, },
574 };
575
576 static struct tuner_params tuner_lg_pal_new_tapc_params[] = {
577         {
578                 .type   = TUNER_PARAM_TYPE_PAL,
579                 .ranges = tuner_lg_new_tapc_ranges,
580                 .count  = ARRAY_SIZE(tuner_lg_new_tapc_ranges),
581                 .config = 0x8e,
582         },
583 };
584
585 /* ------------ TUNER_PHILIPS_FM1216ME_MK3 - Philips PAL ------------ */
586
587 static struct tuner_range tuner_fm1216me_mk3_pal_ranges[] = {
588         { 16 * 158.00 /*MHz*/, 0x01, },
589         { 16 * 442.00 /*MHz*/, 0x02, },
590         { 16 * 999.99        , 0x04, },
591 };
592
593 static struct tuner_params tuner_fm1216me_mk3_params[] = {
594         {
595                 .type   = TUNER_PARAM_TYPE_PAL,
596                 .ranges = tuner_fm1216me_mk3_pal_ranges,
597                 .count  = ARRAY_SIZE(tuner_fm1216me_mk3_pal_ranges),
598                 .config = 0x8e,
599         },
600 };
601
602 /* ------------ TUNER_LG_NTSC_NEW_TAPC - LGINNOTEK NTSC ------------ */
603
604 static struct tuner_params tuner_lg_ntsc_new_tapc_params[] = {
605         {
606                 .type   = TUNER_PARAM_TYPE_NTSC,
607                 .ranges = tuner_lg_new_tapc_ranges,
608                 .count  = ARRAY_SIZE(tuner_lg_new_tapc_ranges),
609                 .config = 0x8e,
610         },
611 };
612
613 /* 40-49 */
614 /* ------------ TUNER_HITACHI_NTSC - HITACHI NTSC ------------ */
615
616 static struct tuner_params tuner_hitachi_ntsc_params[] = {
617         {
618                 .type   = TUNER_PARAM_TYPE_NTSC,
619                 .ranges = tuner_lg_new_tapc_ranges,
620                 .count  = ARRAY_SIZE(tuner_lg_new_tapc_ranges),
621                 .config = 0x8e,
622         },
623 };
624
625 /* ------------ TUNER_PHILIPS_PAL_MK - Philips PAL ------------ */
626
627 static struct tuner_range tuner_philips_pal_mk_pal_ranges[] = {
628         { 16 * 140.25 /*MHz*/, 0x01, },
629         { 16 * 463.25 /*MHz*/, 0xc2, },
630         { 16 * 999.99        , 0xcf, },
631 };
632
633 static struct tuner_params tuner_philips_pal_mk_params[] = {
634         {
635                 .type   = TUNER_PARAM_TYPE_PAL,
636                 .ranges = tuner_philips_pal_mk_pal_ranges,
637                 .count  = ARRAY_SIZE(tuner_philips_pal_mk_pal_ranges),
638                 .config = 0x8e,
639         },
640 };
641
642 /* ------------ TUNER_PHILIPS_ATSC - Philips ATSC ------------ */
643
644 static struct tuner_range tuner_philips_atsc_ranges[] = {
645         { 16 * 157.25 /*MHz*/, 0xa0, },
646         { 16 * 454.00 /*MHz*/, 0x90, },
647         { 16 * 999.99        , 0x30, },
648 };
649
650 static struct tuner_params tuner_philips_atsc_params[] = {
651         {
652                 .type   = TUNER_PARAM_TYPE_NTSC,
653                 .ranges = tuner_philips_atsc_ranges,
654                 .count  = ARRAY_SIZE(tuner_philips_atsc_ranges),
655                 .config = 0x8e,
656         },
657 };
658
659 /* ------------ TUNER_PHILIPS_FM1236_MK3 - Philips NTSC ------------ */
660
661 static struct tuner_range tuner_fm1236_mk3_ntsc_ranges[] = {
662         { 16 * 160.00 /*MHz*/, 0x01, },
663         { 16 * 442.00 /*MHz*/, 0x02, },
664         { 16 * 999.99        , 0x04, },
665 };
666
667 static struct tuner_params tuner_fm1236_mk3_params[] = {
668         {
669                 .type   = TUNER_PARAM_TYPE_NTSC,
670                 .ranges = tuner_fm1236_mk3_ntsc_ranges,
671                 .count  = ARRAY_SIZE(tuner_fm1236_mk3_ntsc_ranges),
672                 .config = 0x8e,
673         },
674 };
675
676 /* ------------ TUNER_PHILIPS_4IN1 - Philips NTSC ------------ */
677
678 static struct tuner_range tuner_philips_4in1_ntsc_ranges[] = {
679         { 16 * 160.00 /*MHz*/, 0x01, },
680         { 16 * 442.00 /*MHz*/, 0x02, },
681         { 16 * 999.99        , 0x04, },
682 };
683
684 static struct tuner_params tuner_philips_4in1_params[] = {
685         {
686                 .type   = TUNER_PARAM_TYPE_NTSC,
687                 .ranges = tuner_philips_4in1_ntsc_ranges,
688                 .count  = ARRAY_SIZE(tuner_philips_4in1_ntsc_ranges),
689                 .config = 0x8e,
690         },
691 };
692
693 /* ------------ TUNER_MICROTUNE_4049FM5 - Microtune PAL ------------ */
694
695 static struct tuner_params tuner_microtune_4049_fm5_params[] = {
696         {
697                 .type   = TUNER_PARAM_TYPE_PAL,
698                 .ranges = tuner_temic_4009f_5_pal_ranges,
699                 .count  = ARRAY_SIZE(tuner_temic_4009f_5_pal_ranges),
700                 .config = 0x8e,
701         },
702 };
703
704 /* ------------ TUNER_PANASONIC_VP27 - Panasonic NTSC ------------ */
705
706 static struct tuner_range tuner_panasonic_vp27_ntsc_ranges[] = {
707         { 16 * 160.00 /*MHz*/, 0x01, },
708         { 16 * 454.00 /*MHz*/, 0x02, },
709         { 16 * 999.99        , 0x08, },
710 };
711
712 static struct tuner_params tuner_panasonic_vp27_params[] = {
713         {
714                 .type   = TUNER_PARAM_TYPE_NTSC,
715                 .ranges = tuner_panasonic_vp27_ntsc_ranges,
716                 .count  = ARRAY_SIZE(tuner_panasonic_vp27_ntsc_ranges),
717                 .config = 0xce,
718         },
719 };
720
721 /* ------------ TUNER_LG_NTSC_TAPE - LGINNOTEK NTSC ------------ */
722
723 static struct tuner_range tuner_lg_ntsc_tape_ranges[] = {
724         { 16 * 160.00 /*MHz*/, 0x01, },
725         { 16 * 442.00 /*MHz*/, 0x02, },
726         { 16 * 999.99        , 0x04, },
727 };
728
729 static struct tuner_params tuner_lg_ntsc_tape_params[] = {
730         {
731                 .type   = TUNER_PARAM_TYPE_NTSC,
732                 .ranges = tuner_lg_ntsc_tape_ranges,
733                 .count  = ARRAY_SIZE(tuner_lg_ntsc_tape_ranges),
734                 .config = 0x8e,
735         },
736 };
737
738 /* ------------ TUNER_TNF_8831BGFF - Philips PAL ------------ */
739
740 static struct tuner_range tuner_tnf_8831bgff_pal_ranges[] = {
741         { 16 * 161.25 /*MHz*/, 0xa0, },
742         { 16 * 463.25 /*MHz*/, 0x90, },
743         { 16 * 999.99        , 0x30, },
744 };
745
746 static struct tuner_params tuner_tnf_8831bgff_params[] = {
747         {
748                 .type   = TUNER_PARAM_TYPE_PAL,
749                 .ranges = tuner_tnf_8831bgff_pal_ranges,
750                 .count  = ARRAY_SIZE(tuner_tnf_8831bgff_pal_ranges),
751                 .config = 0x8e,
752         },
753 };
754
755 /* ------------ TUNER_MICROTUNE_4042FI5 - Microtune NTSC ------------ */
756
757 static struct tuner_range tuner_microtune_4042fi5_ntsc_ranges[] = {
758         { 16 * 162.00 /*MHz*/, 0xa2, },
759         { 16 * 457.00 /*MHz*/, 0x94, },
760         { 16 * 999.99        , 0x31, },
761 };
762
763 static struct tuner_params tuner_microtune_4042fi5_params[] = {
764         {
765                 .type   = TUNER_PARAM_TYPE_NTSC,
766                 .ranges = tuner_microtune_4042fi5_ntsc_ranges,
767                 .count  = ARRAY_SIZE(tuner_microtune_4042fi5_ntsc_ranges),
768                 .config = 0x8e,
769         },
770 };
771
772 /* 50-59 */
773 /* ------------ TUNER_TCL_2002N - TCL NTSC ------------ */
774
775 static struct tuner_range tuner_tcl_2002n_ntsc_ranges[] = {
776         { 16 * 172.00 /*MHz*/, 0x01, },
777         { 16 * 448.00 /*MHz*/, 0x02, },
778         { 16 * 999.99        , 0x08, },
779 };
780
781 static struct tuner_params tuner_tcl_2002n_params[] = {
782         {
783                 .type   = TUNER_PARAM_TYPE_NTSC,
784                 .ranges = tuner_tcl_2002n_ntsc_ranges,
785                 .count  = ARRAY_SIZE(tuner_tcl_2002n_ntsc_ranges),
786                 .config = 0x8e,
787         },
788 };
789
790 /* ------------ TUNER_PHILIPS_FM1256_IH3 - Philips PAL ------------ */
791
792 static struct tuner_range tuner_philips_fm1256_ih3_pal_ranges[] = {
793         { 16 * 160.00 /*MHz*/, 0x01, },
794         { 16 * 442.00 /*MHz*/, 0x02, },
795         { 16 * 999.99        , 0x04, },
796 };
797
798 static struct tuner_params tuner_philips_fm1256_ih3_params[] = {
799         {
800                 .type   = TUNER_PARAM_TYPE_PAL,
801                 .ranges = tuner_philips_fm1256_ih3_pal_ranges,
802                 .count  = ARRAY_SIZE(tuner_philips_fm1256_ih3_pal_ranges),
803                 .config = 0x8e,
804         },
805 };
806
807 /* ------------ TUNER_THOMSON_DTT7610 - THOMSON ATSC ------------ */
808
809 static struct tuner_range tuner_thomson_dtt7610_ntsc_ranges[] = {
810         { 16 * 157.25 /*MHz*/, 0x39, },
811         { 16 * 454.00 /*MHz*/, 0x3a, },
812         { 16 * 999.99        , 0x3c, },
813 };
814
815 static struct tuner_params tuner_thomson_dtt7610_params[] = {
816         {
817                 .type   = TUNER_PARAM_TYPE_NTSC,
818                 .ranges = tuner_thomson_dtt7610_ntsc_ranges,
819                 .count  = ARRAY_SIZE(tuner_thomson_dtt7610_ntsc_ranges),
820                 .config = 0x8e,
821         },
822 };
823
824 /* ------------ TUNER_PHILIPS_FQ1286 - Philips NTSC ------------ */
825
826 static struct tuner_range tuner_philips_fq1286_ntsc_ranges[] = {
827         { 16 * 160.00 /*MHz*/, 0x41, },
828         { 16 * 454.00 /*MHz*/, 0x42, },
829         { 16 * 999.99        , 0x04, },
830 };
831
832 static struct tuner_params tuner_philips_fq1286_params[] = {
833         {
834                 .type   = TUNER_PARAM_TYPE_NTSC,
835                 .ranges = tuner_philips_fq1286_ntsc_ranges,
836                 .count  = ARRAY_SIZE(tuner_philips_fq1286_ntsc_ranges),
837                 .config = 0x8e,
838         },
839 };
840
841 /* ------------ TUNER_TCL_2002MB - TCL PAL ------------ */
842
843 static struct tuner_range tuner_tcl_2002mb_pal_ranges[] = {
844         { 16 * 170.00 /*MHz*/, 0x01, },
845         { 16 * 450.00 /*MHz*/, 0x02, },
846         { 16 * 999.99        , 0x08, },
847 };
848
849 static struct tuner_params tuner_tcl_2002mb_params[] = {
850         {
851                 .type   = TUNER_PARAM_TYPE_PAL,
852                 .ranges = tuner_tcl_2002mb_pal_ranges,
853                 .count  = ARRAY_SIZE(tuner_tcl_2002mb_pal_ranges),
854                 .config = 0xce,
855         },
856 };
857
858 /* ------------ TUNER_PHILIPS_FQ1216AME_MK4 - Philips PAL ------------ */
859
860 static struct tuner_range tuner_philips_fq12_6a___mk4_ranges[] = {
861         { 16 * 160.00 /*MHz*/, 0x01, },
862         { 16 * 442.00 /*MHz*/, 0x02, },
863         { 16 * 999.99        , 0x04, },
864 };
865
866 static struct tuner_params tuner_philips_fq1216ame_mk4_params[] = {
867         {
868                 .type   = TUNER_PARAM_TYPE_PAL,
869                 .ranges = tuner_philips_fq12_6a___mk4_ranges,
870                 .count  = ARRAY_SIZE(tuner_philips_fq12_6a___mk4_ranges),
871                 .config = 0xce,
872         },
873 };
874
875 /* ------------ TUNER_PHILIPS_FQ1236A_MK4 - Philips NTSC ------------ */
876
877 static struct tuner_params tuner_philips_fq1236a_mk4_params[] = {
878         {
879                 .type   = TUNER_PARAM_TYPE_NTSC,
880                 .ranges = tuner_philips_fq12_6a___mk4_ranges,
881                 .count  = ARRAY_SIZE(tuner_philips_fq12_6a___mk4_ranges),
882                 .config = 0x8e,
883         },
884 };
885
886 /* ------------ TUNER_YMEC_TVF_8531MF - Philips NTSC ------------ */
887
888 static struct tuner_range tuner_ymec_tvf_8531mf_ntsc_ranges[] = {
889         { 16 * 160.00 /*MHz*/, 0xa0, },
890         { 16 * 454.00 /*MHz*/, 0x90, },
891         { 16 * 999.99        , 0x30, },
892 };
893
894 static struct tuner_params tuner_ymec_tvf_8531mf_params[] = {
895         {
896                 .type   = TUNER_PARAM_TYPE_NTSC,
897                 .ranges = tuner_ymec_tvf_8531mf_ntsc_ranges,
898                 .count  = ARRAY_SIZE(tuner_ymec_tvf_8531mf_ntsc_ranges),
899                 .config = 0x8e,
900         },
901 };
902
903 /* ------------ TUNER_YMEC_TVF_5533MF - Philips NTSC ------------ */
904
905 static struct tuner_range tuner_ymec_tvf_5533mf_ntsc_ranges[] = {
906         { 16 * 160.00 /*MHz*/, 0x01, },
907         { 16 * 454.00 /*MHz*/, 0x02, },
908         { 16 * 999.99        , 0x04, },
909 };
910
911 static struct tuner_params tuner_ymec_tvf_5533mf_params[] = {
912         {
913                 .type   = TUNER_PARAM_TYPE_NTSC,
914                 .ranges = tuner_ymec_tvf_5533mf_ntsc_ranges,
915                 .count  = ARRAY_SIZE(tuner_ymec_tvf_5533mf_ntsc_ranges),
916                 .config = 0x8e,
917         },
918 };
919
920 /* 60-69 */
921 /* ------------ TUNER_THOMSON_DTT761X - THOMSON ATSC ------------ */
922 /* DTT 7611 7611A 7612 7613 7613A 7614 7615 7615A */
923
924 static struct tuner_range tuner_thomson_dtt761x_ntsc_ranges[] = {
925         { 16 * 145.25 /*MHz*/, 0x39, },
926         { 16 * 415.25 /*MHz*/, 0x3a, },
927         { 16 * 999.99        , 0x3c, },
928 };
929
930
931 static struct tuner_params tuner_thomson_dtt761x_params[] = {
932         {
933                 .type   = TUNER_PARAM_TYPE_NTSC,
934                 .ranges = tuner_thomson_dtt761x_ntsc_ranges,
935                 .count  = ARRAY_SIZE(tuner_thomson_dtt761x_ntsc_ranges),
936                 .config = 0x8e,
937         },
938 };
939
940 /* ------------ TUNER_TENA_9533_DI - Philips PAL ------------ */
941
942 static struct tuner_range tuner_tuner_tena_9533_di_pal_ranges[] = {
943         { 16 * 160.25 /*MHz*/, 0x01, },
944         { 16 * 464.25 /*MHz*/, 0x02, },
945         { 16 * 999.99        , 0x04, },
946 };
947
948 static struct tuner_params tuner_tena_9533_di_params[] = {
949         {
950                 .type   = TUNER_PARAM_TYPE_PAL,
951                 .ranges = tuner_tuner_tena_9533_di_pal_ranges,
952                 .count  = ARRAY_SIZE(tuner_tuner_tena_9533_di_pal_ranges),
953                 .config = 0x8e,
954         },
955 };
956
957 /* ------------ TUNER_PHILIPS_FMD1216ME_MK3 - Philips PAL ------------ */
958
959 static struct tuner_range tuner_philips_fmd1216me_mk3_pal_ranges[] = {
960         { 16 * 160.00 /*MHz*/, 0x51, },
961         { 16 * 442.00 /*MHz*/, 0x52, },
962         { 16 * 999.99        , 0x54, },
963 };
964
965
966 static struct tuner_params tuner_tuner_philips_fmd1216me_mk3_params[] = {
967         {
968                 .type   = TUNER_PARAM_TYPE_PAL,
969                 .ranges = tuner_philips_fmd1216me_mk3_pal_ranges,
970                 .count  = ARRAY_SIZE(tuner_philips_fmd1216me_mk3_pal_ranges),
971                 .config = 0x86,
972         },
973 };
974
975
976 /* ------------ TUNER_LG_TDVS_H062F - INFINEON ATSC ------------ */
977
978 static struct tuner_range tuner_tua6034_ntsc_ranges[] = {
979         { 16 * 160.00 /*MHz*/, 0x01 },
980         { 16 * 455.00 /*MHz*/, 0x02 },
981         { 16 * 999.99        , 0x04 },
982 };
983
984
985 static struct tuner_params tuner_tua6034_params[] = {
986         {
987                 .type   = TUNER_PARAM_TYPE_NTSC,
988                 .ranges = tuner_tua6034_ntsc_ranges,
989                 .count  = ARRAY_SIZE(tuner_tua6034_ntsc_ranges),
990                 .config = 0x8e,
991         },
992 };
993
994 /* ------------ TUNER_YMEC_TVF66T5_B_DFF - Philips PAL ------------ */
995
996 static struct tuner_range tuner_ymec_tvf66t5_b_dff_pal_ranges[] = {
997         { 16 * 160.25 /*MHz*/, 0x01, },
998         { 16 * 464.25 /*MHz*/, 0x02, },
999         { 16 * 999.99        , 0x08, },
1000 };
1001
1002 static struct tuner_params tuner_ymec_tvf66t5_b_dff_params[] = {
1003         {
1004                 .type   = TUNER_PARAM_TYPE_PAL,
1005                 .ranges = tuner_ymec_tvf66t5_b_dff_pal_ranges,
1006                 .count  = ARRAY_SIZE(tuner_ymec_tvf66t5_b_dff_pal_ranges),
1007                 .config = 0x8e,
1008         },
1009 };
1010
1011 /* ------------ TUNER_LG_NTSC_TALN_MINI - LGINNOTEK NTSC ------------ */
1012
1013 static struct tuner_range tuner_lg_taln_mini_ntsc_ranges[] = {
1014         { 16 * 137.25 /*MHz*/, 0x01, },
1015         { 16 * 373.25 /*MHz*/, 0x02, },
1016         { 16 * 999.99        , 0x08, },
1017 };
1018
1019 static struct tuner_params tuner_lg_taln_mini_params[] = {
1020         {
1021                 .type   = TUNER_PARAM_TYPE_NTSC,
1022                 .ranges = tuner_lg_taln_mini_ntsc_ranges,
1023                 .count  = ARRAY_SIZE(tuner_lg_taln_mini_ntsc_ranges),
1024                 .config = 0x8e,
1025         },
1026 };
1027
1028 /* ------------ TUNER_PHILIPS_TD1316 - Philips PAL ------------ */
1029
1030 static struct tuner_range tuner_philips_td1316_pal_ranges[] = {
1031         { 16 * 160.00 /*MHz*/, 0xa1, },
1032         { 16 * 442.00 /*MHz*/, 0xa2, },
1033         { 16 * 999.99        , 0xa4, },
1034 };
1035
1036 static struct tuner_params tuner_philips_td1316_params[] = {
1037         {
1038                 .type   = TUNER_PARAM_TYPE_PAL,
1039                 .ranges = tuner_philips_td1316_pal_ranges,
1040                 .count  = ARRAY_SIZE(tuner_philips_td1316_pal_ranges),
1041                 .config = 0xc8,
1042         },
1043 };
1044
1045 /* ------------ TUNER_PHILIPS_TUV1236D - Philips ATSC ------------ */
1046
1047 static struct tuner_range tuner_tuv1236d_ntsc_ranges[] = {
1048         { 16 * 157.25 /*MHz*/, 0x01, },
1049         { 16 * 454.00 /*MHz*/, 0x02, },
1050         { 16 * 999.99        , 0x04, },
1051 };
1052
1053
1054 static struct tuner_params tuner_tuner_tuv1236d_params[] = {
1055         {
1056                 .type   = TUNER_PARAM_TYPE_NTSC,
1057                 .ranges = tuner_tuv1236d_ntsc_ranges,
1058                 .count  = ARRAY_SIZE(tuner_tuv1236d_ntsc_ranges),
1059                 .config = 0xce,
1060         },
1061 };
1062
1063 /* ------------ TUNER_TNF_5335MF - Philips NTSC ------------ */
1064
1065 static struct tuner_range tuner_tnf_5335mf_ntsc_ranges[] = {
1066         { 16 * 157.25 /*MHz*/, 0x01, },
1067         { 16 * 454.00 /*MHz*/, 0x02, },
1068         { 16 * 999.99        , 0x04, },
1069 };
1070
1071 static struct tuner_params tuner_tnf_5335mf_params[] = {
1072         {
1073                 .type   = TUNER_PARAM_TYPE_NTSC,
1074                 .ranges = tuner_tnf_5335mf_ntsc_ranges,
1075                 .count  = ARRAY_SIZE(tuner_tnf_5335mf_ntsc_ranges),
1076                 .config = 0x8e,
1077         },
1078 };
1079
1080 /* 70-79 */
1081 /* ------------ TUNER_SAMSUNG_TCPN_2121P30A - Samsung NTSC ------------ */
1082
1083 static struct tuner_range tuner_samsung_tcpn_2121p30a_ntsc_ranges[] = {
1084         { 16 * 175.75 /*MHz*/, 0x01, },
1085         { 16 * 410.25 /*MHz*/, 0x02, },
1086         { 16 * 999.99        , 0x08, },
1087 };
1088
1089 static struct tuner_params tuner_samsung_tcpn_2121p30a_params[] = {
1090         {
1091                 .type   = TUNER_PARAM_TYPE_NTSC,
1092                 .ranges = tuner_samsung_tcpn_2121p30a_ntsc_ranges,
1093                 .count  = ARRAY_SIZE(tuner_samsung_tcpn_2121p30a_ntsc_ranges),
1094                 .config = 0xce,
1095         },
1096 };
1097
1098 /* --------------------------------------------------------------------- */
1099
1100 struct tunertype tuners[] = {
1101         /* 0-9 */
1102         [TUNER_TEMIC_PAL] = { /* TEMIC PAL */
1103                 .name   = "Temic PAL (4002 FH5)",
1104                 .params = tuner_temic_pal_params,
1105         },
1106         [TUNER_PHILIPS_PAL_I] = { /* Philips PAL_I */
1107                 .name   = "Philips PAL_I (FI1246 and compatibles)",
1108                 .params = tuner_philips_pal_i_params,
1109         },
1110         [TUNER_PHILIPS_NTSC] = { /* Philips NTSC */
1111                 .name   = "Philips NTSC (FI1236,FM1236 and compatibles)",
1112                 .params = tuner_philips_ntsc_params,
1113         },
1114         [TUNER_PHILIPS_SECAM] = { /* Philips SECAM */
1115                 .name   = "Philips (SECAM+PAL_BG) (FI1216MF, FM1216MF, FR1216MF)",
1116                 .params = tuner_philips_secam_params,
1117         },
1118         [TUNER_ABSENT] = { /* Tuner Absent */
1119                 .name   = "NoTuner",
1120         },
1121         [TUNER_PHILIPS_PAL] = { /* Philips PAL */
1122                 .name   = "Philips PAL_BG (FI1216 and compatibles)",
1123                 .params = tuner_philips_pal_params,
1124         },
1125         [TUNER_TEMIC_NTSC] = { /* TEMIC NTSC */
1126                 .name   = "Temic NTSC (4032 FY5)",
1127                 .params = tuner_temic_ntsc_params,
1128         },
1129         [TUNER_TEMIC_PAL_I] = { /* TEMIC PAL_I */
1130                 .name   = "Temic PAL_I (4062 FY5)",
1131                 .params = tuner_temic_pal_i_params,
1132         },
1133         [TUNER_TEMIC_4036FY5_NTSC] = { /* TEMIC NTSC */
1134                 .name   = "Temic NTSC (4036 FY5)",
1135                 .params = tuner_temic_4036fy5_ntsc_params,
1136         },
1137         [TUNER_ALPS_TSBH1_NTSC] = { /* TEMIC NTSC */
1138                 .name   = "Alps HSBH1",
1139                 .params = tuner_alps_tsbh1_ntsc_params,
1140         },
1141
1142         /* 10-19 */
1143         [TUNER_ALPS_TSBE1_PAL] = { /* TEMIC PAL */
1144                 .name   = "Alps TSBE1",
1145                 .params = tuner_alps_tsb_1_params,
1146         },
1147         [TUNER_ALPS_TSBB5_PAL_I] = { /* Alps PAL_I */
1148                 .name   = "Alps TSBB5",
1149                 .params = tuner_alps_tsbb5_params,
1150         },
1151         [TUNER_ALPS_TSBE5_PAL] = { /* Alps PAL */
1152                 .name   = "Alps TSBE5",
1153                 .params = tuner_alps_tsbe5_params,
1154         },
1155         [TUNER_ALPS_TSBC5_PAL] = { /* Alps PAL */
1156                 .name   = "Alps TSBC5",
1157                 .params = tuner_alps_tsbc5_params,
1158         },
1159         [TUNER_TEMIC_4006FH5_PAL] = { /* TEMIC PAL */
1160                 .name   = "Temic PAL_BG (4006FH5)",
1161                 .params = tuner_temic_4006fh5_params,
1162         },
1163         [TUNER_ALPS_TSHC6_NTSC] = { /* Alps NTSC */
1164                 .name   = "Alps TSCH6",
1165                 .params = tuner_alps_tshc6_params,
1166         },
1167         [TUNER_TEMIC_PAL_DK] = { /* TEMIC PAL */
1168                 .name   = "Temic PAL_DK (4016 FY5)",
1169                 .params = tuner_temic_pal_dk_params,
1170         },
1171         [TUNER_PHILIPS_NTSC_M] = { /* Philips NTSC */
1172                 .name   = "Philips NTSC_M (MK2)",
1173                 .params = tuner_philips_ntsc_m_params,
1174         },
1175         [TUNER_TEMIC_4066FY5_PAL_I] = { /* TEMIC PAL_I */
1176                 .name   = "Temic PAL_I (4066 FY5)",
1177                 .params = tuner_temic_4066fy5_pal_i_params,
1178         },
1179         [TUNER_TEMIC_4006FN5_MULTI_PAL] = { /* TEMIC PAL */
1180                 .name   = "Temic PAL* auto (4006 FN5)",
1181                 .params = tuner_temic_4006fn5_multi_params,
1182         },
1183
1184         /* 20-29 */
1185         [TUNER_TEMIC_4009FR5_PAL] = { /* TEMIC PAL */
1186                 .name   = "Temic PAL_BG (4009 FR5) or PAL_I (4069 FR5)",
1187                 .params = tuner_temic_4009f_5_params,
1188         },
1189         [TUNER_TEMIC_4039FR5_NTSC] = { /* TEMIC NTSC */
1190                 .name   = "Temic NTSC (4039 FR5)",
1191                 .params = tuner_temic_4039fr5_params,
1192         },
1193         [TUNER_TEMIC_4046FM5] = { /* TEMIC PAL */
1194                 .name   = "Temic PAL/SECAM multi (4046 FM5)",
1195                 .params = tuner_temic_4046fm5_params,
1196         },
1197         [TUNER_PHILIPS_PAL_DK] = { /* Philips PAL */
1198                 .name   = "Philips PAL_DK (FI1256 and compatibles)",
1199                 .params = tuner_philips_pal_dk_params,
1200         },
1201         [TUNER_PHILIPS_FQ1216ME] = { /* Philips PAL */
1202                 .name   = "Philips PAL/SECAM multi (FQ1216ME)",
1203                 .params = tuner_philips_fq1216me_params,
1204         },
1205         [TUNER_LG_PAL_I_FM] = { /* LGINNOTEK PAL_I */
1206                 .name   = "LG PAL_I+FM (TAPC-I001D)",
1207                 .params = tuner_lg_pal_i_fm_params,
1208         },
1209         [TUNER_LG_PAL_I] = { /* LGINNOTEK PAL_I */
1210                 .name   = "LG PAL_I (TAPC-I701D)",
1211                 .params = tuner_lg_pal_i_params,
1212         },
1213         [TUNER_LG_NTSC_FM] = { /* LGINNOTEK NTSC */
1214                 .name   = "LG NTSC+FM (TPI8NSR01F)",
1215                 .params = tuner_lg_ntsc_fm_params,
1216         },
1217         [TUNER_LG_PAL_FM] = { /* LGINNOTEK PAL */
1218                 .name   = "LG PAL_BG+FM (TPI8PSB01D)",
1219                 .params = tuner_lg_pal_fm_params,
1220         },
1221         [TUNER_LG_PAL] = { /* LGINNOTEK PAL */
1222                 .name   = "LG PAL_BG (TPI8PSB11D)",
1223                 .params = tuner_lg_pal_params,
1224         },
1225
1226         /* 30-39 */
1227         [TUNER_TEMIC_4009FN5_MULTI_PAL_FM] = { /* TEMIC PAL */
1228                 .name   = "Temic PAL* auto + FM (4009 FN5)",
1229                 .params = tuner_temic_4009_fn5_multi_pal_fm_params,
1230         },
1231         [TUNER_SHARP_2U5JF5540_NTSC] = { /* SHARP NTSC */
1232                 .name   = "SHARP NTSC_JP (2U5JF5540)",
1233                 .params = tuner_sharp_2u5jf5540_params,
1234         },
1235         [TUNER_Samsung_PAL_TCPM9091PD27] = { /* Samsung PAL */
1236                 .name   = "Samsung PAL TCPM9091PD27",
1237                 .params = tuner_samsung_pal_tcpm9091pd27_params,
1238         },
1239         [TUNER_MT2032] = { /* Microtune PAL|NTSC */
1240                 .name   = "MT20xx universal",
1241                 /* see mt20xx.c for details */ },
1242         [TUNER_TEMIC_4106FH5] = { /* TEMIC PAL */
1243                 .name   = "Temic PAL_BG (4106 FH5)",
1244                 .params = tuner_temic_4106fh5_params,
1245         },
1246         [TUNER_TEMIC_4012FY5] = { /* TEMIC PAL */
1247                 .name   = "Temic PAL_DK/SECAM_L (4012 FY5)",
1248                 .params = tuner_temic_4012fy5_params,
1249         },
1250         [TUNER_TEMIC_4136FY5] = { /* TEMIC NTSC */
1251                 .name   = "Temic NTSC (4136 FY5)",
1252                 .params = tuner_temic_4136_fy5_params,
1253         },
1254         [TUNER_LG_PAL_NEW_TAPC] = { /* LGINNOTEK PAL */
1255                 .name   = "LG PAL (newer TAPC series)",
1256                 .params = tuner_lg_pal_new_tapc_params,
1257         },
1258         [TUNER_PHILIPS_FM1216ME_MK3] = { /* Philips PAL */
1259                 .name   = "Philips PAL/SECAM multi (FM1216ME MK3)",
1260                 .params = tuner_fm1216me_mk3_params,
1261         },
1262         [TUNER_LG_NTSC_NEW_TAPC] = { /* LGINNOTEK NTSC */
1263                 .name   = "LG NTSC (newer TAPC series)",
1264                 .params = tuner_lg_ntsc_new_tapc_params,
1265         },
1266
1267         /* 40-49 */
1268         [TUNER_HITACHI_NTSC] = { /* HITACHI NTSC */
1269                 .name   = "HITACHI V7-J180AT",
1270                 .params = tuner_hitachi_ntsc_params,
1271         },
1272         [TUNER_PHILIPS_PAL_MK] = { /* Philips PAL */
1273                 .name   = "Philips PAL_MK (FI1216 MK)",
1274                 .params = tuner_philips_pal_mk_params,
1275         },
1276         [TUNER_PHILIPS_ATSC] = { /* Philips ATSC */
1277                 .name   = "Philips 1236D ATSC/NTSC dual in",
1278                 .params = tuner_philips_atsc_params,
1279         },
1280         [TUNER_PHILIPS_FM1236_MK3] = { /* Philips NTSC */
1281                 .name   = "Philips NTSC MK3 (FM1236MK3 or FM1236/F)",
1282                 .params = tuner_fm1236_mk3_params,
1283         },
1284         [TUNER_PHILIPS_4IN1] = { /* Philips NTSC */
1285                 .name   = "Philips 4 in 1 (ATI TV Wonder Pro/Conexant)",
1286                 .params = tuner_philips_4in1_params,
1287         },
1288         [TUNER_MICROTUNE_4049FM5] = { /* Microtune PAL */
1289                 .name   = "Microtune 4049 FM5",
1290                 .params = tuner_microtune_4049_fm5_params,
1291         },
1292         [TUNER_PANASONIC_VP27] = { /* Panasonic NTSC */
1293                 .name   = "Panasonic VP27s/ENGE4324D",
1294                 .params = tuner_panasonic_vp27_params,
1295         },
1296         [TUNER_LG_NTSC_TAPE] = { /* LGINNOTEK NTSC */
1297                 .name   = "LG NTSC (TAPE series)",
1298                 .params = tuner_lg_ntsc_tape_params,
1299         },
1300         [TUNER_TNF_8831BGFF] = { /* Philips PAL */
1301                 .name   = "Tenna TNF 8831 BGFF)",
1302                 .params = tuner_tnf_8831bgff_params,
1303         },
1304         [TUNER_MICROTUNE_4042FI5] = { /* Microtune NTSC */
1305                 .name   = "Microtune 4042 FI5 ATSC/NTSC dual in",
1306                 .params = tuner_microtune_4042fi5_params,
1307         },
1308
1309         /* 50-59 */
1310         [TUNER_TCL_2002N] = { /* TCL NTSC */
1311                 .name   = "TCL 2002N",
1312                 .params = tuner_tcl_2002n_params,
1313         },
1314         [TUNER_PHILIPS_FM1256_IH3] = { /* Philips PAL */
1315                 .name   = "Philips PAL/SECAM_D (FM 1256 I-H3)",
1316                 .params = tuner_philips_fm1256_ih3_params,
1317         },
1318         [TUNER_THOMSON_DTT7610] = { /* THOMSON ATSC */
1319                 .name   = "Thomson DTT 7610 (ATSC/NTSC)",
1320                 .params = tuner_thomson_dtt7610_params,
1321         },
1322         [TUNER_PHILIPS_FQ1286] = { /* Philips NTSC */
1323                 .name   = "Philips FQ1286",
1324                 .params = tuner_philips_fq1286_params,
1325         },
1326         [TUNER_PHILIPS_TDA8290] = { /* Philips PAL|NTSC */
1327                 .name   = "tda8290+75",
1328                 /* see tda8290.c for details */ },
1329         [TUNER_TCL_2002MB] = { /* TCL PAL */
1330                 .name   = "TCL 2002MB",
1331                 .params = tuner_tcl_2002mb_params,
1332         },
1333         [TUNER_PHILIPS_FQ1216AME_MK4] = { /* Philips PAL */
1334                 .name   = "Philips PAL/SECAM multi (FQ1216AME MK4)",
1335                 .params = tuner_philips_fq1216ame_mk4_params,
1336         },
1337         [TUNER_PHILIPS_FQ1236A_MK4] = { /* Philips NTSC */
1338                 .name   = "Philips FQ1236A MK4",
1339                 .params = tuner_philips_fq1236a_mk4_params,
1340         },
1341         [TUNER_YMEC_TVF_8531MF] = { /* Philips NTSC */
1342                 .name   = "Ymec TVision TVF-8531MF/8831MF/8731MF",
1343                 .params = tuner_ymec_tvf_8531mf_params,
1344         },
1345         [TUNER_YMEC_TVF_5533MF] = { /* Philips NTSC */
1346                 .name   = "Ymec TVision TVF-5533MF",
1347                 .params = tuner_ymec_tvf_5533mf_params,
1348         },
1349
1350         /* 60-69 */
1351         [TUNER_THOMSON_DTT761X] = { /* THOMSON ATSC */
1352                 /* DTT 7611 7611A 7612 7613 7613A 7614 7615 7615A */
1353                 .name   = "Thomson DTT 761X (ATSC/NTSC)",
1354                 .params = tuner_thomson_dtt761x_params,
1355         },
1356         [TUNER_TENA_9533_DI] = { /* Philips PAL */
1357                 .name   = "Tena TNF9533-D/IF/TNF9533-B/DF",
1358                 .params = tuner_tena_9533_di_params,
1359         },
1360         [TUNER_TEA5767] = { /* Philips RADIO */
1361                 .name   = "Philips TEA5767HN FM Radio",
1362                 /* see tea5767.c for details */
1363         },
1364         [TUNER_PHILIPS_FMD1216ME_MK3] = { /* Philips PAL */
1365                 .name   = "Philips FMD1216ME MK3 Hybrid Tuner",
1366                 .params = tuner_tuner_philips_fmd1216me_mk3_params,
1367         },
1368         [TUNER_LG_TDVS_H062F] = { /* LGINNOTEK ATSC */
1369                 .name   = "LG TDVS-H062F/TUA6034",
1370                 .params = tuner_tua6034_params,
1371         },
1372         [TUNER_YMEC_TVF66T5_B_DFF] = { /* Philips PAL */
1373                 .name   = "Ymec TVF66T5-B/DFF",
1374                 .params = tuner_ymec_tvf66t5_b_dff_params,
1375         },
1376         [TUNER_LG_NTSC_TALN_MINI] = { /* LGINNOTEK NTSC */
1377                 .name   = "LG NTSC (TALN mini series)",
1378                 .params = tuner_lg_taln_mini_params,
1379         },
1380         [TUNER_PHILIPS_TD1316] = { /* Philips PAL */
1381                 .name   = "Philips TD1316 Hybrid Tuner",
1382                 .params = tuner_philips_td1316_params,
1383         },
1384         [TUNER_PHILIPS_TUV1236D] = { /* Philips ATSC */
1385                 .name   = "Philips TUV1236D ATSC/NTSC dual in",
1386                 .params = tuner_tuner_tuv1236d_params,
1387         },
1388         [TUNER_TNF_5335MF] = { /* Philips NTSC */
1389                 .name   = "Tena TNF 5335 MF",
1390                 .params = tuner_tnf_5335mf_params,
1391         },
1392
1393         /* 70-79 */
1394         [TUNER_SAMSUNG_TCPN_2121P30A] = { /* Samsung NTSC */
1395                 .name   = "Samsung TCPN 2121P30A",
1396                 .params = tuner_samsung_tcpn_2121p30a_params,
1397         },
1398 };
1399
1400 unsigned const int tuner_count = ARRAY_SIZE(tuners);