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