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