cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

tuner-types.c (59235B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 *
      4 * i2c tv tuner chip device type database.
      5 *
      6 */
      7
      8#include <linux/i2c.h>
      9#include <linux/module.h>
     10#include <media/tuner.h>
     11#include <media/tuner-types.h>
     12
     13/* ---------------------------------------------------------------------- */
     14
     15/*
     16 *	The floats in the tuner struct are computed at compile time
     17 *	by gcc and cast back to integers. Thus we don't violate the
     18 *	"no float in kernel" rule.
     19 *
     20 *	A tuner_range may be referenced by multiple tuner_params structs.
     21 *	There are many duplicates in here. Reusing tuner_range structs,
     22 *	rather than defining new ones for each tuner, will cut down on
     23 *	memory usage, and is preferred when possible.
     24 *
     25 *	Each tuner_params array may contain one or more elements, one
     26 *	for each video standard.
     27 *
     28 *	FIXME: tuner_params struct contains an element, tda988x. We must
     29 *	set this for all tuners that contain a tda988x chip, and then we
     30 *	can remove this setting from the various card structs.
     31 *
     32 *	FIXME: Right now, all tuners are using the first tuner_params[]
     33 *	array element for analog mode. In the future, we will be merging
     34 *	similar tuner definitions together, such that each tuner definition
     35 *	will have a tuner_params struct for each available video standard.
     36 *	At that point, the tuner_params[] array element will be chosen
     37 *	based on the video standard in use.
     38 */
     39
     40/* The following was taken from dvb-pll.c: */
     41
     42/* Set AGC TOP value to 103 dBuV:
     43 *	0x80 = Control Byte
     44 *	0x40 = 250 uA charge pump (irrelevant)
     45 *	0x18 = Aux Byte to follow
     46 *	0x06 = 64.5 kHz divider (irrelevant)
     47 *	0x01 = Disable Vt (aka sleep)
     48 *
     49 *	0x00 = AGC Time constant 2s Iagc = 300 nA (vs 0x80 = 9 nA)
     50 *	0x50 = AGC Take over point = 103 dBuV
     51 */
     52static u8 tua603x_agc103[] = { 2, 0x80|0x40|0x18|0x06|0x01, 0x00|0x50 };
     53
     54/*	0x04 = 166.67 kHz divider
     55 *
     56 *	0x80 = AGC Time constant 50ms Iagc = 9 uA
     57 *	0x20 = AGC Take over point = 112 dBuV
     58 */
     59static u8 tua603x_agc112[] = { 2, 0x80|0x40|0x18|0x04|0x01, 0x80|0x20 };
     60
     61/* 0-9 */
     62/* ------------ TUNER_TEMIC_PAL - TEMIC PAL ------------ */
     63
     64static struct tuner_range tuner_temic_pal_ranges[] = {
     65	{ 16 * 140.25 /*MHz*/, 0x8e, 0x02, },
     66	{ 16 * 463.25 /*MHz*/, 0x8e, 0x04, },
     67	{ 16 * 999.99        , 0x8e, 0x01, },
     68};
     69
     70static struct tuner_params tuner_temic_pal_params[] = {
     71	{
     72		.type   = TUNER_PARAM_TYPE_PAL,
     73		.ranges = tuner_temic_pal_ranges,
     74		.count  = ARRAY_SIZE(tuner_temic_pal_ranges),
     75	},
     76};
     77
     78/* ------------ TUNER_PHILIPS_PAL_I - Philips PAL_I ------------ */
     79
     80static struct tuner_range tuner_philips_pal_i_ranges[] = {
     81	{ 16 * 140.25 /*MHz*/, 0x8e, 0xa0, },
     82	{ 16 * 463.25 /*MHz*/, 0x8e, 0x90, },
     83	{ 16 * 999.99        , 0x8e, 0x30, },
     84};
     85
     86static struct tuner_params tuner_philips_pal_i_params[] = {
     87	{
     88		.type   = TUNER_PARAM_TYPE_PAL,
     89		.ranges = tuner_philips_pal_i_ranges,
     90		.count  = ARRAY_SIZE(tuner_philips_pal_i_ranges),
     91	},
     92};
     93
     94/* ------------ TUNER_PHILIPS_NTSC - Philips NTSC ------------ */
     95
     96static struct tuner_range tuner_philips_ntsc_ranges[] = {
     97	{ 16 * 157.25 /*MHz*/, 0x8e, 0xa0, },
     98	{ 16 * 451.25 /*MHz*/, 0x8e, 0x90, },
     99	{ 16 * 999.99        , 0x8e, 0x30, },
    100};
    101
    102static struct tuner_params tuner_philips_ntsc_params[] = {
    103	{
    104		.type   = TUNER_PARAM_TYPE_NTSC,
    105		.ranges = tuner_philips_ntsc_ranges,
    106		.count  = ARRAY_SIZE(tuner_philips_ntsc_ranges),
    107		.cb_first_if_lower_freq = 1,
    108	},
    109};
    110
    111/* ------------ TUNER_PHILIPS_SECAM - Philips SECAM ------------ */
    112
    113static struct tuner_range tuner_philips_secam_ranges[] = {
    114	{ 16 * 168.25 /*MHz*/, 0x8e, 0xa7, },
    115	{ 16 * 447.25 /*MHz*/, 0x8e, 0x97, },
    116	{ 16 * 999.99        , 0x8e, 0x37, },
    117};
    118
    119static struct tuner_params tuner_philips_secam_params[] = {
    120	{
    121		.type   = TUNER_PARAM_TYPE_SECAM,
    122		.ranges = tuner_philips_secam_ranges,
    123		.count  = ARRAY_SIZE(tuner_philips_secam_ranges),
    124		.cb_first_if_lower_freq = 1,
    125	},
    126};
    127
    128/* ------------ TUNER_PHILIPS_PAL - Philips PAL ------------ */
    129
    130static struct tuner_range tuner_philips_pal_ranges[] = {
    131	{ 16 * 168.25 /*MHz*/, 0x8e, 0xa0, },
    132	{ 16 * 447.25 /*MHz*/, 0x8e, 0x90, },
    133	{ 16 * 999.99        , 0x8e, 0x30, },
    134};
    135
    136static struct tuner_params tuner_philips_pal_params[] = {
    137	{
    138		.type   = TUNER_PARAM_TYPE_PAL,
    139		.ranges = tuner_philips_pal_ranges,
    140		.count  = ARRAY_SIZE(tuner_philips_pal_ranges),
    141		.cb_first_if_lower_freq = 1,
    142	},
    143};
    144
    145/* ------------ TUNER_TEMIC_NTSC - TEMIC NTSC ------------ */
    146
    147static struct tuner_range tuner_temic_ntsc_ranges[] = {
    148	{ 16 * 157.25 /*MHz*/, 0x8e, 0x02, },
    149	{ 16 * 463.25 /*MHz*/, 0x8e, 0x04, },
    150	{ 16 * 999.99        , 0x8e, 0x01, },
    151};
    152
    153static struct tuner_params tuner_temic_ntsc_params[] = {
    154	{
    155		.type   = TUNER_PARAM_TYPE_NTSC,
    156		.ranges = tuner_temic_ntsc_ranges,
    157		.count  = ARRAY_SIZE(tuner_temic_ntsc_ranges),
    158	},
    159};
    160
    161/* ------------ TUNER_TEMIC_PAL_I - TEMIC PAL_I ------------ */
    162
    163static struct tuner_range tuner_temic_pal_i_ranges[] = {
    164	{ 16 * 170.00 /*MHz*/, 0x8e, 0x02, },
    165	{ 16 * 450.00 /*MHz*/, 0x8e, 0x04, },
    166	{ 16 * 999.99        , 0x8e, 0x01, },
    167};
    168
    169static struct tuner_params tuner_temic_pal_i_params[] = {
    170	{
    171		.type   = TUNER_PARAM_TYPE_PAL,
    172		.ranges = tuner_temic_pal_i_ranges,
    173		.count  = ARRAY_SIZE(tuner_temic_pal_i_ranges),
    174	},
    175};
    176
    177/* ------------ TUNER_TEMIC_4036FY5_NTSC - TEMIC NTSC ------------ */
    178
    179static struct tuner_range tuner_temic_4036fy5_ntsc_ranges[] = {
    180	{ 16 * 157.25 /*MHz*/, 0x8e, 0xa0, },
    181	{ 16 * 463.25 /*MHz*/, 0x8e, 0x90, },
    182	{ 16 * 999.99        , 0x8e, 0x30, },
    183};
    184
    185static struct tuner_params tuner_temic_4036fy5_ntsc_params[] = {
    186	{
    187		.type   = TUNER_PARAM_TYPE_NTSC,
    188		.ranges = tuner_temic_4036fy5_ntsc_ranges,
    189		.count  = ARRAY_SIZE(tuner_temic_4036fy5_ntsc_ranges),
    190	},
    191};
    192
    193/* ------------ TUNER_ALPS_TSBH1_NTSC - TEMIC NTSC ------------ */
    194
    195static struct tuner_range tuner_alps_tsb_1_ranges[] = {
    196	{ 16 * 137.25 /*MHz*/, 0x8e, 0x01, },
    197	{ 16 * 385.25 /*MHz*/, 0x8e, 0x02, },
    198	{ 16 * 999.99        , 0x8e, 0x08, },
    199};
    200
    201static struct tuner_params tuner_alps_tsbh1_ntsc_params[] = {
    202	{
    203		.type   = TUNER_PARAM_TYPE_NTSC,
    204		.ranges = tuner_alps_tsb_1_ranges,
    205		.count  = ARRAY_SIZE(tuner_alps_tsb_1_ranges),
    206	},
    207};
    208
    209/* 10-19 */
    210/* ------------ TUNER_ALPS_TSBE1_PAL - TEMIC PAL ------------ */
    211
    212static struct tuner_params tuner_alps_tsb_1_params[] = {
    213	{
    214		.type   = TUNER_PARAM_TYPE_PAL,
    215		.ranges = tuner_alps_tsb_1_ranges,
    216		.count  = ARRAY_SIZE(tuner_alps_tsb_1_ranges),
    217	},
    218};
    219
    220/* ------------ TUNER_ALPS_TSBB5_PAL_I - Alps PAL_I ------------ */
    221
    222static struct tuner_range tuner_alps_tsb_5_pal_ranges[] = {
    223	{ 16 * 133.25 /*MHz*/, 0x8e, 0x01, },
    224	{ 16 * 351.25 /*MHz*/, 0x8e, 0x02, },
    225	{ 16 * 999.99        , 0x8e, 0x08, },
    226};
    227
    228static struct tuner_params tuner_alps_tsbb5_params[] = {
    229	{
    230		.type   = TUNER_PARAM_TYPE_PAL,
    231		.ranges = tuner_alps_tsb_5_pal_ranges,
    232		.count  = ARRAY_SIZE(tuner_alps_tsb_5_pal_ranges),
    233	},
    234};
    235
    236/* ------------ TUNER_ALPS_TSBE5_PAL - Alps PAL ------------ */
    237
    238static struct tuner_params tuner_alps_tsbe5_params[] = {
    239	{
    240		.type   = TUNER_PARAM_TYPE_PAL,
    241		.ranges = tuner_alps_tsb_5_pal_ranges,
    242		.count  = ARRAY_SIZE(tuner_alps_tsb_5_pal_ranges),
    243	},
    244};
    245
    246/* ------------ TUNER_ALPS_TSBC5_PAL - Alps PAL ------------ */
    247
    248static struct tuner_params tuner_alps_tsbc5_params[] = {
    249	{
    250		.type   = TUNER_PARAM_TYPE_PAL,
    251		.ranges = tuner_alps_tsb_5_pal_ranges,
    252		.count  = ARRAY_SIZE(tuner_alps_tsb_5_pal_ranges),
    253	},
    254};
    255
    256/* ------------ TUNER_TEMIC_4006FH5_PAL - TEMIC PAL ------------ */
    257
    258static struct tuner_range tuner_lg_pal_ranges[] = {
    259	{ 16 * 170.00 /*MHz*/, 0x8e, 0xa0, },
    260	{ 16 * 450.00 /*MHz*/, 0x8e, 0x90, },
    261	{ 16 * 999.99        , 0x8e, 0x30, },
    262};
    263
    264static struct tuner_params tuner_temic_4006fh5_params[] = {
    265	{
    266		.type   = TUNER_PARAM_TYPE_PAL,
    267		.ranges = tuner_lg_pal_ranges,
    268		.count  = ARRAY_SIZE(tuner_lg_pal_ranges),
    269	},
    270};
    271
    272/* ------------ TUNER_ALPS_TSHC6_NTSC - Alps NTSC ------------ */
    273
    274static struct tuner_range tuner_alps_tshc6_ntsc_ranges[] = {
    275	{ 16 * 137.25 /*MHz*/, 0x8e, 0x14, },
    276	{ 16 * 385.25 /*MHz*/, 0x8e, 0x12, },
    277	{ 16 * 999.99        , 0x8e, 0x11, },
    278};
    279
    280static struct tuner_params tuner_alps_tshc6_params[] = {
    281	{
    282		.type   = TUNER_PARAM_TYPE_NTSC,
    283		.ranges = tuner_alps_tshc6_ntsc_ranges,
    284		.count  = ARRAY_SIZE(tuner_alps_tshc6_ntsc_ranges),
    285	},
    286};
    287
    288/* ------------ TUNER_TEMIC_PAL_DK - TEMIC PAL ------------ */
    289
    290static struct tuner_range tuner_temic_pal_dk_ranges[] = {
    291	{ 16 * 168.25 /*MHz*/, 0x8e, 0xa0, },
    292	{ 16 * 456.25 /*MHz*/, 0x8e, 0x90, },
    293	{ 16 * 999.99        , 0x8e, 0x30, },
    294};
    295
    296static struct tuner_params tuner_temic_pal_dk_params[] = {
    297	{
    298		.type   = TUNER_PARAM_TYPE_PAL,
    299		.ranges = tuner_temic_pal_dk_ranges,
    300		.count  = ARRAY_SIZE(tuner_temic_pal_dk_ranges),
    301	},
    302};
    303
    304/* ------------ TUNER_PHILIPS_NTSC_M - Philips NTSC ------------ */
    305
    306static struct tuner_range tuner_philips_ntsc_m_ranges[] = {
    307	{ 16 * 160.00 /*MHz*/, 0x8e, 0xa0, },
    308	{ 16 * 454.00 /*MHz*/, 0x8e, 0x90, },
    309	{ 16 * 999.99        , 0x8e, 0x30, },
    310};
    311
    312static struct tuner_params tuner_philips_ntsc_m_params[] = {
    313	{
    314		.type   = TUNER_PARAM_TYPE_NTSC,
    315		.ranges = tuner_philips_ntsc_m_ranges,
    316		.count  = ARRAY_SIZE(tuner_philips_ntsc_m_ranges),
    317	},
    318};
    319
    320/* ------------ TUNER_TEMIC_4066FY5_PAL_I - TEMIC PAL_I ------------ */
    321
    322static struct tuner_range tuner_temic_40x6f_5_pal_ranges[] = {
    323	{ 16 * 169.00 /*MHz*/, 0x8e, 0xa0, },
    324	{ 16 * 454.00 /*MHz*/, 0x8e, 0x90, },
    325	{ 16 * 999.99        , 0x8e, 0x30, },
    326};
    327
    328static struct tuner_params tuner_temic_4066fy5_pal_i_params[] = {
    329	{
    330		.type   = TUNER_PARAM_TYPE_PAL,
    331		.ranges = tuner_temic_40x6f_5_pal_ranges,
    332		.count  = ARRAY_SIZE(tuner_temic_40x6f_5_pal_ranges),
    333	},
    334};
    335
    336/* ------------ TUNER_TEMIC_4006FN5_MULTI_PAL - TEMIC PAL ------------ */
    337
    338static struct tuner_params tuner_temic_4006fn5_multi_params[] = {
    339	{
    340		.type   = TUNER_PARAM_TYPE_PAL,
    341		.ranges = tuner_temic_40x6f_5_pal_ranges,
    342		.count  = ARRAY_SIZE(tuner_temic_40x6f_5_pal_ranges),
    343	},
    344};
    345
    346/* 20-29 */
    347/* ------------ TUNER_TEMIC_4009FR5_PAL - TEMIC PAL ------------ */
    348
    349static struct tuner_range tuner_temic_4009f_5_pal_ranges[] = {
    350	{ 16 * 141.00 /*MHz*/, 0x8e, 0xa0, },
    351	{ 16 * 464.00 /*MHz*/, 0x8e, 0x90, },
    352	{ 16 * 999.99        , 0x8e, 0x30, },
    353};
    354
    355static struct tuner_params tuner_temic_4009f_5_params[] = {
    356	{
    357		.type   = TUNER_PARAM_TYPE_PAL,
    358		.ranges = tuner_temic_4009f_5_pal_ranges,
    359		.count  = ARRAY_SIZE(tuner_temic_4009f_5_pal_ranges),
    360	},
    361};
    362
    363/* ------------ TUNER_TEMIC_4039FR5_NTSC - TEMIC NTSC ------------ */
    364
    365static struct tuner_range tuner_temic_4x3x_f_5_ntsc_ranges[] = {
    366	{ 16 * 158.00 /*MHz*/, 0x8e, 0xa0, },
    367	{ 16 * 453.00 /*MHz*/, 0x8e, 0x90, },
    368	{ 16 * 999.99        , 0x8e, 0x30, },
    369};
    370
    371static struct tuner_params tuner_temic_4039fr5_params[] = {
    372	{
    373		.type   = TUNER_PARAM_TYPE_NTSC,
    374		.ranges = tuner_temic_4x3x_f_5_ntsc_ranges,
    375		.count  = ARRAY_SIZE(tuner_temic_4x3x_f_5_ntsc_ranges),
    376	},
    377};
    378
    379/* ------------ TUNER_TEMIC_4046FM5 - TEMIC PAL ------------ */
    380
    381static struct tuner_params tuner_temic_4046fm5_params[] = {
    382	{
    383		.type   = TUNER_PARAM_TYPE_PAL,
    384		.ranges = tuner_temic_40x6f_5_pal_ranges,
    385		.count  = ARRAY_SIZE(tuner_temic_40x6f_5_pal_ranges),
    386	},
    387};
    388
    389/* ------------ TUNER_PHILIPS_PAL_DK - Philips PAL ------------ */
    390
    391static struct tuner_params tuner_philips_pal_dk_params[] = {
    392	{
    393		.type   = TUNER_PARAM_TYPE_PAL,
    394		.ranges = tuner_lg_pal_ranges,
    395		.count  = ARRAY_SIZE(tuner_lg_pal_ranges),
    396	},
    397};
    398
    399/* ------------ TUNER_PHILIPS_FQ1216ME - Philips PAL ------------ */
    400
    401static struct tuner_params tuner_philips_fq1216me_params[] = {
    402	{
    403		.type   = TUNER_PARAM_TYPE_PAL,
    404		.ranges = tuner_lg_pal_ranges,
    405		.count  = ARRAY_SIZE(tuner_lg_pal_ranges),
    406		.has_tda9887 = 1,
    407		.port1_active = 1,
    408		.port2_active = 1,
    409		.port2_invert_for_secam_lc = 1,
    410	},
    411};
    412
    413/* ------------ TUNER_LG_PAL_I_FM - LGINNOTEK PAL_I ------------ */
    414
    415static struct tuner_params tuner_lg_pal_i_fm_params[] = {
    416	{
    417		.type   = TUNER_PARAM_TYPE_PAL,
    418		.ranges = tuner_lg_pal_ranges,
    419		.count  = ARRAY_SIZE(tuner_lg_pal_ranges),
    420	},
    421};
    422
    423/* ------------ TUNER_LG_PAL_I - LGINNOTEK PAL_I ------------ */
    424
    425static struct tuner_params tuner_lg_pal_i_params[] = {
    426	{
    427		.type   = TUNER_PARAM_TYPE_PAL,
    428		.ranges = tuner_lg_pal_ranges,
    429		.count  = ARRAY_SIZE(tuner_lg_pal_ranges),
    430	},
    431};
    432
    433/* ------------ TUNER_LG_NTSC_FM - LGINNOTEK NTSC ------------ */
    434
    435static struct tuner_range tuner_lg_ntsc_fm_ranges[] = {
    436	{ 16 * 210.00 /*MHz*/, 0x8e, 0xa0, },
    437	{ 16 * 497.00 /*MHz*/, 0x8e, 0x90, },
    438	{ 16 * 999.99        , 0x8e, 0x30, },
    439};
    440
    441static struct tuner_params tuner_lg_ntsc_fm_params[] = {
    442	{
    443		.type   = TUNER_PARAM_TYPE_NTSC,
    444		.ranges = tuner_lg_ntsc_fm_ranges,
    445		.count  = ARRAY_SIZE(tuner_lg_ntsc_fm_ranges),
    446	},
    447};
    448
    449/* ------------ TUNER_LG_PAL_FM - LGINNOTEK PAL ------------ */
    450
    451static struct tuner_params tuner_lg_pal_fm_params[] = {
    452	{
    453		.type   = TUNER_PARAM_TYPE_PAL,
    454		.ranges = tuner_lg_pal_ranges,
    455		.count  = ARRAY_SIZE(tuner_lg_pal_ranges),
    456	},
    457};
    458
    459/* ------------ TUNER_LG_PAL - LGINNOTEK PAL ------------ */
    460
    461static struct tuner_params tuner_lg_pal_params[] = {
    462	{
    463		.type   = TUNER_PARAM_TYPE_PAL,
    464		.ranges = tuner_lg_pal_ranges,
    465		.count  = ARRAY_SIZE(tuner_lg_pal_ranges),
    466	},
    467};
    468
    469/* 30-39 */
    470/* ------------ TUNER_TEMIC_4009FN5_MULTI_PAL_FM - TEMIC PAL ------------ */
    471
    472static struct tuner_params tuner_temic_4009_fn5_multi_pal_fm_params[] = {
    473	{
    474		.type   = TUNER_PARAM_TYPE_PAL,
    475		.ranges = tuner_temic_4009f_5_pal_ranges,
    476		.count  = ARRAY_SIZE(tuner_temic_4009f_5_pal_ranges),
    477	},
    478};
    479
    480/* ------------ TUNER_SHARP_2U5JF5540_NTSC - SHARP NTSC ------------ */
    481
    482static struct tuner_range tuner_sharp_2u5jf5540_ntsc_ranges[] = {
    483	{ 16 * 137.25 /*MHz*/, 0x8e, 0x01, },
    484	{ 16 * 317.25 /*MHz*/, 0x8e, 0x02, },
    485	{ 16 * 999.99        , 0x8e, 0x08, },
    486};
    487
    488static struct tuner_params tuner_sharp_2u5jf5540_params[] = {
    489	{
    490		.type   = TUNER_PARAM_TYPE_NTSC,
    491		.ranges = tuner_sharp_2u5jf5540_ntsc_ranges,
    492		.count  = ARRAY_SIZE(tuner_sharp_2u5jf5540_ntsc_ranges),
    493	},
    494};
    495
    496/* ------------ TUNER_Samsung_PAL_TCPM9091PD27 - Samsung PAL ------------ */
    497
    498static struct tuner_range tuner_samsung_pal_tcpm9091pd27_ranges[] = {
    499	{ 16 * 169 /*MHz*/, 0x8e, 0xa0, },
    500	{ 16 * 464 /*MHz*/, 0x8e, 0x90, },
    501	{ 16 * 999.99     , 0x8e, 0x30, },
    502};
    503
    504static struct tuner_params tuner_samsung_pal_tcpm9091pd27_params[] = {
    505	{
    506		.type   = TUNER_PARAM_TYPE_PAL,
    507		.ranges = tuner_samsung_pal_tcpm9091pd27_ranges,
    508		.count  = ARRAY_SIZE(tuner_samsung_pal_tcpm9091pd27_ranges),
    509	},
    510};
    511
    512/* ------------ TUNER_TEMIC_4106FH5 - TEMIC PAL ------------ */
    513
    514static struct tuner_params tuner_temic_4106fh5_params[] = {
    515	{
    516		.type   = TUNER_PARAM_TYPE_PAL,
    517		.ranges = tuner_temic_4009f_5_pal_ranges,
    518		.count  = ARRAY_SIZE(tuner_temic_4009f_5_pal_ranges),
    519	},
    520};
    521
    522/* ------------ TUNER_TEMIC_4012FY5 - TEMIC PAL ------------ */
    523
    524static struct tuner_params tuner_temic_4012fy5_params[] = {
    525	{
    526		.type   = TUNER_PARAM_TYPE_PAL,
    527		.ranges = tuner_temic_pal_ranges,
    528		.count  = ARRAY_SIZE(tuner_temic_pal_ranges),
    529	},
    530};
    531
    532/* ------------ TUNER_TEMIC_4136FY5 - TEMIC NTSC ------------ */
    533
    534static struct tuner_params tuner_temic_4136_fy5_params[] = {
    535	{
    536		.type   = TUNER_PARAM_TYPE_NTSC,
    537		.ranges = tuner_temic_4x3x_f_5_ntsc_ranges,
    538		.count  = ARRAY_SIZE(tuner_temic_4x3x_f_5_ntsc_ranges),
    539	},
    540};
    541
    542/* ------------ TUNER_LG_PAL_NEW_TAPC - LGINNOTEK PAL ------------ */
    543
    544static struct tuner_range tuner_lg_new_tapc_ranges[] = {
    545	{ 16 * 170.00 /*MHz*/, 0x8e, 0x01, },
    546	{ 16 * 450.00 /*MHz*/, 0x8e, 0x02, },
    547	{ 16 * 999.99        , 0x8e, 0x08, },
    548};
    549
    550static struct tuner_params tuner_lg_pal_new_tapc_params[] = {
    551	{
    552		.type   = TUNER_PARAM_TYPE_PAL,
    553		.ranges = tuner_lg_new_tapc_ranges,
    554		.count  = ARRAY_SIZE(tuner_lg_new_tapc_ranges),
    555	},
    556};
    557
    558/* ------------ TUNER_PHILIPS_FM1216ME_MK3 - Philips PAL ------------ */
    559
    560static struct tuner_range tuner_fm1216me_mk3_pal_ranges[] = {
    561	{ 16 * 158.00 /*MHz*/, 0x8e, 0x01, },
    562	{ 16 * 442.00 /*MHz*/, 0x8e, 0x02, },
    563	{ 16 * 999.99        , 0x8e, 0x04, },
    564};
    565
    566static struct tuner_params tuner_fm1216me_mk3_params[] = {
    567	{
    568		.type   = TUNER_PARAM_TYPE_PAL,
    569		.ranges = tuner_fm1216me_mk3_pal_ranges,
    570		.count  = ARRAY_SIZE(tuner_fm1216me_mk3_pal_ranges),
    571		.cb_first_if_lower_freq = 1,
    572		.has_tda9887 = 1,
    573		.port1_active = 1,
    574		.port2_active = 1,
    575		.port2_invert_for_secam_lc = 1,
    576		.port1_fm_high_sensitivity = 1,
    577		.default_top_mid = -2,
    578		.default_top_secam_mid = -2,
    579		.default_top_secam_high = -2,
    580	},
    581};
    582
    583/* ------------ TUNER_PHILIPS_FM1216MK5 - Philips PAL ------------ */
    584
    585static struct tuner_range tuner_fm1216mk5_pal_ranges[] = {
    586	{ 16 * 158.00 /*MHz*/, 0xce, 0x01, },
    587	{ 16 * 441.00 /*MHz*/, 0xce, 0x02, },
    588	{ 16 * 864.00        , 0xce, 0x04, },
    589};
    590
    591static struct tuner_params tuner_fm1216mk5_params[] = {
    592	{
    593		.type   = TUNER_PARAM_TYPE_PAL,
    594		.ranges = tuner_fm1216mk5_pal_ranges,
    595		.count  = ARRAY_SIZE(tuner_fm1216mk5_pal_ranges),
    596		.cb_first_if_lower_freq = 1,
    597		.has_tda9887 = 1,
    598		.port1_active = 1,
    599		.port2_active = 1,
    600		.port2_invert_for_secam_lc = 1,
    601		.port1_fm_high_sensitivity = 1,
    602		.default_top_mid = -2,
    603		.default_top_secam_mid = -2,
    604		.default_top_secam_high = -2,
    605	},
    606};
    607
    608/* ------------ TUNER_LG_NTSC_NEW_TAPC - LGINNOTEK NTSC ------------ */
    609
    610static struct tuner_params tuner_lg_ntsc_new_tapc_params[] = {
    611	{
    612		.type   = TUNER_PARAM_TYPE_NTSC,
    613		.ranges = tuner_lg_new_tapc_ranges,
    614		.count  = ARRAY_SIZE(tuner_lg_new_tapc_ranges),
    615	},
    616};
    617
    618/* 40-49 */
    619/* ------------ TUNER_HITACHI_NTSC - HITACHI NTSC ------------ */
    620
    621static struct tuner_params tuner_hitachi_ntsc_params[] = {
    622	{
    623		.type   = TUNER_PARAM_TYPE_NTSC,
    624		.ranges = tuner_lg_new_tapc_ranges,
    625		.count  = ARRAY_SIZE(tuner_lg_new_tapc_ranges),
    626	},
    627};
    628
    629/* ------------ TUNER_PHILIPS_PAL_MK - Philips PAL ------------ */
    630
    631static struct tuner_range tuner_philips_pal_mk_pal_ranges[] = {
    632	{ 16 * 140.25 /*MHz*/, 0x8e, 0x01, },
    633	{ 16 * 463.25 /*MHz*/, 0x8e, 0xc2, },
    634	{ 16 * 999.99        , 0x8e, 0xcf, },
    635};
    636
    637static struct tuner_params tuner_philips_pal_mk_params[] = {
    638	{
    639		.type   = TUNER_PARAM_TYPE_PAL,
    640		.ranges = tuner_philips_pal_mk_pal_ranges,
    641		.count  = ARRAY_SIZE(tuner_philips_pal_mk_pal_ranges),
    642	},
    643};
    644
    645/* ---- TUNER_PHILIPS_FCV1236D - Philips FCV1236D (ATSC/NTSC) ---- */
    646
    647static struct tuner_range tuner_philips_fcv1236d_ntsc_ranges[] = {
    648	{ 16 * 157.25 /*MHz*/, 0x8e, 0xa2, },
    649	{ 16 * 451.25 /*MHz*/, 0x8e, 0x92, },
    650	{ 16 * 999.99        , 0x8e, 0x32, },
    651};
    652
    653static struct tuner_range tuner_philips_fcv1236d_atsc_ranges[] = {
    654	{ 16 * 159.00 /*MHz*/, 0x8e, 0xa0, },
    655	{ 16 * 453.00 /*MHz*/, 0x8e, 0x90, },
    656	{ 16 * 999.99        , 0x8e, 0x30, },
    657};
    658
    659static struct tuner_params tuner_philips_fcv1236d_params[] = {
    660	{
    661		.type   = TUNER_PARAM_TYPE_NTSC,
    662		.ranges = tuner_philips_fcv1236d_ntsc_ranges,
    663		.count  = ARRAY_SIZE(tuner_philips_fcv1236d_ntsc_ranges),
    664	},
    665	{
    666		.type   = TUNER_PARAM_TYPE_DIGITAL,
    667		.ranges = tuner_philips_fcv1236d_atsc_ranges,
    668		.count  = ARRAY_SIZE(tuner_philips_fcv1236d_atsc_ranges),
    669		.iffreq = 16 * 44.00,
    670	},
    671};
    672
    673/* ------------ TUNER_PHILIPS_FM1236_MK3 - Philips NTSC ------------ */
    674
    675static struct tuner_range tuner_fm1236_mk3_ntsc_ranges[] = {
    676	{ 16 * 160.00 /*MHz*/, 0x8e, 0x01, },
    677	{ 16 * 442.00 /*MHz*/, 0x8e, 0x02, },
    678	{ 16 * 999.99        , 0x8e, 0x04, },
    679};
    680
    681static struct tuner_params tuner_fm1236_mk3_params[] = {
    682	{
    683		.type   = TUNER_PARAM_TYPE_NTSC,
    684		.ranges = tuner_fm1236_mk3_ntsc_ranges,
    685		.count  = ARRAY_SIZE(tuner_fm1236_mk3_ntsc_ranges),
    686		.cb_first_if_lower_freq = 1,
    687		.has_tda9887 = 1,
    688		.port1_active = 1,
    689		.port2_active = 1,
    690		.port1_fm_high_sensitivity = 1,
    691	},
    692};
    693
    694/* ------------ TUNER_PHILIPS_4IN1 - Philips NTSC ------------ */
    695
    696static struct tuner_params tuner_philips_4in1_params[] = {
    697	{
    698		.type   = TUNER_PARAM_TYPE_NTSC,
    699		.ranges = tuner_fm1236_mk3_ntsc_ranges,
    700		.count  = ARRAY_SIZE(tuner_fm1236_mk3_ntsc_ranges),
    701	},
    702};
    703
    704/* ------------ TUNER_MICROTUNE_4049FM5 - Microtune PAL ------------ */
    705
    706static struct tuner_params tuner_microtune_4049_fm5_params[] = {
    707	{
    708		.type   = TUNER_PARAM_TYPE_PAL,
    709		.ranges = tuner_temic_4009f_5_pal_ranges,
    710		.count  = ARRAY_SIZE(tuner_temic_4009f_5_pal_ranges),
    711		.has_tda9887 = 1,
    712		.port1_invert_for_secam_lc = 1,
    713		.default_pll_gating_18 = 1,
    714		.fm_gain_normal=1,
    715		.radio_if = 1, /* 33.3 MHz */
    716	},
    717};
    718
    719/* ------------ TUNER_PANASONIC_VP27 - Panasonic NTSC ------------ */
    720
    721static struct tuner_range tuner_panasonic_vp27_ntsc_ranges[] = {
    722	{ 16 * 160.00 /*MHz*/, 0xce, 0x01, },
    723	{ 16 * 454.00 /*MHz*/, 0xce, 0x02, },
    724	{ 16 * 999.99        , 0xce, 0x08, },
    725};
    726
    727static struct tuner_params tuner_panasonic_vp27_params[] = {
    728	{
    729		.type   = TUNER_PARAM_TYPE_NTSC,
    730		.ranges = tuner_panasonic_vp27_ntsc_ranges,
    731		.count  = ARRAY_SIZE(tuner_panasonic_vp27_ntsc_ranges),
    732		.has_tda9887 = 1,
    733		.intercarrier_mode = 1,
    734		.default_top_low = -3,
    735		.default_top_mid = -3,
    736		.default_top_high = -3,
    737	},
    738};
    739
    740/* ------------ TUNER_TNF_8831BGFF - Philips PAL ------------ */
    741
    742static struct tuner_range tuner_tnf_8831bgff_pal_ranges[] = {
    743	{ 16 * 161.25 /*MHz*/, 0x8e, 0xa0, },
    744	{ 16 * 463.25 /*MHz*/, 0x8e, 0x90, },
    745	{ 16 * 999.99        , 0x8e, 0x30, },
    746};
    747
    748static struct tuner_params tuner_tnf_8831bgff_params[] = {
    749	{
    750		.type   = TUNER_PARAM_TYPE_PAL,
    751		.ranges = tuner_tnf_8831bgff_pal_ranges,
    752		.count  = ARRAY_SIZE(tuner_tnf_8831bgff_pal_ranges),
    753	},
    754};
    755
    756/* ------------ TUNER_MICROTUNE_4042FI5 - Microtune NTSC ------------ */
    757
    758static struct tuner_range tuner_microtune_4042fi5_ntsc_ranges[] = {
    759	{ 16 * 162.00 /*MHz*/, 0x8e, 0xa2, },
    760	{ 16 * 457.00 /*MHz*/, 0x8e, 0x94, },
    761	{ 16 * 999.99        , 0x8e, 0x31, },
    762};
    763
    764static struct tuner_range tuner_microtune_4042fi5_atsc_ranges[] = {
    765	{ 16 * 162.00 /*MHz*/, 0x8e, 0xa1, },
    766	{ 16 * 457.00 /*MHz*/, 0x8e, 0x91, },
    767	{ 16 * 999.99        , 0x8e, 0x31, },
    768};
    769
    770static struct tuner_params tuner_microtune_4042fi5_params[] = {
    771	{
    772		.type   = TUNER_PARAM_TYPE_NTSC,
    773		.ranges = tuner_microtune_4042fi5_ntsc_ranges,
    774		.count  = ARRAY_SIZE(tuner_microtune_4042fi5_ntsc_ranges),
    775	},
    776	{
    777		.type   = TUNER_PARAM_TYPE_DIGITAL,
    778		.ranges = tuner_microtune_4042fi5_atsc_ranges,
    779		.count  = ARRAY_SIZE(tuner_microtune_4042fi5_atsc_ranges),
    780		.iffreq = 16 * 44.00 /*MHz*/,
    781	},
    782};
    783
    784/* 50-59 */
    785/* ------------ TUNER_TCL_2002N - TCL NTSC ------------ */
    786
    787static struct tuner_range tuner_tcl_2002n_ntsc_ranges[] = {
    788	{ 16 * 172.00 /*MHz*/, 0x8e, 0x01, },
    789	{ 16 * 448.00 /*MHz*/, 0x8e, 0x02, },
    790	{ 16 * 999.99        , 0x8e, 0x08, },
    791};
    792
    793static struct tuner_params tuner_tcl_2002n_params[] = {
    794	{
    795		.type   = TUNER_PARAM_TYPE_NTSC,
    796		.ranges = tuner_tcl_2002n_ntsc_ranges,
    797		.count  = ARRAY_SIZE(tuner_tcl_2002n_ntsc_ranges),
    798		.cb_first_if_lower_freq = 1,
    799	},
    800};
    801
    802/* ------------ TUNER_PHILIPS_FM1256_IH3 - Philips PAL ------------ */
    803
    804static struct tuner_params tuner_philips_fm1256_ih3_params[] = {
    805	{
    806		.type   = TUNER_PARAM_TYPE_PAL,
    807		.ranges = tuner_fm1236_mk3_ntsc_ranges,
    808		.count  = ARRAY_SIZE(tuner_fm1236_mk3_ntsc_ranges),
    809		.radio_if = 1, /* 33.3 MHz */
    810	},
    811};
    812
    813/* ------------ TUNER_THOMSON_DTT7610 - THOMSON ATSC ------------ */
    814
    815/* single range used for both ntsc and atsc */
    816static struct tuner_range tuner_thomson_dtt7610_ntsc_ranges[] = {
    817	{ 16 * 157.25 /*MHz*/, 0x8e, 0x39, },
    818	{ 16 * 454.00 /*MHz*/, 0x8e, 0x3a, },
    819	{ 16 * 999.99        , 0x8e, 0x3c, },
    820};
    821
    822static struct tuner_params tuner_thomson_dtt7610_params[] = {
    823	{
    824		.type   = TUNER_PARAM_TYPE_NTSC,
    825		.ranges = tuner_thomson_dtt7610_ntsc_ranges,
    826		.count  = ARRAY_SIZE(tuner_thomson_dtt7610_ntsc_ranges),
    827	},
    828	{
    829		.type   = TUNER_PARAM_TYPE_DIGITAL,
    830		.ranges = tuner_thomson_dtt7610_ntsc_ranges,
    831		.count  = ARRAY_SIZE(tuner_thomson_dtt7610_ntsc_ranges),
    832		.iffreq = 16 * 44.00 /*MHz*/,
    833	},
    834};
    835
    836/* ------------ TUNER_PHILIPS_FQ1286 - Philips NTSC ------------ */
    837
    838static struct tuner_range tuner_philips_fq1286_ntsc_ranges[] = {
    839	{ 16 * 160.00 /*MHz*/, 0x8e, 0x41, },
    840	{ 16 * 454.00 /*MHz*/, 0x8e, 0x42, },
    841	{ 16 * 999.99        , 0x8e, 0x04, },
    842};
    843
    844static struct tuner_params tuner_philips_fq1286_params[] = {
    845	{
    846		.type   = TUNER_PARAM_TYPE_NTSC,
    847		.ranges = tuner_philips_fq1286_ntsc_ranges,
    848		.count  = ARRAY_SIZE(tuner_philips_fq1286_ntsc_ranges),
    849	},
    850};
    851
    852/* ------------ TUNER_TCL_2002MB - TCL PAL ------------ */
    853
    854static struct tuner_range tuner_tcl_2002mb_pal_ranges[] = {
    855	{ 16 * 170.00 /*MHz*/, 0xce, 0x01, },
    856	{ 16 * 450.00 /*MHz*/, 0xce, 0x02, },
    857	{ 16 * 999.99        , 0xce, 0x08, },
    858};
    859
    860static struct tuner_params tuner_tcl_2002mb_params[] = {
    861	{
    862		.type   = TUNER_PARAM_TYPE_PAL,
    863		.ranges = tuner_tcl_2002mb_pal_ranges,
    864		.count  = ARRAY_SIZE(tuner_tcl_2002mb_pal_ranges),
    865	},
    866};
    867
    868/* ------------ TUNER_PHILIPS_FQ1216AME_MK4 - Philips PAL ------------ */
    869
    870static struct tuner_range tuner_philips_fq12_6a___mk4_pal_ranges[] = {
    871	{ 16 * 160.00 /*MHz*/, 0xce, 0x01, },
    872	{ 16 * 442.00 /*MHz*/, 0xce, 0x02, },
    873	{ 16 * 999.99        , 0xce, 0x04, },
    874};
    875
    876static struct tuner_params tuner_philips_fq1216ame_mk4_params[] = {
    877	{
    878		.type   = TUNER_PARAM_TYPE_PAL,
    879		.ranges = tuner_philips_fq12_6a___mk4_pal_ranges,
    880		.count  = ARRAY_SIZE(tuner_philips_fq12_6a___mk4_pal_ranges),
    881		.has_tda9887 = 1,
    882		.port1_active = 1,
    883		.port2_invert_for_secam_lc = 1,
    884		.default_top_mid = -2,
    885		.default_top_secam_low = -2,
    886		.default_top_secam_mid = -2,
    887		.default_top_secam_high = -2,
    888	},
    889};
    890
    891/* ------------ TUNER_PHILIPS_FQ1236A_MK4 - Philips NTSC ------------ */
    892
    893static struct tuner_params tuner_philips_fq1236a_mk4_params[] = {
    894	{
    895		.type   = TUNER_PARAM_TYPE_NTSC,
    896		.ranges = tuner_fm1236_mk3_ntsc_ranges,
    897		.count  = ARRAY_SIZE(tuner_fm1236_mk3_ntsc_ranges),
    898	},
    899};
    900
    901/* ------------ TUNER_YMEC_TVF_8531MF - Philips NTSC ------------ */
    902
    903static struct tuner_params tuner_ymec_tvf_8531mf_params[] = {
    904	{
    905		.type   = TUNER_PARAM_TYPE_NTSC,
    906		.ranges = tuner_philips_ntsc_m_ranges,
    907		.count  = ARRAY_SIZE(tuner_philips_ntsc_m_ranges),
    908	},
    909};
    910
    911/* ------------ TUNER_YMEC_TVF_5533MF - Philips NTSC ------------ */
    912
    913static struct tuner_range tuner_ymec_tvf_5533mf_ntsc_ranges[] = {
    914	{ 16 * 160.00 /*MHz*/, 0x8e, 0x01, },
    915	{ 16 * 454.00 /*MHz*/, 0x8e, 0x02, },
    916	{ 16 * 999.99        , 0x8e, 0x04, },
    917};
    918
    919static struct tuner_params tuner_ymec_tvf_5533mf_params[] = {
    920	{
    921		.type   = TUNER_PARAM_TYPE_NTSC,
    922		.ranges = tuner_ymec_tvf_5533mf_ntsc_ranges,
    923		.count  = ARRAY_SIZE(tuner_ymec_tvf_5533mf_ntsc_ranges),
    924	},
    925};
    926
    927/* 60-69 */
    928/* ------------ TUNER_THOMSON_DTT761X - THOMSON ATSC ------------ */
    929/* DTT 7611 7611A 7612 7613 7613A 7614 7615 7615A */
    930
    931static struct tuner_range tuner_thomson_dtt761x_ntsc_ranges[] = {
    932	{ 16 * 145.25 /*MHz*/, 0x8e, 0x39, },
    933	{ 16 * 415.25 /*MHz*/, 0x8e, 0x3a, },
    934	{ 16 * 999.99        , 0x8e, 0x3c, },
    935};
    936
    937static struct tuner_range tuner_thomson_dtt761x_atsc_ranges[] = {
    938	{ 16 * 147.00 /*MHz*/, 0x8e, 0x39, },
    939	{ 16 * 417.00 /*MHz*/, 0x8e, 0x3a, },
    940	{ 16 * 999.99        , 0x8e, 0x3c, },
    941};
    942
    943static struct tuner_params tuner_thomson_dtt761x_params[] = {
    944	{
    945		.type   = TUNER_PARAM_TYPE_NTSC,
    946		.ranges = tuner_thomson_dtt761x_ntsc_ranges,
    947		.count  = ARRAY_SIZE(tuner_thomson_dtt761x_ntsc_ranges),
    948		.has_tda9887 = 1,
    949		.fm_gain_normal = 1,
    950		.radio_if = 2, /* 41.3 MHz */
    951	},
    952	{
    953		.type   = TUNER_PARAM_TYPE_DIGITAL,
    954		.ranges = tuner_thomson_dtt761x_atsc_ranges,
    955		.count  = ARRAY_SIZE(tuner_thomson_dtt761x_atsc_ranges),
    956		.iffreq = 16 * 44.00, /*MHz*/
    957	},
    958};
    959
    960/* ------------ TUNER_TENA_9533_DI - Philips PAL ------------ */
    961
    962static struct tuner_range tuner_tena_9533_di_pal_ranges[] = {
    963	{ 16 * 160.25 /*MHz*/, 0x8e, 0x01, },
    964	{ 16 * 464.25 /*MHz*/, 0x8e, 0x02, },
    965	{ 16 * 999.99        , 0x8e, 0x04, },
    966};
    967
    968static struct tuner_params tuner_tena_9533_di_params[] = {
    969	{
    970		.type   = TUNER_PARAM_TYPE_PAL,
    971		.ranges = tuner_tena_9533_di_pal_ranges,
    972		.count  = ARRAY_SIZE(tuner_tena_9533_di_pal_ranges),
    973	},
    974};
    975
    976/* ------------ TUNER_TENA_TNF_5337 - Tena tnf5337MFD STD M/N ------------ */
    977
    978static struct tuner_range tuner_tena_tnf_5337_ntsc_ranges[] = {
    979	{ 16 * 166.25 /*MHz*/, 0x86, 0x01, },
    980	{ 16 * 466.25 /*MHz*/, 0x86, 0x02, },
    981	{ 16 * 999.99        , 0x86, 0x08, },
    982};
    983
    984static struct tuner_params tuner_tena_tnf_5337_params[] = {
    985	{
    986		.type   = TUNER_PARAM_TYPE_NTSC,
    987		.ranges = tuner_tena_tnf_5337_ntsc_ranges,
    988		.count  = ARRAY_SIZE(tuner_tena_tnf_5337_ntsc_ranges),
    989	},
    990};
    991
    992/* ------------ TUNER_PHILIPS_FMD1216ME(X)_MK3 - Philips PAL ------------ */
    993
    994static struct tuner_range tuner_philips_fmd1216me_mk3_pal_ranges[] = {
    995	{ 16 * 160.00 /*MHz*/, 0x86, 0x51, },
    996	{ 16 * 442.00 /*MHz*/, 0x86, 0x52, },
    997	{ 16 * 999.99        , 0x86, 0x54, },
    998};
    999
   1000static struct tuner_range tuner_philips_fmd1216me_mk3_dvb_ranges[] = {
   1001	{ 16 * 143.87 /*MHz*/, 0xbc, 0x41 },
   1002	{ 16 * 158.87 /*MHz*/, 0xf4, 0x41 },
   1003	{ 16 * 329.87 /*MHz*/, 0xbc, 0x42 },
   1004	{ 16 * 441.87 /*MHz*/, 0xf4, 0x42 },
   1005	{ 16 * 625.87 /*MHz*/, 0xbc, 0x44 },
   1006	{ 16 * 803.87 /*MHz*/, 0xf4, 0x44 },
   1007	{ 16 * 999.99        , 0xfc, 0x44 },
   1008};
   1009
   1010static struct tuner_params tuner_philips_fmd1216me_mk3_params[] = {
   1011	{
   1012		.type   = TUNER_PARAM_TYPE_PAL,
   1013		.ranges = tuner_philips_fmd1216me_mk3_pal_ranges,
   1014		.count  = ARRAY_SIZE(tuner_philips_fmd1216me_mk3_pal_ranges),
   1015		.has_tda9887 = 1,
   1016		.port1_active = 1,
   1017		.port2_active = 1,
   1018		.port2_fm_high_sensitivity = 1,
   1019		.port2_invert_for_secam_lc = 1,
   1020		.port1_set_for_fm_mono = 1,
   1021	},
   1022	{
   1023		.type   = TUNER_PARAM_TYPE_DIGITAL,
   1024		.ranges = tuner_philips_fmd1216me_mk3_dvb_ranges,
   1025		.count  = ARRAY_SIZE(tuner_philips_fmd1216me_mk3_dvb_ranges),
   1026		.iffreq = 16 * 36.125, /*MHz*/
   1027	},
   1028};
   1029
   1030static struct tuner_params tuner_philips_fmd1216mex_mk3_params[] = {
   1031	{
   1032		.type   = TUNER_PARAM_TYPE_PAL,
   1033		.ranges = tuner_philips_fmd1216me_mk3_pal_ranges,
   1034		.count  = ARRAY_SIZE(tuner_philips_fmd1216me_mk3_pal_ranges),
   1035		.has_tda9887 = 1,
   1036		.port1_active = 1,
   1037		.port2_active = 1,
   1038		.port2_fm_high_sensitivity = 1,
   1039		.port2_invert_for_secam_lc = 1,
   1040		.port1_set_for_fm_mono = 1,
   1041		.radio_if = 1,
   1042		.fm_gain_normal = 1,
   1043	},
   1044	{
   1045		.type   = TUNER_PARAM_TYPE_DIGITAL,
   1046		.ranges = tuner_philips_fmd1216me_mk3_dvb_ranges,
   1047		.count  = ARRAY_SIZE(tuner_philips_fmd1216me_mk3_dvb_ranges),
   1048		.iffreq = 16 * 36.125, /*MHz*/
   1049	},
   1050};
   1051
   1052/* ------ TUNER_LG_TDVS_H06XF - LG INNOTEK / INFINEON ATSC ----- */
   1053
   1054static struct tuner_range tuner_tua6034_ntsc_ranges[] = {
   1055	{ 16 * 165.00 /*MHz*/, 0x8e, 0x01 },
   1056	{ 16 * 450.00 /*MHz*/, 0x8e, 0x02 },
   1057	{ 16 * 999.99        , 0x8e, 0x04 },
   1058};
   1059
   1060static struct tuner_range tuner_tua6034_atsc_ranges[] = {
   1061	{ 16 * 165.00 /*MHz*/, 0xce, 0x01 },
   1062	{ 16 * 450.00 /*MHz*/, 0xce, 0x02 },
   1063	{ 16 * 999.99        , 0xce, 0x04 },
   1064};
   1065
   1066static struct tuner_params tuner_lg_tdvs_h06xf_params[] = {
   1067	{
   1068		.type   = TUNER_PARAM_TYPE_NTSC,
   1069		.ranges = tuner_tua6034_ntsc_ranges,
   1070		.count  = ARRAY_SIZE(tuner_tua6034_ntsc_ranges),
   1071	},
   1072	{
   1073		.type   = TUNER_PARAM_TYPE_DIGITAL,
   1074		.ranges = tuner_tua6034_atsc_ranges,
   1075		.count  = ARRAY_SIZE(tuner_tua6034_atsc_ranges),
   1076		.iffreq = 16 * 44.00,
   1077	},
   1078};
   1079
   1080/* ------------ TUNER_YMEC_TVF66T5_B_DFF - Philips PAL ------------ */
   1081
   1082static struct tuner_range tuner_ymec_tvf66t5_b_dff_pal_ranges[] = {
   1083	{ 16 * 160.25 /*MHz*/, 0x8e, 0x01, },
   1084	{ 16 * 464.25 /*MHz*/, 0x8e, 0x02, },
   1085	{ 16 * 999.99        , 0x8e, 0x08, },
   1086};
   1087
   1088static struct tuner_params tuner_ymec_tvf66t5_b_dff_params[] = {
   1089	{
   1090		.type   = TUNER_PARAM_TYPE_PAL,
   1091		.ranges = tuner_ymec_tvf66t5_b_dff_pal_ranges,
   1092		.count  = ARRAY_SIZE(tuner_ymec_tvf66t5_b_dff_pal_ranges),
   1093	},
   1094};
   1095
   1096/* ------------ TUNER_LG_NTSC_TALN_MINI - LGINNOTEK NTSC ------------ */
   1097
   1098static struct tuner_range tuner_lg_taln_ntsc_ranges[] = {
   1099	{ 16 * 137.25 /*MHz*/, 0x8e, 0x01, },
   1100	{ 16 * 373.25 /*MHz*/, 0x8e, 0x02, },
   1101	{ 16 * 999.99        , 0x8e, 0x08, },
   1102};
   1103
   1104static struct tuner_range tuner_lg_taln_pal_secam_ranges[] = {
   1105	{ 16 * 150.00 /*MHz*/, 0x8e, 0x01, },
   1106	{ 16 * 425.00 /*MHz*/, 0x8e, 0x02, },
   1107	{ 16 * 999.99        , 0x8e, 0x08, },
   1108};
   1109
   1110static struct tuner_params tuner_lg_taln_params[] = {
   1111	{
   1112		.type   = TUNER_PARAM_TYPE_NTSC,
   1113		.ranges = tuner_lg_taln_ntsc_ranges,
   1114		.count  = ARRAY_SIZE(tuner_lg_taln_ntsc_ranges),
   1115	},{
   1116		.type   = TUNER_PARAM_TYPE_PAL,
   1117		.ranges = tuner_lg_taln_pal_secam_ranges,
   1118		.count  = ARRAY_SIZE(tuner_lg_taln_pal_secam_ranges),
   1119	},
   1120};
   1121
   1122/* ------------ TUNER_PHILIPS_TD1316 - Philips PAL ------------ */
   1123
   1124static struct tuner_range tuner_philips_td1316_pal_ranges[] = {
   1125	{ 16 * 160.00 /*MHz*/, 0xc8, 0xa1, },
   1126	{ 16 * 442.00 /*MHz*/, 0xc8, 0xa2, },
   1127	{ 16 * 999.99        , 0xc8, 0xa4, },
   1128};
   1129
   1130static struct tuner_range tuner_philips_td1316_dvb_ranges[] = {
   1131	{ 16 *  93.834 /*MHz*/, 0xca, 0x60, },
   1132	{ 16 * 123.834 /*MHz*/, 0xca, 0xa0, },
   1133	{ 16 * 163.834 /*MHz*/, 0xca, 0xc0, },
   1134	{ 16 * 253.834 /*MHz*/, 0xca, 0x60, },
   1135	{ 16 * 383.834 /*MHz*/, 0xca, 0xa0, },
   1136	{ 16 * 443.834 /*MHz*/, 0xca, 0xc0, },
   1137	{ 16 * 583.834 /*MHz*/, 0xca, 0x60, },
   1138	{ 16 * 793.834 /*MHz*/, 0xca, 0xa0, },
   1139	{ 16 * 999.999        , 0xca, 0xe0, },
   1140};
   1141
   1142static struct tuner_params tuner_philips_td1316_params[] = {
   1143	{
   1144		.type   = TUNER_PARAM_TYPE_PAL,
   1145		.ranges = tuner_philips_td1316_pal_ranges,
   1146		.count  = ARRAY_SIZE(tuner_philips_td1316_pal_ranges),
   1147	},
   1148	{
   1149		.type   = TUNER_PARAM_TYPE_DIGITAL,
   1150		.ranges = tuner_philips_td1316_dvb_ranges,
   1151		.count  = ARRAY_SIZE(tuner_philips_td1316_dvb_ranges),
   1152		.iffreq = 16 * 36.166667 /*MHz*/,
   1153	},
   1154};
   1155
   1156/* ------------ TUNER_PHILIPS_TUV1236D - Philips ATSC ------------ */
   1157
   1158static struct tuner_range tuner_tuv1236d_ntsc_ranges[] = {
   1159	{ 16 * 157.25 /*MHz*/, 0xce, 0x01, },
   1160	{ 16 * 454.00 /*MHz*/, 0xce, 0x02, },
   1161	{ 16 * 999.99        , 0xce, 0x04, },
   1162};
   1163
   1164static struct tuner_range tuner_tuv1236d_atsc_ranges[] = {
   1165	{ 16 * 157.25 /*MHz*/, 0xc6, 0x41, },
   1166	{ 16 * 454.00 /*MHz*/, 0xc6, 0x42, },
   1167	{ 16 * 999.99        , 0xc6, 0x44, },
   1168};
   1169
   1170static struct tuner_params tuner_tuv1236d_params[] = {
   1171	{
   1172		.type   = TUNER_PARAM_TYPE_NTSC,
   1173		.ranges = tuner_tuv1236d_ntsc_ranges,
   1174		.count  = ARRAY_SIZE(tuner_tuv1236d_ntsc_ranges),
   1175	},
   1176	{
   1177		.type   = TUNER_PARAM_TYPE_DIGITAL,
   1178		.ranges = tuner_tuv1236d_atsc_ranges,
   1179		.count  = ARRAY_SIZE(tuner_tuv1236d_atsc_ranges),
   1180		.iffreq = 16 * 44.00,
   1181	},
   1182};
   1183
   1184/* ------------ TUNER_TNF_xxx5  - Texas Instruments--------- */
   1185/* This is known to work with Tenna TVF58t5-MFF and TVF5835 MFF
   1186 *	but it is expected to work also with other Tenna/Ymec
   1187 *	models based on TI SN 761677 chip on both PAL and NTSC
   1188 */
   1189
   1190static struct tuner_range tuner_tnf_5335_d_if_pal_ranges[] = {
   1191	{ 16 * 168.25 /*MHz*/, 0x8e, 0x01, },
   1192	{ 16 * 471.25 /*MHz*/, 0x8e, 0x02, },
   1193	{ 16 * 999.99        , 0x8e, 0x08, },
   1194};
   1195
   1196static struct tuner_range tuner_tnf_5335mf_ntsc_ranges[] = {
   1197	{ 16 * 169.25 /*MHz*/, 0x8e, 0x01, },
   1198	{ 16 * 469.25 /*MHz*/, 0x8e, 0x02, },
   1199	{ 16 * 999.99        , 0x8e, 0x08, },
   1200};
   1201
   1202static struct tuner_params tuner_tnf_5335mf_params[] = {
   1203	{
   1204		.type   = TUNER_PARAM_TYPE_NTSC,
   1205		.ranges = tuner_tnf_5335mf_ntsc_ranges,
   1206		.count  = ARRAY_SIZE(tuner_tnf_5335mf_ntsc_ranges),
   1207	},
   1208	{
   1209		.type   = TUNER_PARAM_TYPE_PAL,
   1210		.ranges = tuner_tnf_5335_d_if_pal_ranges,
   1211		.count  = ARRAY_SIZE(tuner_tnf_5335_d_if_pal_ranges),
   1212	},
   1213};
   1214
   1215/* 70-79 */
   1216/* ------------ TUNER_SAMSUNG_TCPN_2121P30A - Samsung NTSC ------------ */
   1217
   1218/* '+ 4' turns on the Low Noise Amplifier */
   1219static struct tuner_range tuner_samsung_tcpn_2121p30a_ntsc_ranges[] = {
   1220	{ 16 * 130.00 /*MHz*/, 0xce, 0x01 + 4, },
   1221	{ 16 * 364.50 /*MHz*/, 0xce, 0x02 + 4, },
   1222	{ 16 * 999.99        , 0xce, 0x08 + 4, },
   1223};
   1224
   1225static struct tuner_params tuner_samsung_tcpn_2121p30a_params[] = {
   1226	{
   1227		.type   = TUNER_PARAM_TYPE_NTSC,
   1228		.ranges = tuner_samsung_tcpn_2121p30a_ntsc_ranges,
   1229		.count  = ARRAY_SIZE(tuner_samsung_tcpn_2121p30a_ntsc_ranges),
   1230	},
   1231};
   1232
   1233/* ------------ TUNER_THOMSON_FE6600 - DViCO Hybrid PAL ------------ */
   1234
   1235static struct tuner_range tuner_thomson_fe6600_pal_ranges[] = {
   1236	{ 16 * 160.00 /*MHz*/, 0xfe, 0x11, },
   1237	{ 16 * 442.00 /*MHz*/, 0xf6, 0x12, },
   1238	{ 16 * 999.99        , 0xf6, 0x18, },
   1239};
   1240
   1241static struct tuner_range tuner_thomson_fe6600_dvb_ranges[] = {
   1242	{ 16 * 250.00 /*MHz*/, 0xb4, 0x12, },
   1243	{ 16 * 455.00 /*MHz*/, 0xfe, 0x11, },
   1244	{ 16 * 775.50 /*MHz*/, 0xbc, 0x18, },
   1245	{ 16 * 999.99        , 0xf4, 0x18, },
   1246};
   1247
   1248static struct tuner_params tuner_thomson_fe6600_params[] = {
   1249	{
   1250		.type   = TUNER_PARAM_TYPE_PAL,
   1251		.ranges = tuner_thomson_fe6600_pal_ranges,
   1252		.count  = ARRAY_SIZE(tuner_thomson_fe6600_pal_ranges),
   1253	},
   1254	{
   1255		.type   = TUNER_PARAM_TYPE_DIGITAL,
   1256		.ranges = tuner_thomson_fe6600_dvb_ranges,
   1257		.count  = ARRAY_SIZE(tuner_thomson_fe6600_dvb_ranges),
   1258		.iffreq = 16 * 36.125 /*MHz*/,
   1259	},
   1260};
   1261
   1262/* ------------ TUNER_SAMSUNG_TCPG_6121P30A - Samsung PAL ------------ */
   1263
   1264/* '+ 4' turns on the Low Noise Amplifier */
   1265static struct tuner_range tuner_samsung_tcpg_6121p30a_pal_ranges[] = {
   1266	{ 16 * 146.25 /*MHz*/, 0xce, 0x01 + 4, },
   1267	{ 16 * 428.50 /*MHz*/, 0xce, 0x02 + 4, },
   1268	{ 16 * 999.99        , 0xce, 0x08 + 4, },
   1269};
   1270
   1271static struct tuner_params tuner_samsung_tcpg_6121p30a_params[] = {
   1272	{
   1273		.type   = TUNER_PARAM_TYPE_PAL,
   1274		.ranges = tuner_samsung_tcpg_6121p30a_pal_ranges,
   1275		.count  = ARRAY_SIZE(tuner_samsung_tcpg_6121p30a_pal_ranges),
   1276		.has_tda9887 = 1,
   1277		.port1_active = 1,
   1278		.port2_active = 1,
   1279		.port2_invert_for_secam_lc = 1,
   1280	},
   1281};
   1282
   1283/* ------------ TUNER_TCL_MF02GIP-5N-E - TCL MF02GIP-5N ------------ */
   1284
   1285static struct tuner_range tuner_tcl_mf02gip_5n_ntsc_ranges[] = {
   1286	{ 16 * 172.00 /*MHz*/, 0x8e, 0x01, },
   1287	{ 16 * 448.00 /*MHz*/, 0x8e, 0x02, },
   1288	{ 16 * 999.99        , 0x8e, 0x04, },
   1289};
   1290
   1291static struct tuner_params tuner_tcl_mf02gip_5n_params[] = {
   1292	{
   1293		.type   = TUNER_PARAM_TYPE_NTSC,
   1294		.ranges = tuner_tcl_mf02gip_5n_ntsc_ranges,
   1295		.count  = ARRAY_SIZE(tuner_tcl_mf02gip_5n_ntsc_ranges),
   1296		.cb_first_if_lower_freq = 1,
   1297	},
   1298};
   1299
   1300/* 80-89 */
   1301/* --------- TUNER_PHILIPS_FQ1216LME_MK3 -- active loopthrough, no FM ------- */
   1302
   1303static struct tuner_params tuner_fq1216lme_mk3_params[] = {
   1304	{
   1305		.type   = TUNER_PARAM_TYPE_PAL,
   1306		.ranges = tuner_fm1216me_mk3_pal_ranges,
   1307		.count  = ARRAY_SIZE(tuner_fm1216me_mk3_pal_ranges),
   1308		.cb_first_if_lower_freq = 1, /* not specified, but safe to do */
   1309		.has_tda9887 = 1, /* TDA9886 */
   1310		.port1_active = 1,
   1311		.port2_active = 1,
   1312		.port2_invert_for_secam_lc = 1,
   1313		.default_top_low = 4,
   1314		.default_top_mid = 4,
   1315		.default_top_high = 4,
   1316		.default_top_secam_low = 4,
   1317		.default_top_secam_mid = 4,
   1318		.default_top_secam_high = 4,
   1319	},
   1320};
   1321
   1322/* ----- TUNER_PARTSNIC_PTI_5NF05 - Partsnic (Daewoo) PTI-5NF05 NTSC ----- */
   1323
   1324static struct tuner_range tuner_partsnic_pti_5nf05_ranges[] = {
   1325	/* The datasheet specified channel ranges and the bandswitch byte */
   1326	/* The control byte value of 0x8e is just a guess */
   1327	{ 16 * 133.25 /*MHz*/, 0x8e, 0x01, }, /* Channels    2 -    B */
   1328	{ 16 * 367.25 /*MHz*/, 0x8e, 0x02, }, /* Channels    C - W+11 */
   1329	{ 16 * 999.99        , 0x8e, 0x08, }, /* Channels W+12 -   69 */
   1330};
   1331
   1332static struct tuner_params tuner_partsnic_pti_5nf05_params[] = {
   1333	{
   1334		.type   = TUNER_PARAM_TYPE_NTSC,
   1335		.ranges = tuner_partsnic_pti_5nf05_ranges,
   1336		.count  = ARRAY_SIZE(tuner_partsnic_pti_5nf05_ranges),
   1337		.cb_first_if_lower_freq = 1, /* not specified but safe to do */
   1338	},
   1339};
   1340
   1341/* --------- TUNER_PHILIPS_CU1216L - DVB-C NIM ------------------------- */
   1342
   1343static struct tuner_range tuner_cu1216l_ranges[] = {
   1344	{ 16 * 160.25 /*MHz*/, 0xce, 0x01 },
   1345	{ 16 * 444.25 /*MHz*/, 0xce, 0x02 },
   1346	{ 16 * 999.99        , 0xce, 0x04 },
   1347};
   1348
   1349static struct tuner_params tuner_philips_cu1216l_params[] = {
   1350	{
   1351		.type   = TUNER_PARAM_TYPE_DIGITAL,
   1352		.ranges = tuner_cu1216l_ranges,
   1353		.count  = ARRAY_SIZE(tuner_cu1216l_ranges),
   1354		.iffreq = 16 * 36.125, /*MHz*/
   1355	},
   1356};
   1357
   1358/* ---------------------- TUNER_SONY_BTF_PXN01Z ------------------------ */
   1359
   1360static struct tuner_range tuner_sony_btf_pxn01z_ranges[] = {
   1361	{ 16 * 137.25 /*MHz*/, 0x8e, 0x01, },
   1362	{ 16 * 367.25 /*MHz*/, 0x8e, 0x02, },
   1363	{ 16 * 999.99        , 0x8e, 0x04, },
   1364};
   1365
   1366static struct tuner_params tuner_sony_btf_pxn01z_params[] = {
   1367	{
   1368		.type   = TUNER_PARAM_TYPE_NTSC,
   1369		.ranges = tuner_sony_btf_pxn01z_ranges,
   1370		.count  = ARRAY_SIZE(tuner_sony_btf_pxn01z_ranges),
   1371	},
   1372};
   1373
   1374/* ------------ TUNER_PHILIPS_FQ1236_MK5 - Philips NTSC ------------ */
   1375
   1376static struct tuner_params tuner_philips_fq1236_mk5_params[] = {
   1377	{
   1378		.type   = TUNER_PARAM_TYPE_NTSC,
   1379		.ranges = tuner_fm1236_mk3_ntsc_ranges,
   1380		.count  = ARRAY_SIZE(tuner_fm1236_mk3_ntsc_ranges),
   1381		.has_tda9887 = 1, /* TDA9885, no FM radio */
   1382	},
   1383};
   1384
   1385/* --------- Sony BTF-PG472Z PAL/SECAM ------- */
   1386
   1387static struct tuner_range tuner_sony_btf_pg472z_ranges[] = {
   1388	{ 16 * 144.25 /*MHz*/, 0xc6, 0x01, },
   1389	{ 16 * 427.25 /*MHz*/, 0xc6, 0x02, },
   1390	{ 16 * 999.99        , 0xc6, 0x04, },
   1391};
   1392
   1393static struct tuner_params tuner_sony_btf_pg472z_params[] = {
   1394	{
   1395		.type   = TUNER_PARAM_TYPE_PAL,
   1396		.ranges = tuner_sony_btf_pg472z_ranges,
   1397		.count  = ARRAY_SIZE(tuner_sony_btf_pg472z_ranges),
   1398		.has_tda9887 = 1,
   1399		.port1_active = 1,
   1400		.port2_invert_for_secam_lc = 1,
   1401	},
   1402};
   1403
   1404/* 90-99 */
   1405/* --------- Sony BTF-PG467Z NTSC-M-JP ------- */
   1406
   1407static struct tuner_range tuner_sony_btf_pg467z_ranges[] = {
   1408	{ 16 * 220.25 /*MHz*/, 0xc6, 0x01, },
   1409	{ 16 * 467.25 /*MHz*/, 0xc6, 0x02, },
   1410	{ 16 * 999.99        , 0xc6, 0x04, },
   1411};
   1412
   1413static struct tuner_params tuner_sony_btf_pg467z_params[] = {
   1414	{
   1415		.type   = TUNER_PARAM_TYPE_NTSC,
   1416		.ranges = tuner_sony_btf_pg467z_ranges,
   1417		.count  = ARRAY_SIZE(tuner_sony_btf_pg467z_ranges),
   1418	},
   1419};
   1420
   1421/* --------- Sony BTF-PG463Z NTSC-M ------- */
   1422
   1423static struct tuner_range tuner_sony_btf_pg463z_ranges[] = {
   1424	{ 16 * 130.25 /*MHz*/, 0xc6, 0x01, },
   1425	{ 16 * 364.25 /*MHz*/, 0xc6, 0x02, },
   1426	{ 16 * 999.99        , 0xc6, 0x04, },
   1427};
   1428
   1429static struct tuner_params tuner_sony_btf_pg463z_params[] = {
   1430	{
   1431		.type   = TUNER_PARAM_TYPE_NTSC,
   1432		.ranges = tuner_sony_btf_pg463z_ranges,
   1433		.count  = ARRAY_SIZE(tuner_sony_btf_pg463z_ranges),
   1434	},
   1435};
   1436
   1437/* --------------------------------------------------------------------- */
   1438
   1439struct tunertype tuners[] = {
   1440	/* 0-9 */
   1441	[TUNER_TEMIC_PAL] = { /* TEMIC PAL */
   1442		.name   = "Temic PAL (4002 FH5)",
   1443		.params = tuner_temic_pal_params,
   1444		.count  = ARRAY_SIZE(tuner_temic_pal_params),
   1445	},
   1446	[TUNER_PHILIPS_PAL_I] = { /* Philips PAL_I */
   1447		.name   = "Philips PAL_I (FI1246 and compatibles)",
   1448		.params = tuner_philips_pal_i_params,
   1449		.count  = ARRAY_SIZE(tuner_philips_pal_i_params),
   1450	},
   1451	[TUNER_PHILIPS_NTSC] = { /* Philips NTSC */
   1452		.name   = "Philips NTSC (FI1236,FM1236 and compatibles)",
   1453		.params = tuner_philips_ntsc_params,
   1454		.count  = ARRAY_SIZE(tuner_philips_ntsc_params),
   1455	},
   1456	[TUNER_PHILIPS_SECAM] = { /* Philips SECAM */
   1457		.name   = "Philips (SECAM+PAL_BG) (FI1216MF, FM1216MF, FR1216MF)",
   1458		.params = tuner_philips_secam_params,
   1459		.count  = ARRAY_SIZE(tuner_philips_secam_params),
   1460	},
   1461	[TUNER_ABSENT] = { /* Tuner Absent */
   1462		.name   = "NoTuner",
   1463	},
   1464	[TUNER_PHILIPS_PAL] = { /* Philips PAL */
   1465		.name   = "Philips PAL_BG (FI1216 and compatibles)",
   1466		.params = tuner_philips_pal_params,
   1467		.count  = ARRAY_SIZE(tuner_philips_pal_params),
   1468	},
   1469	[TUNER_TEMIC_NTSC] = { /* TEMIC NTSC */
   1470		.name   = "Temic NTSC (4032 FY5)",
   1471		.params = tuner_temic_ntsc_params,
   1472		.count  = ARRAY_SIZE(tuner_temic_ntsc_params),
   1473	},
   1474	[TUNER_TEMIC_PAL_I] = { /* TEMIC PAL_I */
   1475		.name   = "Temic PAL_I (4062 FY5)",
   1476		.params = tuner_temic_pal_i_params,
   1477		.count  = ARRAY_SIZE(tuner_temic_pal_i_params),
   1478	},
   1479	[TUNER_TEMIC_4036FY5_NTSC] = { /* TEMIC NTSC */
   1480		.name   = "Temic NTSC (4036 FY5)",
   1481		.params = tuner_temic_4036fy5_ntsc_params,
   1482		.count  = ARRAY_SIZE(tuner_temic_4036fy5_ntsc_params),
   1483	},
   1484	[TUNER_ALPS_TSBH1_NTSC] = { /* TEMIC NTSC */
   1485		.name   = "Alps HSBH1",
   1486		.params = tuner_alps_tsbh1_ntsc_params,
   1487		.count  = ARRAY_SIZE(tuner_alps_tsbh1_ntsc_params),
   1488	},
   1489
   1490	/* 10-19 */
   1491	[TUNER_ALPS_TSBE1_PAL] = { /* TEMIC PAL */
   1492		.name   = "Alps TSBE1",
   1493		.params = tuner_alps_tsb_1_params,
   1494		.count  = ARRAY_SIZE(tuner_alps_tsb_1_params),
   1495	},
   1496	[TUNER_ALPS_TSBB5_PAL_I] = { /* Alps PAL_I */
   1497		.name   = "Alps TSBB5",
   1498		.params = tuner_alps_tsbb5_params,
   1499		.count  = ARRAY_SIZE(tuner_alps_tsbb5_params),
   1500	},
   1501	[TUNER_ALPS_TSBE5_PAL] = { /* Alps PAL */
   1502		.name   = "Alps TSBE5",
   1503		.params = tuner_alps_tsbe5_params,
   1504		.count  = ARRAY_SIZE(tuner_alps_tsbe5_params),
   1505	},
   1506	[TUNER_ALPS_TSBC5_PAL] = { /* Alps PAL */
   1507		.name   = "Alps TSBC5",
   1508		.params = tuner_alps_tsbc5_params,
   1509		.count  = ARRAY_SIZE(tuner_alps_tsbc5_params),
   1510	},
   1511	[TUNER_TEMIC_4006FH5_PAL] = { /* TEMIC PAL */
   1512		.name   = "Temic PAL_BG (4006FH5)",
   1513		.params = tuner_temic_4006fh5_params,
   1514		.count  = ARRAY_SIZE(tuner_temic_4006fh5_params),
   1515	},
   1516	[TUNER_ALPS_TSHC6_NTSC] = { /* Alps NTSC */
   1517		.name   = "Alps TSCH6",
   1518		.params = tuner_alps_tshc6_params,
   1519		.count  = ARRAY_SIZE(tuner_alps_tshc6_params),
   1520	},
   1521	[TUNER_TEMIC_PAL_DK] = { /* TEMIC PAL */
   1522		.name   = "Temic PAL_DK (4016 FY5)",
   1523		.params = tuner_temic_pal_dk_params,
   1524		.count  = ARRAY_SIZE(tuner_temic_pal_dk_params),
   1525	},
   1526	[TUNER_PHILIPS_NTSC_M] = { /* Philips NTSC */
   1527		.name   = "Philips NTSC_M (MK2)",
   1528		.params = tuner_philips_ntsc_m_params,
   1529		.count  = ARRAY_SIZE(tuner_philips_ntsc_m_params),
   1530	},
   1531	[TUNER_TEMIC_4066FY5_PAL_I] = { /* TEMIC PAL_I */
   1532		.name   = "Temic PAL_I (4066 FY5)",
   1533		.params = tuner_temic_4066fy5_pal_i_params,
   1534		.count  = ARRAY_SIZE(tuner_temic_4066fy5_pal_i_params),
   1535	},
   1536	[TUNER_TEMIC_4006FN5_MULTI_PAL] = { /* TEMIC PAL */
   1537		.name   = "Temic PAL* auto (4006 FN5)",
   1538		.params = tuner_temic_4006fn5_multi_params,
   1539		.count  = ARRAY_SIZE(tuner_temic_4006fn5_multi_params),
   1540	},
   1541
   1542	/* 20-29 */
   1543	[TUNER_TEMIC_4009FR5_PAL] = { /* TEMIC PAL */
   1544		.name   = "Temic PAL_BG (4009 FR5) or PAL_I (4069 FR5)",
   1545		.params = tuner_temic_4009f_5_params,
   1546		.count  = ARRAY_SIZE(tuner_temic_4009f_5_params),
   1547	},
   1548	[TUNER_TEMIC_4039FR5_NTSC] = { /* TEMIC NTSC */
   1549		.name   = "Temic NTSC (4039 FR5)",
   1550		.params = tuner_temic_4039fr5_params,
   1551		.count  = ARRAY_SIZE(tuner_temic_4039fr5_params),
   1552	},
   1553	[TUNER_TEMIC_4046FM5] = { /* TEMIC PAL */
   1554		.name   = "Temic PAL/SECAM multi (4046 FM5)",
   1555		.params = tuner_temic_4046fm5_params,
   1556		.count  = ARRAY_SIZE(tuner_temic_4046fm5_params),
   1557	},
   1558	[TUNER_PHILIPS_PAL_DK] = { /* Philips PAL */
   1559		.name   = "Philips PAL_DK (FI1256 and compatibles)",
   1560		.params = tuner_philips_pal_dk_params,
   1561		.count  = ARRAY_SIZE(tuner_philips_pal_dk_params),
   1562	},
   1563	[TUNER_PHILIPS_FQ1216ME] = { /* Philips PAL */
   1564		.name   = "Philips PAL/SECAM multi (FQ1216ME)",
   1565		.params = tuner_philips_fq1216me_params,
   1566		.count  = ARRAY_SIZE(tuner_philips_fq1216me_params),
   1567	},
   1568	[TUNER_LG_PAL_I_FM] = { /* LGINNOTEK PAL_I */
   1569		.name   = "LG PAL_I+FM (TAPC-I001D)",
   1570		.params = tuner_lg_pal_i_fm_params,
   1571		.count  = ARRAY_SIZE(tuner_lg_pal_i_fm_params),
   1572	},
   1573	[TUNER_LG_PAL_I] = { /* LGINNOTEK PAL_I */
   1574		.name   = "LG PAL_I (TAPC-I701D)",
   1575		.params = tuner_lg_pal_i_params,
   1576		.count  = ARRAY_SIZE(tuner_lg_pal_i_params),
   1577	},
   1578	[TUNER_LG_NTSC_FM] = { /* LGINNOTEK NTSC */
   1579		.name   = "LG NTSC+FM (TPI8NSR01F)",
   1580		.params = tuner_lg_ntsc_fm_params,
   1581		.count  = ARRAY_SIZE(tuner_lg_ntsc_fm_params),
   1582	},
   1583	[TUNER_LG_PAL_FM] = { /* LGINNOTEK PAL */
   1584		.name   = "LG PAL_BG+FM (TPI8PSB01D)",
   1585		.params = tuner_lg_pal_fm_params,
   1586		.count  = ARRAY_SIZE(tuner_lg_pal_fm_params),
   1587	},
   1588	[TUNER_LG_PAL] = { /* LGINNOTEK PAL */
   1589		.name   = "LG PAL_BG (TPI8PSB11D)",
   1590		.params = tuner_lg_pal_params,
   1591		.count  = ARRAY_SIZE(tuner_lg_pal_params),
   1592	},
   1593
   1594	/* 30-39 */
   1595	[TUNER_TEMIC_4009FN5_MULTI_PAL_FM] = { /* TEMIC PAL */
   1596		.name   = "Temic PAL* auto + FM (4009 FN5)",
   1597		.params = tuner_temic_4009_fn5_multi_pal_fm_params,
   1598		.count  = ARRAY_SIZE(tuner_temic_4009_fn5_multi_pal_fm_params),
   1599	},
   1600	[TUNER_SHARP_2U5JF5540_NTSC] = { /* SHARP NTSC */
   1601		.name   = "SHARP NTSC_JP (2U5JF5540)",
   1602		.params = tuner_sharp_2u5jf5540_params,
   1603		.count  = ARRAY_SIZE(tuner_sharp_2u5jf5540_params),
   1604	},
   1605	[TUNER_Samsung_PAL_TCPM9091PD27] = { /* Samsung PAL */
   1606		.name   = "Samsung PAL TCPM9091PD27",
   1607		.params = tuner_samsung_pal_tcpm9091pd27_params,
   1608		.count  = ARRAY_SIZE(tuner_samsung_pal_tcpm9091pd27_params),
   1609	},
   1610	[TUNER_MT2032] = { /* Microtune PAL|NTSC */
   1611		.name   = "MT20xx universal",
   1612		/* see mt20xx.c for details */ },
   1613	[TUNER_TEMIC_4106FH5] = { /* TEMIC PAL */
   1614		.name   = "Temic PAL_BG (4106 FH5)",
   1615		.params = tuner_temic_4106fh5_params,
   1616		.count  = ARRAY_SIZE(tuner_temic_4106fh5_params),
   1617	},
   1618	[TUNER_TEMIC_4012FY5] = { /* TEMIC PAL */
   1619		.name   = "Temic PAL_DK/SECAM_L (4012 FY5)",
   1620		.params = tuner_temic_4012fy5_params,
   1621		.count  = ARRAY_SIZE(tuner_temic_4012fy5_params),
   1622	},
   1623	[TUNER_TEMIC_4136FY5] = { /* TEMIC NTSC */
   1624		.name   = "Temic NTSC (4136 FY5)",
   1625		.params = tuner_temic_4136_fy5_params,
   1626		.count  = ARRAY_SIZE(tuner_temic_4136_fy5_params),
   1627	},
   1628	[TUNER_LG_PAL_NEW_TAPC] = { /* LGINNOTEK PAL */
   1629		.name   = "LG PAL (newer TAPC series)",
   1630		.params = tuner_lg_pal_new_tapc_params,
   1631		.count  = ARRAY_SIZE(tuner_lg_pal_new_tapc_params),
   1632	},
   1633	[TUNER_PHILIPS_FM1216ME_MK3] = { /* Philips PAL */
   1634		.name   = "Philips PAL/SECAM multi (FM1216ME MK3)",
   1635		.params = tuner_fm1216me_mk3_params,
   1636		.count  = ARRAY_SIZE(tuner_fm1216me_mk3_params),
   1637	},
   1638	[TUNER_LG_NTSC_NEW_TAPC] = { /* LGINNOTEK NTSC */
   1639		.name   = "LG NTSC (newer TAPC series)",
   1640		.params = tuner_lg_ntsc_new_tapc_params,
   1641		.count  = ARRAY_SIZE(tuner_lg_ntsc_new_tapc_params),
   1642	},
   1643
   1644	/* 40-49 */
   1645	[TUNER_HITACHI_NTSC] = { /* HITACHI NTSC */
   1646		.name   = "HITACHI V7-J180AT",
   1647		.params = tuner_hitachi_ntsc_params,
   1648		.count  = ARRAY_SIZE(tuner_hitachi_ntsc_params),
   1649	},
   1650	[TUNER_PHILIPS_PAL_MK] = { /* Philips PAL */
   1651		.name   = "Philips PAL_MK (FI1216 MK)",
   1652		.params = tuner_philips_pal_mk_params,
   1653		.count  = ARRAY_SIZE(tuner_philips_pal_mk_params),
   1654	},
   1655	[TUNER_PHILIPS_FCV1236D] = { /* Philips ATSC */
   1656		.name   = "Philips FCV1236D ATSC/NTSC dual in",
   1657		.params = tuner_philips_fcv1236d_params,
   1658		.count  = ARRAY_SIZE(tuner_philips_fcv1236d_params),
   1659		.min = 16 *  53.00,
   1660		.max = 16 * 803.00,
   1661		.stepsize = 62500,
   1662	},
   1663	[TUNER_PHILIPS_FM1236_MK3] = { /* Philips NTSC */
   1664		.name   = "Philips NTSC MK3 (FM1236MK3 or FM1236/F)",
   1665		.params = tuner_fm1236_mk3_params,
   1666		.count  = ARRAY_SIZE(tuner_fm1236_mk3_params),
   1667	},
   1668	[TUNER_PHILIPS_4IN1] = { /* Philips NTSC */
   1669		.name   = "Philips 4 in 1 (ATI TV Wonder Pro/Conexant)",
   1670		.params = tuner_philips_4in1_params,
   1671		.count  = ARRAY_SIZE(tuner_philips_4in1_params),
   1672	},
   1673	[TUNER_MICROTUNE_4049FM5] = { /* Microtune PAL */
   1674		.name   = "Microtune 4049 FM5",
   1675		.params = tuner_microtune_4049_fm5_params,
   1676		.count  = ARRAY_SIZE(tuner_microtune_4049_fm5_params),
   1677	},
   1678	[TUNER_PANASONIC_VP27] = { /* Panasonic NTSC */
   1679		.name   = "Panasonic VP27s/ENGE4324D",
   1680		.params = tuner_panasonic_vp27_params,
   1681		.count  = ARRAY_SIZE(tuner_panasonic_vp27_params),
   1682	},
   1683	[TUNER_LG_NTSC_TAPE] = { /* LGINNOTEK NTSC */
   1684		.name   = "LG NTSC (TAPE series)",
   1685		.params = tuner_fm1236_mk3_params,
   1686		.count  = ARRAY_SIZE(tuner_fm1236_mk3_params),
   1687	},
   1688	[TUNER_TNF_8831BGFF] = { /* Philips PAL */
   1689		.name   = "Tenna TNF 8831 BGFF)",
   1690		.params = tuner_tnf_8831bgff_params,
   1691		.count  = ARRAY_SIZE(tuner_tnf_8831bgff_params),
   1692	},
   1693	[TUNER_MICROTUNE_4042FI5] = { /* Microtune NTSC */
   1694		.name   = "Microtune 4042 FI5 ATSC/NTSC dual in",
   1695		.params = tuner_microtune_4042fi5_params,
   1696		.count  = ARRAY_SIZE(tuner_microtune_4042fi5_params),
   1697		.min    = 16 *  57.00,
   1698		.max    = 16 * 858.00,
   1699		.stepsize = 62500,
   1700	},
   1701
   1702	/* 50-59 */
   1703	[TUNER_TCL_2002N] = { /* TCL NTSC */
   1704		.name   = "TCL 2002N",
   1705		.params = tuner_tcl_2002n_params,
   1706		.count  = ARRAY_SIZE(tuner_tcl_2002n_params),
   1707	},
   1708	[TUNER_PHILIPS_FM1256_IH3] = { /* Philips PAL */
   1709		.name   = "Philips PAL/SECAM_D (FM 1256 I-H3)",
   1710		.params = tuner_philips_fm1256_ih3_params,
   1711		.count  = ARRAY_SIZE(tuner_philips_fm1256_ih3_params),
   1712	},
   1713	[TUNER_THOMSON_DTT7610] = { /* THOMSON ATSC */
   1714		.name   = "Thomson DTT 7610 (ATSC/NTSC)",
   1715		.params = tuner_thomson_dtt7610_params,
   1716		.count  = ARRAY_SIZE(tuner_thomson_dtt7610_params),
   1717		.min    = 16 *  44.00,
   1718		.max    = 16 * 958.00,
   1719		.stepsize = 62500,
   1720	},
   1721	[TUNER_PHILIPS_FQ1286] = { /* Philips NTSC */
   1722		.name   = "Philips FQ1286",
   1723		.params = tuner_philips_fq1286_params,
   1724		.count  = ARRAY_SIZE(tuner_philips_fq1286_params),
   1725	},
   1726	[TUNER_PHILIPS_TDA8290] = { /* Philips PAL|NTSC */
   1727		.name   = "Philips/NXP TDA 8290/8295 + 8275/8275A/18271",
   1728		/* see tda8290.c for details */ },
   1729	[TUNER_TCL_2002MB] = { /* TCL PAL */
   1730		.name   = "TCL 2002MB",
   1731		.params = tuner_tcl_2002mb_params,
   1732		.count  = ARRAY_SIZE(tuner_tcl_2002mb_params),
   1733	},
   1734	[TUNER_PHILIPS_FQ1216AME_MK4] = { /* Philips PAL */
   1735		.name   = "Philips PAL/SECAM multi (FQ1216AME MK4)",
   1736		.params = tuner_philips_fq1216ame_mk4_params,
   1737		.count  = ARRAY_SIZE(tuner_philips_fq1216ame_mk4_params),
   1738	},
   1739	[TUNER_PHILIPS_FQ1236A_MK4] = { /* Philips NTSC */
   1740		.name   = "Philips FQ1236A MK4",
   1741		.params = tuner_philips_fq1236a_mk4_params,
   1742		.count  = ARRAY_SIZE(tuner_philips_fq1236a_mk4_params),
   1743	},
   1744	[TUNER_YMEC_TVF_8531MF] = { /* Philips NTSC */
   1745		.name   = "Ymec TVision TVF-8531MF/8831MF/8731MF",
   1746		.params = tuner_ymec_tvf_8531mf_params,
   1747		.count  = ARRAY_SIZE(tuner_ymec_tvf_8531mf_params),
   1748	},
   1749	[TUNER_YMEC_TVF_5533MF] = { /* Philips NTSC */
   1750		.name   = "Ymec TVision TVF-5533MF",
   1751		.params = tuner_ymec_tvf_5533mf_params,
   1752		.count  = ARRAY_SIZE(tuner_ymec_tvf_5533mf_params),
   1753	},
   1754
   1755	/* 60-69 */
   1756	[TUNER_THOMSON_DTT761X] = { /* THOMSON ATSC */
   1757		/* DTT 7611 7611A 7612 7613 7613A 7614 7615 7615A */
   1758		.name   = "Thomson DTT 761X (ATSC/NTSC)",
   1759		.params = tuner_thomson_dtt761x_params,
   1760		.count  = ARRAY_SIZE(tuner_thomson_dtt761x_params),
   1761		.min    = 16 *  57.00,
   1762		.max    = 16 * 863.00,
   1763		.stepsize = 62500,
   1764		.initdata = tua603x_agc103,
   1765	},
   1766	[TUNER_TENA_9533_DI] = { /* Philips PAL */
   1767		.name   = "Tena TNF9533-D/IF/TNF9533-B/DF",
   1768		.params = tuner_tena_9533_di_params,
   1769		.count  = ARRAY_SIZE(tuner_tena_9533_di_params),
   1770	},
   1771	[TUNER_TEA5767] = { /* Philips RADIO */
   1772		.name   = "Philips TEA5767HN FM Radio",
   1773		/* see tea5767.c for details */
   1774	},
   1775	[TUNER_PHILIPS_FMD1216ME_MK3] = { /* Philips PAL */
   1776		.name   = "Philips FMD1216ME MK3 Hybrid Tuner",
   1777		.params = tuner_philips_fmd1216me_mk3_params,
   1778		.count  = ARRAY_SIZE(tuner_philips_fmd1216me_mk3_params),
   1779		.min = 16 *  50.87,
   1780		.max = 16 * 858.00,
   1781		.stepsize = 166667,
   1782		.initdata = tua603x_agc112,
   1783		.sleepdata = (u8[]){ 4, 0x9c, 0x60, 0x85, 0x54 },
   1784	},
   1785	[TUNER_LG_TDVS_H06XF] = { /* LGINNOTEK ATSC */
   1786		.name   = "LG TDVS-H06xF", /* H061F, H062F & H064F */
   1787		.params = tuner_lg_tdvs_h06xf_params,
   1788		.count  = ARRAY_SIZE(tuner_lg_tdvs_h06xf_params),
   1789		.min    = 16 *  54.00,
   1790		.max    = 16 * 863.00,
   1791		.stepsize = 62500,
   1792		.initdata = tua603x_agc103,
   1793	},
   1794	[TUNER_YMEC_TVF66T5_B_DFF] = { /* Philips PAL */
   1795		.name   = "Ymec TVF66T5-B/DFF",
   1796		.params = tuner_ymec_tvf66t5_b_dff_params,
   1797		.count  = ARRAY_SIZE(tuner_ymec_tvf66t5_b_dff_params),
   1798	},
   1799	[TUNER_LG_TALN] = { /* LGINNOTEK NTSC / PAL / SECAM */
   1800		.name   = "LG TALN series",
   1801		.params = tuner_lg_taln_params,
   1802		.count  = ARRAY_SIZE(tuner_lg_taln_params),
   1803	},
   1804	[TUNER_PHILIPS_TD1316] = { /* Philips PAL */
   1805		.name   = "Philips TD1316 Hybrid Tuner",
   1806		.params = tuner_philips_td1316_params,
   1807		.count  = ARRAY_SIZE(tuner_philips_td1316_params),
   1808		.min    = 16 *  87.00,
   1809		.max    = 16 * 895.00,
   1810		.stepsize = 166667,
   1811	},
   1812	[TUNER_PHILIPS_TUV1236D] = { /* Philips ATSC */
   1813		.name   = "Philips TUV1236D ATSC/NTSC dual in",
   1814		.params = tuner_tuv1236d_params,
   1815		.count  = ARRAY_SIZE(tuner_tuv1236d_params),
   1816		.min    = 16 *  54.00,
   1817		.max    = 16 * 864.00,
   1818		.stepsize = 62500,
   1819	},
   1820	[TUNER_TNF_5335MF] = { /* Tenna PAL/NTSC */
   1821		.name   = "Tena TNF 5335 and similar models",
   1822		.params = tuner_tnf_5335mf_params,
   1823		.count  = ARRAY_SIZE(tuner_tnf_5335mf_params),
   1824	},
   1825
   1826	/* 70-79 */
   1827	[TUNER_SAMSUNG_TCPN_2121P30A] = { /* Samsung NTSC */
   1828		.name   = "Samsung TCPN 2121P30A",
   1829		.params = tuner_samsung_tcpn_2121p30a_params,
   1830		.count  = ARRAY_SIZE(tuner_samsung_tcpn_2121p30a_params),
   1831	},
   1832	[TUNER_XC2028] = { /* Xceive 2028 */
   1833		.name   = "Xceive xc2028/xc3028 tuner",
   1834		/* see xc2028.c for details */
   1835	},
   1836	[TUNER_THOMSON_FE6600] = { /* Thomson PAL / DVB-T */
   1837		.name   = "Thomson FE6600",
   1838		.params = tuner_thomson_fe6600_params,
   1839		.count  = ARRAY_SIZE(tuner_thomson_fe6600_params),
   1840		.min    = 16 *  44.25,
   1841		.max    = 16 * 858.00,
   1842		.stepsize = 166667,
   1843	},
   1844	[TUNER_SAMSUNG_TCPG_6121P30A] = { /* Samsung PAL */
   1845		.name   = "Samsung TCPG 6121P30A",
   1846		.params = tuner_samsung_tcpg_6121p30a_params,
   1847		.count  = ARRAY_SIZE(tuner_samsung_tcpg_6121p30a_params),
   1848	},
   1849	[TUNER_TDA9887] = { /* Philips TDA 9887 IF PLL Demodulator.
   1850				This chip is part of some modern tuners */
   1851		.name   = "Philips TDA988[5,6,7] IF PLL Demodulator",
   1852		/* see tda9887.c for details */
   1853	},
   1854	[TUNER_TEA5761] = { /* Philips RADIO */
   1855		.name   = "Philips TEA5761 FM Radio",
   1856		/* see tea5767.c for details */
   1857	},
   1858	[TUNER_XC5000] = { /* Xceive 5000 */
   1859		.name   = "Xceive 5000 tuner",
   1860		/* see xc5000.c for details */
   1861	},
   1862	[TUNER_XC4000] = { /* Xceive 4000 */
   1863		.name   = "Xceive 4000 tuner",
   1864		/* see xc4000.c for details */
   1865	},
   1866	[TUNER_TCL_MF02GIP_5N] = { /* TCL tuner MF02GIP-5N-E */
   1867		.name   = "TCL tuner MF02GIP-5N-E",
   1868		.params = tuner_tcl_mf02gip_5n_params,
   1869		.count  = ARRAY_SIZE(tuner_tcl_mf02gip_5n_params),
   1870	},
   1871	[TUNER_PHILIPS_FMD1216MEX_MK3] = { /* Philips PAL */
   1872		.name   = "Philips FMD1216MEX MK3 Hybrid Tuner",
   1873		.params = tuner_philips_fmd1216mex_mk3_params,
   1874		.count  = ARRAY_SIZE(tuner_philips_fmd1216mex_mk3_params),
   1875		.min = 16 *  50.87,
   1876		.max = 16 * 858.00,
   1877		.stepsize = 166667,
   1878		.initdata = tua603x_agc112,
   1879		.sleepdata = (u8[]){ 4, 0x9c, 0x60, 0x85, 0x54 },
   1880	},
   1881		[TUNER_PHILIPS_FM1216MK5] = { /* Philips PAL */
   1882		.name   = "Philips PAL/SECAM multi (FM1216 MK5)",
   1883		.params = tuner_fm1216mk5_params,
   1884		.count  = ARRAY_SIZE(tuner_fm1216mk5_params),
   1885	},
   1886
   1887	/* 80-89 */
   1888	[TUNER_PHILIPS_FQ1216LME_MK3] = { /* PAL/SECAM, Loop-thru, no FM */
   1889		.name = "Philips FQ1216LME MK3 PAL/SECAM w/active loopthrough",
   1890		.params = tuner_fq1216lme_mk3_params,
   1891		.count  = ARRAY_SIZE(tuner_fq1216lme_mk3_params),
   1892	},
   1893
   1894	[TUNER_PARTSNIC_PTI_5NF05] = {
   1895		.name = "Partsnic (Daewoo) PTI-5NF05",
   1896		.params = tuner_partsnic_pti_5nf05_params,
   1897		.count  = ARRAY_SIZE(tuner_partsnic_pti_5nf05_params),
   1898	},
   1899	[TUNER_PHILIPS_CU1216L] = {
   1900		.name = "Philips CU1216L",
   1901		.params = tuner_philips_cu1216l_params,
   1902		.count  = ARRAY_SIZE(tuner_philips_cu1216l_params),
   1903		.stepsize = 62500,
   1904	},
   1905	[TUNER_NXP_TDA18271] = {
   1906		.name   = "NXP TDA18271",
   1907		/* see tda18271-fe.c for details */
   1908	},
   1909	[TUNER_SONY_BTF_PXN01Z] = {
   1910		.name   = "Sony BTF-Pxn01Z",
   1911		.params = tuner_sony_btf_pxn01z_params,
   1912		.count  = ARRAY_SIZE(tuner_sony_btf_pxn01z_params),
   1913	},
   1914	[TUNER_PHILIPS_FQ1236_MK5] = { /* NTSC, TDA9885, no FM radio */
   1915		.name   = "Philips FQ1236 MK5",
   1916		.params = tuner_philips_fq1236_mk5_params,
   1917		.count  = ARRAY_SIZE(tuner_philips_fq1236_mk5_params),
   1918	},
   1919	[TUNER_TENA_TNF_5337] = { /* Tena 5337 MFD */
   1920		.name   = "Tena TNF5337 MFD",
   1921		.params = tuner_tena_tnf_5337_params,
   1922		.count  = ARRAY_SIZE(tuner_tena_tnf_5337_params),
   1923	},
   1924	[TUNER_XC5000C] = { /* Xceive 5000C */
   1925		.name   = "Xceive 5000C tuner",
   1926		/* see xc5000.c for details */
   1927	},
   1928	[TUNER_SONY_BTF_PG472Z] = {
   1929		.name   = "Sony BTF-PG472Z PAL/SECAM",
   1930		.params = tuner_sony_btf_pg472z_params,
   1931		.count  = ARRAY_SIZE(tuner_sony_btf_pg472z_params),
   1932	},
   1933
   1934	/* 90-99 */
   1935	[TUNER_SONY_BTF_PK467Z] = {
   1936		.name   = "Sony BTF-PK467Z NTSC-M-JP",
   1937		.params = tuner_sony_btf_pg467z_params,
   1938		.count  = ARRAY_SIZE(tuner_sony_btf_pg467z_params),
   1939	},
   1940	[TUNER_SONY_BTF_PB463Z] = {
   1941		.name   = "Sony BTF-PB463Z NTSC-M",
   1942		.params = tuner_sony_btf_pg463z_params,
   1943		.count  = ARRAY_SIZE(tuner_sony_btf_pg463z_params),
   1944	},
   1945	[TUNER_SI2157] = {
   1946		.name   = "Silicon Labs Si2157 tuner",
   1947		/* see si2157.c for details */
   1948	},
   1949};
   1950EXPORT_SYMBOL(tuners);
   1951
   1952unsigned const int tuner_count = ARRAY_SIZE(tuners);
   1953EXPORT_SYMBOL(tuner_count);
   1954
   1955MODULE_DESCRIPTION("Simple tuner device type database");
   1956MODULE_AUTHOR("Ralph Metzler, Gerd Knorr, Gunther Mayer");
   1957MODULE_LICENSE("GPL");