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");