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 /* --------- Sony BTF-PG472Z PAL/SECAM ------- */ 1385 1386 static struct tuner_range tuner_sony_btf_pg472z_ranges[] = { 1387 { 16 * 144.25 /*MHz*/, 0xc6, 0x01, }, 1388 { 16 * 427.25 /*MHz*/, 0xc6, 0x02, }, 1389 { 16 * 999.99 , 0xc6, 0x04, }, 1390 }; 1391 1392 static struct tuner_params tuner_sony_btf_pg472z_params[] = { 1393 { 1394 .type = TUNER_PARAM_TYPE_PAL, 1395 .ranges = tuner_sony_btf_pg472z_ranges, 1396 .count = ARRAY_SIZE(tuner_sony_btf_pg472z_ranges), 1397 .has_tda9887 = 1, 1398 .port1_active = 1, 1399 .port2_invert_for_secam_lc = 1, 1400 }, 1401 }; 1402 1403 /* 90-99 */ 1404 /* --------- Sony BTF-PG467Z NTSC-M-JP ------- */ 1405 1406 static struct tuner_range tuner_sony_btf_pg467z_ranges[] = { 1407 { 16 * 220.25 /*MHz*/, 0xc6, 0x01, }, 1408 { 16 * 467.25 /*MHz*/, 0xc6, 0x02, }, 1409 { 16 * 999.99 , 0xc6, 0x04, }, 1410 }; 1411 1412 static struct tuner_params tuner_sony_btf_pg467z_params[] = { 1413 { 1414 .type = TUNER_PARAM_TYPE_NTSC, 1415 .ranges = tuner_sony_btf_pg467z_ranges, 1416 .count = ARRAY_SIZE(tuner_sony_btf_pg467z_ranges), 1417 }, 1418 }; 1419 1420 /* --------- Sony BTF-PG463Z NTSC-M ------- */ 1421 1422 static struct tuner_range tuner_sony_btf_pg463z_ranges[] = { 1423 { 16 * 130.25 /*MHz*/, 0xc6, 0x01, }, 1424 { 16 * 364.25 /*MHz*/, 0xc6, 0x02, }, 1425 { 16 * 999.99 , 0xc6, 0x04, }, 1426 }; 1427 1428 static struct tuner_params tuner_sony_btf_pg463z_params[] = { 1429 { 1430 .type = TUNER_PARAM_TYPE_NTSC, 1431 .ranges = tuner_sony_btf_pg463z_ranges, 1432 .count = ARRAY_SIZE(tuner_sony_btf_pg463z_ranges), 1433 }, 1434 }; 1435 1436 /* --------------------------------------------------------------------- */ 1437 1438 struct tunertype tuners[] = { 1439 /* 0-9 */ 1440 [TUNER_TEMIC_PAL] = { /* TEMIC PAL */ 1441 .name = "Temic PAL (4002 FH5)", 1442 .params = tuner_temic_pal_params, 1443 .count = ARRAY_SIZE(tuner_temic_pal_params), 1444 }, 1445 [TUNER_PHILIPS_PAL_I] = { /* Philips PAL_I */ 1446 .name = "Philips PAL_I (FI1246 and compatibles)", 1447 .params = tuner_philips_pal_i_params, 1448 .count = ARRAY_SIZE(tuner_philips_pal_i_params), 1449 }, 1450 [TUNER_PHILIPS_NTSC] = { /* Philips NTSC */ 1451 .name = "Philips NTSC (FI1236,FM1236 and compatibles)", 1452 .params = tuner_philips_ntsc_params, 1453 .count = ARRAY_SIZE(tuner_philips_ntsc_params), 1454 }, 1455 [TUNER_PHILIPS_SECAM] = { /* Philips SECAM */ 1456 .name = "Philips (SECAM+PAL_BG) (FI1216MF, FM1216MF, FR1216MF)", 1457 .params = tuner_philips_secam_params, 1458 .count = ARRAY_SIZE(tuner_philips_secam_params), 1459 }, 1460 [TUNER_ABSENT] = { /* Tuner Absent */ 1461 .name = "NoTuner", 1462 }, 1463 [TUNER_PHILIPS_PAL] = { /* Philips PAL */ 1464 .name = "Philips PAL_BG (FI1216 and compatibles)", 1465 .params = tuner_philips_pal_params, 1466 .count = ARRAY_SIZE(tuner_philips_pal_params), 1467 }, 1468 [TUNER_TEMIC_NTSC] = { /* TEMIC NTSC */ 1469 .name = "Temic NTSC (4032 FY5)", 1470 .params = tuner_temic_ntsc_params, 1471 .count = ARRAY_SIZE(tuner_temic_ntsc_params), 1472 }, 1473 [TUNER_TEMIC_PAL_I] = { /* TEMIC PAL_I */ 1474 .name = "Temic PAL_I (4062 FY5)", 1475 .params = tuner_temic_pal_i_params, 1476 .count = ARRAY_SIZE(tuner_temic_pal_i_params), 1477 }, 1478 [TUNER_TEMIC_4036FY5_NTSC] = { /* TEMIC NTSC */ 1479 .name = "Temic NTSC (4036 FY5)", 1480 .params = tuner_temic_4036fy5_ntsc_params, 1481 .count = ARRAY_SIZE(tuner_temic_4036fy5_ntsc_params), 1482 }, 1483 [TUNER_ALPS_TSBH1_NTSC] = { /* TEMIC NTSC */ 1484 .name = "Alps HSBH1", 1485 .params = tuner_alps_tsbh1_ntsc_params, 1486 .count = ARRAY_SIZE(tuner_alps_tsbh1_ntsc_params), 1487 }, 1488 1489 /* 10-19 */ 1490 [TUNER_ALPS_TSBE1_PAL] = { /* TEMIC PAL */ 1491 .name = "Alps TSBE1", 1492 .params = tuner_alps_tsb_1_params, 1493 .count = ARRAY_SIZE(tuner_alps_tsb_1_params), 1494 }, 1495 [TUNER_ALPS_TSBB5_PAL_I] = { /* Alps PAL_I */ 1496 .name = "Alps TSBB5", 1497 .params = tuner_alps_tsbb5_params, 1498 .count = ARRAY_SIZE(tuner_alps_tsbb5_params), 1499 }, 1500 [TUNER_ALPS_TSBE5_PAL] = { /* Alps PAL */ 1501 .name = "Alps TSBE5", 1502 .params = tuner_alps_tsbe5_params, 1503 .count = ARRAY_SIZE(tuner_alps_tsbe5_params), 1504 }, 1505 [TUNER_ALPS_TSBC5_PAL] = { /* Alps PAL */ 1506 .name = "Alps TSBC5", 1507 .params = tuner_alps_tsbc5_params, 1508 .count = ARRAY_SIZE(tuner_alps_tsbc5_params), 1509 }, 1510 [TUNER_TEMIC_4006FH5_PAL] = { /* TEMIC PAL */ 1511 .name = "Temic PAL_BG (4006FH5)", 1512 .params = tuner_temic_4006fh5_params, 1513 .count = ARRAY_SIZE(tuner_temic_4006fh5_params), 1514 }, 1515 [TUNER_ALPS_TSHC6_NTSC] = { /* Alps NTSC */ 1516 .name = "Alps TSCH6", 1517 .params = tuner_alps_tshc6_params, 1518 .count = ARRAY_SIZE(tuner_alps_tshc6_params), 1519 }, 1520 [TUNER_TEMIC_PAL_DK] = { /* TEMIC PAL */ 1521 .name = "Temic PAL_DK (4016 FY5)", 1522 .params = tuner_temic_pal_dk_params, 1523 .count = ARRAY_SIZE(tuner_temic_pal_dk_params), 1524 }, 1525 [TUNER_PHILIPS_NTSC_M] = { /* Philips NTSC */ 1526 .name = "Philips NTSC_M (MK2)", 1527 .params = tuner_philips_ntsc_m_params, 1528 .count = ARRAY_SIZE(tuner_philips_ntsc_m_params), 1529 }, 1530 [TUNER_TEMIC_4066FY5_PAL_I] = { /* TEMIC PAL_I */ 1531 .name = "Temic PAL_I (4066 FY5)", 1532 .params = tuner_temic_4066fy5_pal_i_params, 1533 .count = ARRAY_SIZE(tuner_temic_4066fy5_pal_i_params), 1534 }, 1535 [TUNER_TEMIC_4006FN5_MULTI_PAL] = { /* TEMIC PAL */ 1536 .name = "Temic PAL* auto (4006 FN5)", 1537 .params = tuner_temic_4006fn5_multi_params, 1538 .count = ARRAY_SIZE(tuner_temic_4006fn5_multi_params), 1539 }, 1540 1541 /* 20-29 */ 1542 [TUNER_TEMIC_4009FR5_PAL] = { /* TEMIC PAL */ 1543 .name = "Temic PAL_BG (4009 FR5) or PAL_I (4069 FR5)", 1544 .params = tuner_temic_4009f_5_params, 1545 .count = ARRAY_SIZE(tuner_temic_4009f_5_params), 1546 }, 1547 [TUNER_TEMIC_4039FR5_NTSC] = { /* TEMIC NTSC */ 1548 .name = "Temic NTSC (4039 FR5)", 1549 .params = tuner_temic_4039fr5_params, 1550 .count = ARRAY_SIZE(tuner_temic_4039fr5_params), 1551 }, 1552 [TUNER_TEMIC_4046FM5] = { /* TEMIC PAL */ 1553 .name = "Temic PAL/SECAM multi (4046 FM5)", 1554 .params = tuner_temic_4046fm5_params, 1555 .count = ARRAY_SIZE(tuner_temic_4046fm5_params), 1556 }, 1557 [TUNER_PHILIPS_PAL_DK] = { /* Philips PAL */ 1558 .name = "Philips PAL_DK (FI1256 and compatibles)", 1559 .params = tuner_philips_pal_dk_params, 1560 .count = ARRAY_SIZE(tuner_philips_pal_dk_params), 1561 }, 1562 [TUNER_PHILIPS_FQ1216ME] = { /* Philips PAL */ 1563 .name = "Philips PAL/SECAM multi (FQ1216ME)", 1564 .params = tuner_philips_fq1216me_params, 1565 .count = ARRAY_SIZE(tuner_philips_fq1216me_params), 1566 }, 1567 [TUNER_LG_PAL_I_FM] = { /* LGINNOTEK PAL_I */ 1568 .name = "LG PAL_I+FM (TAPC-I001D)", 1569 .params = tuner_lg_pal_i_fm_params, 1570 .count = ARRAY_SIZE(tuner_lg_pal_i_fm_params), 1571 }, 1572 [TUNER_LG_PAL_I] = { /* LGINNOTEK PAL_I */ 1573 .name = "LG PAL_I (TAPC-I701D)", 1574 .params = tuner_lg_pal_i_params, 1575 .count = ARRAY_SIZE(tuner_lg_pal_i_params), 1576 }, 1577 [TUNER_LG_NTSC_FM] = { /* LGINNOTEK NTSC */ 1578 .name = "LG NTSC+FM (TPI8NSR01F)", 1579 .params = tuner_lg_ntsc_fm_params, 1580 .count = ARRAY_SIZE(tuner_lg_ntsc_fm_params), 1581 }, 1582 [TUNER_LG_PAL_FM] = { /* LGINNOTEK PAL */ 1583 .name = "LG PAL_BG+FM (TPI8PSB01D)", 1584 .params = tuner_lg_pal_fm_params, 1585 .count = ARRAY_SIZE(tuner_lg_pal_fm_params), 1586 }, 1587 [TUNER_LG_PAL] = { /* LGINNOTEK PAL */ 1588 .name = "LG PAL_BG (TPI8PSB11D)", 1589 .params = tuner_lg_pal_params, 1590 .count = ARRAY_SIZE(tuner_lg_pal_params), 1591 }, 1592 1593 /* 30-39 */ 1594 [TUNER_TEMIC_4009FN5_MULTI_PAL_FM] = { /* TEMIC PAL */ 1595 .name = "Temic PAL* auto + FM (4009 FN5)", 1596 .params = tuner_temic_4009_fn5_multi_pal_fm_params, 1597 .count = ARRAY_SIZE(tuner_temic_4009_fn5_multi_pal_fm_params), 1598 }, 1599 [TUNER_SHARP_2U5JF5540_NTSC] = { /* SHARP NTSC */ 1600 .name = "SHARP NTSC_JP (2U5JF5540)", 1601 .params = tuner_sharp_2u5jf5540_params, 1602 .count = ARRAY_SIZE(tuner_sharp_2u5jf5540_params), 1603 }, 1604 [TUNER_Samsung_PAL_TCPM9091PD27] = { /* Samsung PAL */ 1605 .name = "Samsung PAL TCPM9091PD27", 1606 .params = tuner_samsung_pal_tcpm9091pd27_params, 1607 .count = ARRAY_SIZE(tuner_samsung_pal_tcpm9091pd27_params), 1608 }, 1609 [TUNER_MT2032] = { /* Microtune PAL|NTSC */ 1610 .name = "MT20xx universal", 1611 /* see mt20xx.c for details */ }, 1612 [TUNER_TEMIC_4106FH5] = { /* TEMIC PAL */ 1613 .name = "Temic PAL_BG (4106 FH5)", 1614 .params = tuner_temic_4106fh5_params, 1615 .count = ARRAY_SIZE(tuner_temic_4106fh5_params), 1616 }, 1617 [TUNER_TEMIC_4012FY5] = { /* TEMIC PAL */ 1618 .name = "Temic PAL_DK/SECAM_L (4012 FY5)", 1619 .params = tuner_temic_4012fy5_params, 1620 .count = ARRAY_SIZE(tuner_temic_4012fy5_params), 1621 }, 1622 [TUNER_TEMIC_4136FY5] = { /* TEMIC NTSC */ 1623 .name = "Temic NTSC (4136 FY5)", 1624 .params = tuner_temic_4136_fy5_params, 1625 .count = ARRAY_SIZE(tuner_temic_4136_fy5_params), 1626 }, 1627 [TUNER_LG_PAL_NEW_TAPC] = { /* LGINNOTEK PAL */ 1628 .name = "LG PAL (newer TAPC series)", 1629 .params = tuner_lg_pal_new_tapc_params, 1630 .count = ARRAY_SIZE(tuner_lg_pal_new_tapc_params), 1631 }, 1632 [TUNER_PHILIPS_FM1216ME_MK3] = { /* Philips PAL */ 1633 .name = "Philips PAL/SECAM multi (FM1216ME MK3)", 1634 .params = tuner_fm1216me_mk3_params, 1635 .count = ARRAY_SIZE(tuner_fm1216me_mk3_params), 1636 }, 1637 [TUNER_LG_NTSC_NEW_TAPC] = { /* LGINNOTEK NTSC */ 1638 .name = "LG NTSC (newer TAPC series)", 1639 .params = tuner_lg_ntsc_new_tapc_params, 1640 .count = ARRAY_SIZE(tuner_lg_ntsc_new_tapc_params), 1641 }, 1642 1643 /* 40-49 */ 1644 [TUNER_HITACHI_NTSC] = { /* HITACHI NTSC */ 1645 .name = "HITACHI V7-J180AT", 1646 .params = tuner_hitachi_ntsc_params, 1647 .count = ARRAY_SIZE(tuner_hitachi_ntsc_params), 1648 }, 1649 [TUNER_PHILIPS_PAL_MK] = { /* Philips PAL */ 1650 .name = "Philips PAL_MK (FI1216 MK)", 1651 .params = tuner_philips_pal_mk_params, 1652 .count = ARRAY_SIZE(tuner_philips_pal_mk_params), 1653 }, 1654 [TUNER_PHILIPS_FCV1236D] = { /* Philips ATSC */ 1655 .name = "Philips FCV1236D ATSC/NTSC dual in", 1656 .params = tuner_philips_fcv1236d_params, 1657 .count = ARRAY_SIZE(tuner_philips_fcv1236d_params), 1658 .min = 16 * 53.00, 1659 .max = 16 * 803.00, 1660 .stepsize = 62500, 1661 }, 1662 [TUNER_PHILIPS_FM1236_MK3] = { /* Philips NTSC */ 1663 .name = "Philips NTSC MK3 (FM1236MK3 or FM1236/F)", 1664 .params = tuner_fm1236_mk3_params, 1665 .count = ARRAY_SIZE(tuner_fm1236_mk3_params), 1666 }, 1667 [TUNER_PHILIPS_4IN1] = { /* Philips NTSC */ 1668 .name = "Philips 4 in 1 (ATI TV Wonder Pro/Conexant)", 1669 .params = tuner_philips_4in1_params, 1670 .count = ARRAY_SIZE(tuner_philips_4in1_params), 1671 }, 1672 [TUNER_MICROTUNE_4049FM5] = { /* Microtune PAL */ 1673 .name = "Microtune 4049 FM5", 1674 .params = tuner_microtune_4049_fm5_params, 1675 .count = ARRAY_SIZE(tuner_microtune_4049_fm5_params), 1676 }, 1677 [TUNER_PANASONIC_VP27] = { /* Panasonic NTSC */ 1678 .name = "Panasonic VP27s/ENGE4324D", 1679 .params = tuner_panasonic_vp27_params, 1680 .count = ARRAY_SIZE(tuner_panasonic_vp27_params), 1681 }, 1682 [TUNER_LG_NTSC_TAPE] = { /* LGINNOTEK NTSC */ 1683 .name = "LG NTSC (TAPE series)", 1684 .params = tuner_fm1236_mk3_params, 1685 .count = ARRAY_SIZE(tuner_fm1236_mk3_params), 1686 }, 1687 [TUNER_TNF_8831BGFF] = { /* Philips PAL */ 1688 .name = "Tenna TNF 8831 BGFF)", 1689 .params = tuner_tnf_8831bgff_params, 1690 .count = ARRAY_SIZE(tuner_tnf_8831bgff_params), 1691 }, 1692 [TUNER_MICROTUNE_4042FI5] = { /* Microtune NTSC */ 1693 .name = "Microtune 4042 FI5 ATSC/NTSC dual in", 1694 .params = tuner_microtune_4042fi5_params, 1695 .count = ARRAY_SIZE(tuner_microtune_4042fi5_params), 1696 .min = 16 * 57.00, 1697 .max = 16 * 858.00, 1698 .stepsize = 62500, 1699 }, 1700 1701 /* 50-59 */ 1702 [TUNER_TCL_2002N] = { /* TCL NTSC */ 1703 .name = "TCL 2002N", 1704 .params = tuner_tcl_2002n_params, 1705 .count = ARRAY_SIZE(tuner_tcl_2002n_params), 1706 }, 1707 [TUNER_PHILIPS_FM1256_IH3] = { /* Philips PAL */ 1708 .name = "Philips PAL/SECAM_D (FM 1256 I-H3)", 1709 .params = tuner_philips_fm1256_ih3_params, 1710 .count = ARRAY_SIZE(tuner_philips_fm1256_ih3_params), 1711 }, 1712 [TUNER_THOMSON_DTT7610] = { /* THOMSON ATSC */ 1713 .name = "Thomson DTT 7610 (ATSC/NTSC)", 1714 .params = tuner_thomson_dtt7610_params, 1715 .count = ARRAY_SIZE(tuner_thomson_dtt7610_params), 1716 .min = 16 * 44.00, 1717 .max = 16 * 958.00, 1718 .stepsize = 62500, 1719 }, 1720 [TUNER_PHILIPS_FQ1286] = { /* Philips NTSC */ 1721 .name = "Philips FQ1286", 1722 .params = tuner_philips_fq1286_params, 1723 .count = ARRAY_SIZE(tuner_philips_fq1286_params), 1724 }, 1725 [TUNER_PHILIPS_TDA8290] = { /* Philips PAL|NTSC */ 1726 .name = "Philips/NXP TDA 8290/8295 + 8275/8275A/18271", 1727 /* see tda8290.c for details */ }, 1728 [TUNER_TCL_2002MB] = { /* TCL PAL */ 1729 .name = "TCL 2002MB", 1730 .params = tuner_tcl_2002mb_params, 1731 .count = ARRAY_SIZE(tuner_tcl_2002mb_params), 1732 }, 1733 [TUNER_PHILIPS_FQ1216AME_MK4] = { /* Philips PAL */ 1734 .name = "Philips PAL/SECAM multi (FQ1216AME MK4)", 1735 .params = tuner_philips_fq1216ame_mk4_params, 1736 .count = ARRAY_SIZE(tuner_philips_fq1216ame_mk4_params), 1737 }, 1738 [TUNER_PHILIPS_FQ1236A_MK4] = { /* Philips NTSC */ 1739 .name = "Philips FQ1236A MK4", 1740 .params = tuner_philips_fq1236a_mk4_params, 1741 .count = ARRAY_SIZE(tuner_philips_fq1236a_mk4_params), 1742 }, 1743 [TUNER_YMEC_TVF_8531MF] = { /* Philips NTSC */ 1744 .name = "Ymec TVision TVF-8531MF/8831MF/8731MF", 1745 .params = tuner_ymec_tvf_8531mf_params, 1746 .count = ARRAY_SIZE(tuner_ymec_tvf_8531mf_params), 1747 }, 1748 [TUNER_YMEC_TVF_5533MF] = { /* Philips NTSC */ 1749 .name = "Ymec TVision TVF-5533MF", 1750 .params = tuner_ymec_tvf_5533mf_params, 1751 .count = ARRAY_SIZE(tuner_ymec_tvf_5533mf_params), 1752 }, 1753 1754 /* 60-69 */ 1755 [TUNER_THOMSON_DTT761X] = { /* THOMSON ATSC */ 1756 /* DTT 7611 7611A 7612 7613 7613A 7614 7615 7615A */ 1757 .name = "Thomson DTT 761X (ATSC/NTSC)", 1758 .params = tuner_thomson_dtt761x_params, 1759 .count = ARRAY_SIZE(tuner_thomson_dtt761x_params), 1760 .min = 16 * 57.00, 1761 .max = 16 * 863.00, 1762 .stepsize = 62500, 1763 .initdata = tua603x_agc103, 1764 }, 1765 [TUNER_TENA_9533_DI] = { /* Philips PAL */ 1766 .name = "Tena TNF9533-D/IF/TNF9533-B/DF", 1767 .params = tuner_tena_9533_di_params, 1768 .count = ARRAY_SIZE(tuner_tena_9533_di_params), 1769 }, 1770 [TUNER_TEA5767] = { /* Philips RADIO */ 1771 .name = "Philips TEA5767HN FM Radio", 1772 /* see tea5767.c for details */ 1773 }, 1774 [TUNER_PHILIPS_FMD1216ME_MK3] = { /* Philips PAL */ 1775 .name = "Philips FMD1216ME MK3 Hybrid Tuner", 1776 .params = tuner_philips_fmd1216me_mk3_params, 1777 .count = ARRAY_SIZE(tuner_philips_fmd1216me_mk3_params), 1778 .min = 16 * 50.87, 1779 .max = 16 * 858.00, 1780 .stepsize = 166667, 1781 .initdata = tua603x_agc112, 1782 .sleepdata = (u8[]){ 4, 0x9c, 0x60, 0x85, 0x54 }, 1783 }, 1784 [TUNER_LG_TDVS_H06XF] = { /* LGINNOTEK ATSC */ 1785 .name = "LG TDVS-H06xF", /* H061F, H062F & H064F */ 1786 .params = tuner_lg_tdvs_h06xf_params, 1787 .count = ARRAY_SIZE(tuner_lg_tdvs_h06xf_params), 1788 .min = 16 * 54.00, 1789 .max = 16 * 863.00, 1790 .stepsize = 62500, 1791 .initdata = tua603x_agc103, 1792 }, 1793 [TUNER_YMEC_TVF66T5_B_DFF] = { /* Philips PAL */ 1794 .name = "Ymec TVF66T5-B/DFF", 1795 .params = tuner_ymec_tvf66t5_b_dff_params, 1796 .count = ARRAY_SIZE(tuner_ymec_tvf66t5_b_dff_params), 1797 }, 1798 [TUNER_LG_TALN] = { /* LGINNOTEK NTSC / PAL / SECAM */ 1799 .name = "LG TALN series", 1800 .params = tuner_lg_taln_params, 1801 .count = ARRAY_SIZE(tuner_lg_taln_params), 1802 }, 1803 [TUNER_PHILIPS_TD1316] = { /* Philips PAL */ 1804 .name = "Philips TD1316 Hybrid Tuner", 1805 .params = tuner_philips_td1316_params, 1806 .count = ARRAY_SIZE(tuner_philips_td1316_params), 1807 .min = 16 * 87.00, 1808 .max = 16 * 895.00, 1809 .stepsize = 166667, 1810 }, 1811 [TUNER_PHILIPS_TUV1236D] = { /* Philips ATSC */ 1812 .name = "Philips TUV1236D ATSC/NTSC dual in", 1813 .params = tuner_tuv1236d_params, 1814 .count = ARRAY_SIZE(tuner_tuv1236d_params), 1815 .min = 16 * 54.00, 1816 .max = 16 * 864.00, 1817 .stepsize = 62500, 1818 }, 1819 [TUNER_TNF_5335MF] = { /* Tenna PAL/NTSC */ 1820 .name = "Tena TNF 5335 and similar models", 1821 .params = tuner_tnf_5335mf_params, 1822 .count = ARRAY_SIZE(tuner_tnf_5335mf_params), 1823 }, 1824 1825 /* 70-79 */ 1826 [TUNER_SAMSUNG_TCPN_2121P30A] = { /* Samsung NTSC */ 1827 .name = "Samsung TCPN 2121P30A", 1828 .params = tuner_samsung_tcpn_2121p30a_params, 1829 .count = ARRAY_SIZE(tuner_samsung_tcpn_2121p30a_params), 1830 }, 1831 [TUNER_XC2028] = { /* Xceive 2028 */ 1832 .name = "Xceive xc2028/xc3028 tuner", 1833 /* see tuner-xc2028.c for details */ 1834 }, 1835 [TUNER_THOMSON_FE6600] = { /* Thomson PAL / DVB-T */ 1836 .name = "Thomson FE6600", 1837 .params = tuner_thomson_fe6600_params, 1838 .count = ARRAY_SIZE(tuner_thomson_fe6600_params), 1839 .min = 16 * 44.25, 1840 .max = 16 * 858.00, 1841 .stepsize = 166667, 1842 }, 1843 [TUNER_SAMSUNG_TCPG_6121P30A] = { /* Samsung PAL */ 1844 .name = "Samsung TCPG 6121P30A", 1845 .params = tuner_samsung_tcpg_6121p30a_params, 1846 .count = ARRAY_SIZE(tuner_samsung_tcpg_6121p30a_params), 1847 }, 1848 [TUNER_TDA9887] = { /* Philips TDA 9887 IF PLL Demodulator. 1849 This chip is part of some modern tuners */ 1850 .name = "Philips TDA988[5,6,7] IF PLL Demodulator", 1851 /* see tda9887.c for details */ 1852 }, 1853 [TUNER_TEA5761] = { /* Philips RADIO */ 1854 .name = "Philips TEA5761 FM Radio", 1855 /* see tea5767.c for details */ 1856 }, 1857 [TUNER_XC5000] = { /* Xceive 5000 */ 1858 .name = "Xceive 5000 tuner", 1859 /* see xc5000.c for details */ 1860 }, 1861 [TUNER_XC4000] = { /* Xceive 4000 */ 1862 .name = "Xceive 4000 tuner", 1863 /* see xc4000.c for details */ 1864 }, 1865 [TUNER_TCL_MF02GIP_5N] = { /* TCL tuner MF02GIP-5N-E */ 1866 .name = "TCL tuner MF02GIP-5N-E", 1867 .params = tuner_tcl_mf02gip_5n_params, 1868 .count = ARRAY_SIZE(tuner_tcl_mf02gip_5n_params), 1869 }, 1870 [TUNER_PHILIPS_FMD1216MEX_MK3] = { /* Philips PAL */ 1871 .name = "Philips FMD1216MEX MK3 Hybrid Tuner", 1872 .params = tuner_philips_fmd1216mex_mk3_params, 1873 .count = ARRAY_SIZE(tuner_philips_fmd1216mex_mk3_params), 1874 .min = 16 * 50.87, 1875 .max = 16 * 858.00, 1876 .stepsize = 166667, 1877 .initdata = tua603x_agc112, 1878 .sleepdata = (u8[]){ 4, 0x9c, 0x60, 0x85, 0x54 }, 1879 }, 1880 [TUNER_PHILIPS_FM1216MK5] = { /* Philips PAL */ 1881 .name = "Philips PAL/SECAM multi (FM1216 MK5)", 1882 .params = tuner_fm1216mk5_params, 1883 .count = ARRAY_SIZE(tuner_fm1216mk5_params), 1884 }, 1885 1886 /* 80-89 */ 1887 [TUNER_PHILIPS_FQ1216LME_MK3] = { /* PAL/SECAM, Loop-thru, no FM */ 1888 .name = "Philips FQ1216LME MK3 PAL/SECAM w/active loopthrough", 1889 .params = tuner_fq1216lme_mk3_params, 1890 .count = ARRAY_SIZE(tuner_fq1216lme_mk3_params), 1891 }, 1892 1893 [TUNER_PARTSNIC_PTI_5NF05] = { 1894 .name = "Partsnic (Daewoo) PTI-5NF05", 1895 .params = tuner_partsnic_pti_5nf05_params, 1896 .count = ARRAY_SIZE(tuner_partsnic_pti_5nf05_params), 1897 }, 1898 [TUNER_PHILIPS_CU1216L] = { 1899 .name = "Philips CU1216L", 1900 .params = tuner_philips_cu1216l_params, 1901 .count = ARRAY_SIZE(tuner_philips_cu1216l_params), 1902 .stepsize = 62500, 1903 }, 1904 [TUNER_NXP_TDA18271] = { 1905 .name = "NXP TDA18271", 1906 /* see tda18271-fe.c for details */ 1907 }, 1908 [TUNER_SONY_BTF_PXN01Z] = { 1909 .name = "Sony BTF-Pxn01Z", 1910 .params = tuner_sony_btf_pxn01z_params, 1911 .count = ARRAY_SIZE(tuner_sony_btf_pxn01z_params), 1912 }, 1913 [TUNER_PHILIPS_FQ1236_MK5] = { /* NTSC, TDA9885, no FM radio */ 1914 .name = "Philips FQ1236 MK5", 1915 .params = tuner_philips_fq1236_mk5_params, 1916 .count = ARRAY_SIZE(tuner_philips_fq1236_mk5_params), 1917 }, 1918 [TUNER_TENA_TNF_5337] = { /* Tena 5337 MFD */ 1919 .name = "Tena TNF5337 MFD", 1920 .params = tuner_tena_tnf_5337_params, 1921 .count = ARRAY_SIZE(tuner_tena_tnf_5337_params), 1922 }, 1923 [TUNER_XC5000C] = { /* Xceive 5000C */ 1924 .name = "Xceive 5000C tuner", 1925 /* see xc5000.c for details */ 1926 }, 1927 [TUNER_SONY_BTF_PG472Z] = { 1928 .name = "Sony BTF-PG472Z PAL/SECAM", 1929 .params = tuner_sony_btf_pg472z_params, 1930 .count = ARRAY_SIZE(tuner_sony_btf_pg472z_params), 1931 }, 1932 1933 /* 90-99 */ 1934 [TUNER_SONY_BTF_PK467Z] = { 1935 .name = "Sony BTF-PK467Z NTSC-M-JP", 1936 .params = tuner_sony_btf_pg467z_params, 1937 .count = ARRAY_SIZE(tuner_sony_btf_pg467z_params), 1938 }, 1939 [TUNER_SONY_BTF_PB463Z] = { 1940 .name = "Sony BTF-PB463Z NTSC-M", 1941 .params = tuner_sony_btf_pg463z_params, 1942 .count = ARRAY_SIZE(tuner_sony_btf_pg463z_params), 1943 }, 1944 }; 1945 EXPORT_SYMBOL(tuners); 1946 1947 unsigned const int tuner_count = ARRAY_SIZE(tuners); 1948 EXPORT_SYMBOL(tuner_count); 1949 1950 MODULE_DESCRIPTION("Simple tuner device type database"); 1951 MODULE_AUTHOR("Ralph Metzler, Gerd Knorr, Gunther Mayer"); 1952 MODULE_LICENSE("GPL"); 1953