1/* 2 * 3 * device driver for philips saa7134 based TV cards 4 * card-specific stuff. 5 * 6 * (c) 2001-04 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs] 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21 */ 22 23#include <linux/init.h> 24#include <linux/module.h> 25 26#include "saa7134-reg.h" 27#include "saa7134.h" 28#include <media/v4l2-common.h> 29 30/* commly used strings */ 31static char name_mute[] = "mute"; 32static char name_radio[] = "Radio"; 33static char name_tv[] = "Television"; 34static char name_tv_mono[] = "TV (mono only)"; 35static char name_comp1[] = "Composite1"; 36static char name_comp2[] = "Composite2"; 37static char name_comp3[] = "Composite3"; 38static char name_comp4[] = "Composite4"; 39static char name_svideo[] = "S-Video"; 40 41/* ------------------------------------------------------------------ */ 42/* board config info */ 43 44struct saa7134_board saa7134_boards[] = { 45 [SAA7134_BOARD_UNKNOWN] = { 46 .name = "UNKNOWN/GENERIC", 47 .audio_clock = 0x00187de7, 48 .tuner_type = TUNER_ABSENT, 49 .radio_type = UNSET, 50 .tuner_addr = ADDR_UNSET, 51 .radio_addr = ADDR_UNSET, 52 53 .inputs = {{ 54 .name = "default", 55 .vmux = 0, 56 .amux = LINE1, 57 }}, 58 }, 59 [SAA7134_BOARD_PROTEUS_PRO] = { 60 /* /me */ 61 .name = "Proteus Pro [philips reference design]", 62 .audio_clock = 0x00187de7, 63 .tuner_type = TUNER_PHILIPS_PAL, 64 .radio_type = UNSET, 65 .tuner_addr = ADDR_UNSET, 66 .radio_addr = ADDR_UNSET, 67 68 .inputs = {{ 69 .name = name_comp1, 70 .vmux = 0, 71 .amux = LINE1, 72 },{ 73 .name = name_tv, 74 .vmux = 1, 75 .amux = TV, 76 .tv = 1, 77 },{ 78 .name = name_tv_mono, 79 .vmux = 1, 80 .amux = LINE2, 81 .tv = 1, 82 }}, 83 .radio = { 84 .name = name_radio, 85 .amux = LINE2, 86 }, 87 }, 88 [SAA7134_BOARD_FLYVIDEO3000] = { 89 /* "Marco d'Itri" <md@Linux.IT> */ 90 .name = "LifeView FlyVIDEO3000", 91 .audio_clock = 0x00200000, 92 .tuner_type = TUNER_PHILIPS_PAL, 93 .radio_type = UNSET, 94 .tuner_addr = ADDR_UNSET, 95 .radio_addr = ADDR_UNSET, 96 97 .gpiomask = 0xe000, 98 .inputs = {{ 99 .name = name_tv, 100 .vmux = 1, 101 .amux = TV, 102 .gpio = 0x8000, 103 .tv = 1, 104 },{ 105 .name = name_tv_mono, 106 .vmux = 1, 107 .amux = LINE2, 108 .gpio = 0x0000, 109 .tv = 1, 110 },{ 111 .name = name_comp1, 112 .vmux = 0, 113 .amux = LINE2, 114 .gpio = 0x4000, 115 },{ 116 .name = name_comp2, 117 .vmux = 3, 118 .amux = LINE2, 119 .gpio = 0x4000, 120 },{ 121 .name = name_svideo, 122 .vmux = 8, 123 .amux = LINE2, 124 .gpio = 0x4000, 125 }}, 126 .radio = { 127 .name = name_radio, 128 .amux = LINE2, 129 .gpio = 0x2000, 130 }, 131 .mute = { 132 .name = name_mute, 133 .amux = TV, 134 .gpio = 0x8000, 135 }, 136 }, 137 [SAA7134_BOARD_FLYVIDEO2000] = { 138 /* "TC Wan" <tcwan@cs.usm.my> */ 139 .name = "LifeView/Typhoon FlyVIDEO2000", 140 .audio_clock = 0x00200000, 141 .tuner_type = TUNER_LG_PAL_NEW_TAPC, 142 .radio_type = UNSET, 143 .tuner_addr = ADDR_UNSET, 144 .radio_addr = ADDR_UNSET, 145 146 .gpiomask = 0xe000, 147 .inputs = {{ 148 .name = name_tv, 149 .vmux = 1, 150 .amux = LINE2, 151 .gpio = 0x0000, 152 .tv = 1, 153 },{ 154 .name = name_comp1, 155 .vmux = 0, 156 .amux = LINE2, 157 .gpio = 0x4000, 158 },{ 159 .name = name_comp2, 160 .vmux = 3, 161 .amux = LINE2, 162 .gpio = 0x4000, 163 },{ 164 .name = name_svideo, 165 .vmux = 8, 166 .amux = LINE2, 167 .gpio = 0x4000, 168 }}, 169 .radio = { 170 .name = name_radio, 171 .amux = LINE2, 172 .gpio = 0x2000, 173 }, 174 .mute = { 175 .name = name_mute, 176 .amux = LINE2, 177 .gpio = 0x8000, 178 }, 179 }, 180 [SAA7134_BOARD_FLYTVPLATINUM_MINI] = { 181 /* "Arnaud Quette" <aquette@free.fr> */ 182 .name = "LifeView FlyTV Platinum Mini", 183 .audio_clock = 0x00200000, 184 .tuner_type = TUNER_PHILIPS_TDA8290, 185 .radio_type = UNSET, 186 .tuner_addr = ADDR_UNSET, 187 .radio_addr = ADDR_UNSET, 188 189 .inputs = {{ 190 .name = name_tv, 191 .vmux = 1, 192 .amux = TV, 193 .tv = 1, 194 },{ 195 .name = name_comp1, /* Composite signal on S-Video input */ 196 .vmux = 0, 197 .amux = LINE2, 198 },{ 199 .name = name_comp2, /* Composite input */ 200 .vmux = 3, 201 .amux = LINE2, 202 },{ 203 .name = name_svideo, 204 .vmux = 8, 205 .amux = LINE2, 206 }}, 207 }, 208 [SAA7134_BOARD_FLYTVPLATINUM_FM] = { 209 /* LifeView FlyTV Platinum FM (LR214WF) */ 210 /* "Peter Missel <peter.missel@onlinehome.de> */ 211 .name = "LifeView FlyTV Platinum FM / Gold", 212 .audio_clock = 0x00200000, 213 .tuner_type = TUNER_PHILIPS_TDA8290, 214 .radio_type = UNSET, 215 .tuner_addr = ADDR_UNSET, 216 .radio_addr = ADDR_UNSET, 217 218 .gpiomask = 0x1E000, /* Set GP16 and unused 15,14,13 to Output */ 219 .inputs = {{ 220 .name = name_tv, 221 .vmux = 1, 222 .amux = TV, 223 .gpio = 0x10000, /* GP16=1 selects TV input */ 224 .tv = 1, 225 },{ 226/* .name = name_tv_mono, 227 .vmux = 1, 228 .amux = LINE2, 229 .gpio = 0x0000, 230 .tv = 1, 231 },{ 232*/ .name = name_comp1, /* Composite signal on S-Video input */ 233 .vmux = 0, 234 .amux = LINE2, 235/* .gpio = 0x4000, */ 236 },{ 237 .name = name_comp2, /* Composite input */ 238 .vmux = 3, 239 .amux = LINE2, 240/* .gpio = 0x4000, */ 241 },{ 242 .name = name_svideo, /* S-Video signal on S-Video input */ 243 .vmux = 8, 244 .amux = LINE2, 245/* .gpio = 0x4000, */ 246 }}, 247 .radio = { 248 .name = name_radio, 249 .amux = TV, 250 .gpio = 0x00000, /* GP16=0 selects FM radio antenna */ 251 }, 252 .mute = { 253 .name = name_mute, 254 .amux = TV, 255 .gpio = 0x10000, 256 }, 257 }, 258 [SAA7134_BOARD_EMPRESS] = { 259 /* "Gert Vervoort" <gert.vervoort@philips.com> */ 260 .name = "EMPRESS", 261 .audio_clock = 0x00187de7, 262 .tuner_type = TUNER_PHILIPS_PAL, 263 .radio_type = UNSET, 264 .tuner_addr = ADDR_UNSET, 265 .radio_addr = ADDR_UNSET, 266 267 .inputs = {{ 268 .name = name_comp1, 269 .vmux = 0, 270 .amux = LINE1, 271 },{ 272 .name = name_svideo, 273 .vmux = 8, 274 .amux = LINE1, 275 },{ 276 .name = name_tv, 277 .vmux = 1, 278 .amux = LINE2, 279 .tv = 1, 280 }}, 281 .radio = { 282 .name = name_radio, 283 .amux = LINE2, 284 }, 285 .mpeg = SAA7134_MPEG_EMPRESS, 286 .video_out = CCIR656, 287 }, 288 [SAA7134_BOARD_MONSTERTV] = { 289 /* "K.Ohta" <alpha292@bremen.or.jp> */ 290 .name = "SKNet Monster TV", 291 .audio_clock = 0x00187de7, 292 .tuner_type = TUNER_PHILIPS_NTSC_M, 293 .radio_type = UNSET, 294 .tuner_addr = ADDR_UNSET, 295 .radio_addr = ADDR_UNSET, 296 297 .inputs = {{ 298 .name = name_tv, 299 .vmux = 1, 300 .amux = TV, 301 .tv = 1, 302 },{ 303 .name = name_comp1, 304 .vmux = 0, 305 .amux = LINE1, 306 },{ 307 .name = name_svideo, 308 .vmux = 8, 309 .amux = LINE1, 310 }}, 311 .radio = { 312 .name = name_radio, 313 .amux = LINE2, 314 }, 315 }, 316 [SAA7134_BOARD_MD9717] = { 317 .name = "Tevion MD 9717", 318 .audio_clock = 0x00200000, 319 .tuner_type = TUNER_PHILIPS_PAL, 320 .radio_type = UNSET, 321 .tuner_addr = ADDR_UNSET, 322 .radio_addr = ADDR_UNSET, 323 .inputs = {{ 324 .name = name_tv, 325 .vmux = 1, 326 .amux = TV, 327 .tv = 1, 328 },{ 329 .name = name_tv_mono, 330 .vmux = 1, 331 .amux = LINE2, 332 .tv = 1, 333 },{ 334 .name = name_comp1, 335 .vmux = 2, 336 .amux = LINE1, 337 },{ 338 .name = name_comp2, 339 .vmux = 3, 340 .amux = LINE1, 341 },{ 342 .name = name_svideo, 343 .vmux = 8, 344 .amux = LINE1, 345 }}, 346 .radio = { 347 .name = name_radio, 348 .amux = LINE2, 349 }, 350 }, 351 [SAA7134_BOARD_TVSTATION_RDS] = { 352 /* Typhoon TV Tuner RDS: Art.Nr. 50694 */ 353 .name = "KNC One TV-Station RDS / Typhoon TV Tuner RDS", 354 .audio_clock = 0x00200000, 355 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, 356 .radio_type = UNSET, 357 .tuner_addr = ADDR_UNSET, 358 .radio_addr = ADDR_UNSET, 359 .tda9887_conf = TDA9887_PRESENT, 360 .inputs = {{ 361 .name = name_tv, 362 .vmux = 1, 363 .amux = TV, 364 .tv = 1, 365 },{ 366 .name = name_tv_mono, 367 .vmux = 1, 368 .amux = LINE2, 369 .tv = 1, 370 },{ 371 372 .name = name_svideo, 373 .vmux = 8, 374 .amux = LINE1, 375 },{ 376 .name = name_comp1, 377 .vmux = 3, 378 .amux = LINE1, 379 },{ 380 381 .name = "CVid over SVid", 382 .vmux = 0, 383 .amux = LINE1, 384 }}, 385 .radio = { 386 .name = name_radio, 387 .amux = LINE2, 388 }, 389 }, 390 [SAA7134_BOARD_TVSTATION_DVR] = { 391 .name = "KNC One TV-Station DVR", 392 .audio_clock = 0x00200000, 393 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, 394 .radio_type = UNSET, 395 .tuner_addr = ADDR_UNSET, 396 .radio_addr = ADDR_UNSET, 397 .tda9887_conf = TDA9887_PRESENT, 398 .gpiomask = 0x820000, 399 .inputs = {{ 400 .name = name_tv, 401 .vmux = 1, 402 .amux = LINE2, 403 .tv = 1, 404 .gpio = 0x20000, 405 },{ 406 .name = name_svideo, 407 .vmux = 8, 408 .amux = LINE1, 409 .gpio = 0x20000, 410 },{ 411 .name = name_comp1, 412 .vmux = 3, 413 .amux = LINE1, 414 .gpio = 0x20000, 415 }}, 416 .radio = { 417 .name = name_radio, 418 .amux = LINE2, 419 .gpio = 0x20000, 420 }, 421 .mpeg = SAA7134_MPEG_EMPRESS, 422 .video_out = CCIR656, 423 }, 424 [SAA7134_BOARD_CINERGY400] = { 425 .name = "Terratec Cinergy 400 TV", 426 .audio_clock = 0x00200000, 427 .tuner_type = TUNER_PHILIPS_PAL, 428 .radio_type = UNSET, 429 .tuner_addr = ADDR_UNSET, 430 .radio_addr = ADDR_UNSET, 431 .inputs = {{ 432 .name = name_tv, 433 .vmux = 1, 434 .amux = TV, 435 .tv = 1, 436 },{ 437 .name = name_comp1, 438 .vmux = 4, 439 .amux = LINE1, 440 },{ 441 .name = name_svideo, 442 .vmux = 8, 443 .amux = LINE1, 444 },{ 445 .name = name_comp2, /* CVideo over SVideo Connector */ 446 .vmux = 0, 447 .amux = LINE1, 448 }} 449 }, 450 [SAA7134_BOARD_MD5044] = { 451 .name = "Medion 5044", 452 .audio_clock = 0x00187de7, /* was: 0x00200000, */ 453 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, 454 .radio_type = UNSET, 455 .tuner_addr = ADDR_UNSET, 456 .radio_addr = ADDR_UNSET, 457 .tda9887_conf = TDA9887_PRESENT, 458 .inputs = {{ 459 .name = name_tv, 460 .vmux = 1, 461 .amux = TV, 462 .tv = 1, 463 },{ 464 .name = name_tv_mono, 465 .vmux = 1, 466 .amux = LINE2, 467 .tv = 1, 468 },{ 469 .name = name_comp1, 470 .vmux = 0, 471 .amux = LINE2, 472 },{ 473 .name = name_comp2, 474 .vmux = 3, 475 .amux = LINE2, 476 },{ 477 .name = name_svideo, 478 .vmux = 8, 479 .amux = LINE2, 480 }}, 481 .radio = { 482 .name = name_radio, 483 .amux = LINE2, 484 }, 485 }, 486 [SAA7134_BOARD_KWORLD] = { 487 .name = "Kworld/KuroutoShikou SAA7130-TVPCI", 488 .audio_clock = 0x00187de7, 489 .tuner_type = TUNER_PHILIPS_NTSC_M, 490 .radio_type = UNSET, 491 .tuner_addr = ADDR_UNSET, 492 .radio_addr = ADDR_UNSET, 493 .inputs = {{ 494 .name = name_svideo, 495 .vmux = 8, 496 .amux = LINE1, 497 },{ 498 .name = name_comp1, 499 .vmux = 3, 500 .amux = LINE1, 501 },{ 502 .name = name_tv, 503 .vmux = 1, 504 .amux = LINE2, 505 .tv = 1, 506 }}, 507 }, 508 [SAA7134_BOARD_CINERGY600] = { 509 .name = "Terratec Cinergy 600 TV", 510 .audio_clock = 0x00200000, 511 .tuner_type = TUNER_PHILIPS_PAL, 512 .radio_type = UNSET, 513 .tuner_addr = ADDR_UNSET, 514 .radio_addr = ADDR_UNSET, 515 .tda9887_conf = TDA9887_PRESENT, 516 .inputs = {{ 517 .name = name_tv, 518 .vmux = 1, 519 .amux = TV, 520 .tv = 1, 521 },{ 522 .name = name_comp1, 523 .vmux = 4, 524 .amux = LINE1, 525 },{ 526 .name = name_svideo, 527 .vmux = 8, 528 .amux = LINE1, 529 },{ 530 .name = name_comp2, /* CVideo over SVideo Connector */ 531 .vmux = 0, 532 .amux = LINE1, 533 }}, 534 .radio = { 535 .name = name_radio, 536 .amux = LINE2, 537 }, 538 }, 539 [SAA7134_BOARD_MD7134] = { 540 .name = "Medion 7134", 541 .audio_clock = 0x00187de7, 542 .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3, 543 .radio_type = UNSET, 544 .tuner_addr = ADDR_UNSET, 545 .radio_addr = ADDR_UNSET, 546 .tda9887_conf = TDA9887_PRESENT, 547 .mpeg = SAA7134_MPEG_DVB, 548 .inputs = {{ 549 .name = name_tv, 550 .vmux = 1, 551 .amux = TV, 552 .tv = 1, 553 },{ 554 .name = name_comp1, 555 .vmux = 0, 556 .amux = LINE1, 557 },{ 558 .name = name_svideo, 559 .vmux = 8, 560 .amux = LINE1, 561 }}, 562 .radio = { 563 .name = name_radio, 564 .amux = LINE2, 565 }, 566 }, 567 [SAA7134_BOARD_TYPHOON_90031] = { 568 /* aka Typhoon "TV+Radio", Art.Nr 90031 */ 569 /* Tom Zoerner <tomzo at users sourceforge net> */ 570 .name = "Typhoon TV+Radio 90031", 571 .audio_clock = 0x00200000, 572 .tuner_type = TUNER_PHILIPS_PAL, 573 .radio_type = UNSET, 574 .tuner_addr = ADDR_UNSET, 575 .radio_addr = ADDR_UNSET, 576 .tda9887_conf = TDA9887_PRESENT, 577 .inputs = {{ 578 .name = name_tv, 579 .vmux = 1, 580 .amux = TV, 581 .tv = 1, 582 },{ 583 .name = name_comp1, 584 .vmux = 3, 585 .amux = LINE1, 586 },{ 587 .name = name_svideo, 588 .vmux = 8, 589 .amux = LINE1, 590 }}, 591 .radio = { 592 .name = name_radio, 593 .amux = LINE2, 594 }, 595 }, 596 [SAA7134_BOARD_ELSA] = { 597 .name = "ELSA EX-VISION 300TV", 598 .audio_clock = 0x00187de7, 599 .tuner_type = TUNER_HITACHI_NTSC, 600 .radio_type = UNSET, 601 .tuner_addr = ADDR_UNSET, 602 .radio_addr = ADDR_UNSET, 603 .inputs = {{ 604 .name = name_svideo, 605 .vmux = 8, 606 .amux = LINE1, 607 },{ 608 .name = name_comp1, 609 .vmux = 0, 610 .amux = LINE1, 611 },{ 612 .name = name_tv, 613 .vmux = 4, 614 .amux = LINE2, 615 .tv = 1, 616 }}, 617 }, 618 [SAA7134_BOARD_ELSA_500TV] = { 619 .name = "ELSA EX-VISION 500TV", 620 .audio_clock = 0x00187de7, 621 .tuner_type = TUNER_HITACHI_NTSC, 622 .radio_type = UNSET, 623 .tuner_addr = ADDR_UNSET, 624 .radio_addr = ADDR_UNSET, 625 .inputs = {{ 626 .name = name_svideo, 627 .vmux = 7, 628 .amux = LINE1, 629 },{ 630 .name = name_tv, 631 .vmux = 8, 632 .amux = TV, 633 .tv = 1, 634 },{ 635 .name = name_tv_mono, 636 .vmux = 8, 637 .amux = LINE2, 638 .tv = 1, 639 }}, 640 }, 641 [SAA7134_BOARD_ELSA_700TV] = { 642 .name = "ELSA EX-VISION 700TV", 643 .audio_clock = 0x00187de7, 644 .tuner_type = TUNER_HITACHI_NTSC, 645 .radio_type = UNSET, 646 .tuner_addr = ADDR_UNSET, 647 .radio_addr = ADDR_UNSET, 648 .inputs = {{ 649 .name = name_tv, 650 .vmux = 4, 651 .amux = LINE2, 652 .tv = 1, 653 },{ 654 .name = name_comp1, 655 .vmux = 6, 656 .amux = LINE1, 657 },{ 658 .name = name_svideo, 659 .vmux = 7, 660 .amux = LINE1, 661 }}, 662 .mute = { 663 .name = name_mute, 664 .amux = TV, 665 }, 666 }, 667 [SAA7134_BOARD_ASUSTeK_TVFM7134] = { 668 .name = "ASUS TV-FM 7134", 669 .audio_clock = 0x00187de7, 670 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, 671 .radio_type = UNSET, 672 .tuner_addr = ADDR_UNSET, 673 .radio_addr = ADDR_UNSET, 674 .tda9887_conf = TDA9887_PRESENT, 675 .inputs = {{ 676 .name = name_tv, 677 .vmux = 1, 678 .amux = TV, 679 .tv = 1, 680 },{ 681 .name = name_comp1, 682 .vmux = 4, 683 .amux = LINE2, 684 },{ 685 .name = name_svideo, 686 .vmux = 6, 687 .amux = LINE2, 688 }}, 689 .radio = { 690 .name = name_radio, 691 .amux = LINE1, 692 }, 693 }, 694 [SAA7134_BOARD_ASUSTeK_TVFM7135] = { 695 .name = "ASUS TV-FM 7135", 696 .audio_clock = 0x00187de7, 697 .tuner_type = TUNER_PHILIPS_TDA8290, 698 .radio_type = UNSET, 699 .tuner_addr = ADDR_UNSET, 700 .radio_addr = ADDR_UNSET, 701 .gpiomask = 0x200000, 702 .inputs = {{ 703 .name = name_tv, 704 .vmux = 1, 705 .amux = TV, 706 .gpio = 0x0000, 707 .tv = 1, 708 },{ 709 .name = name_comp1, 710 .vmux = 4, 711 .amux = LINE2, 712 .gpio = 0x0000, 713 },{ 714 .name = name_svideo, 715 .vmux = 6, 716 .amux = LINE2, 717 .gpio = 0x0000, 718 }}, 719 .radio = { 720 .name = name_radio, 721 .amux = TV, 722 .gpio = 0x200000, 723 }, 724 .mute = { 725 .name = name_mute, 726 .gpio = 0x0000, 727 }, 728 729 }, 730 [SAA7134_BOARD_VA1000POWER] = { 731 .name = "AOPEN VA1000 POWER", 732 .audio_clock = 0x00187de7, 733 .tuner_type = TUNER_PHILIPS_NTSC, 734 .radio_type = UNSET, 735 .tuner_addr = ADDR_UNSET, 736 .radio_addr = ADDR_UNSET, 737 .inputs = {{ 738 .name = name_svideo, 739 .vmux = 8, 740 .amux = LINE1, 741 },{ 742 .name = name_comp1, 743 .vmux = 3, 744 .amux = LINE1, 745 },{ 746 .name = name_tv, 747 .vmux = 1, 748 .amux = LINE2, 749 .tv = 1, 750 }}, 751 }, 752 [SAA7134_BOARD_10MOONSTVMASTER] = { 753 /* "lilicheng" <llc@linuxfans.org> */ 754 .name = "10MOONS PCI TV CAPTURE CARD", 755 .audio_clock = 0x00200000, 756 .tuner_type = TUNER_LG_PAL_NEW_TAPC, 757 .radio_type = UNSET, 758 .tuner_addr = ADDR_UNSET, 759 .radio_addr = ADDR_UNSET, 760 .gpiomask = 0xe000, 761 .inputs = {{ 762 .name = name_tv, 763 .vmux = 1, 764 .amux = LINE2, 765 .gpio = 0x0000, 766 .tv = 1, 767 },{ 768 .name = name_comp1, 769 .vmux = 0, 770 .amux = LINE2, 771 .gpio = 0x4000, 772 },{ 773 .name = name_comp2, 774 .vmux = 3, 775 .amux = LINE2, 776 .gpio = 0x4000, 777 },{ 778 .name = name_svideo, 779 .vmux = 8, 780 .amux = LINE2, 781 .gpio = 0x4000, 782 }}, 783 .radio = { 784 .name = name_radio, 785 .amux = LINE2, 786 .gpio = 0x2000, 787 }, 788 .mute = { 789 .name = name_mute, 790 .amux = LINE2, 791 .gpio = 0x8000, 792 }, 793 }, 794 [SAA7134_BOARD_BMK_MPEX_NOTUNER] = { 795 /* "Andrew de Quincey" <adq@lidskialf.net> */ 796 .name = "BMK MPEX No Tuner", 797 .audio_clock = 0x200000, 798 .tuner_type = TUNER_ABSENT, 799 .radio_type = UNSET, 800 .tuner_addr = ADDR_UNSET, 801 .radio_addr = ADDR_UNSET, 802 .inputs = {{ 803 .name = name_comp1, 804 .vmux = 4, 805 .amux = LINE1, 806 },{ 807 .name = name_comp2, 808 .vmux = 3, 809 .amux = LINE1, 810 },{ 811 .name = name_comp3, 812 .vmux = 0, 813 .amux = LINE1, 814 },{ 815 .name = name_comp4, 816 .vmux = 1, 817 .amux = LINE1, 818 },{ 819 .name = name_svideo, 820 .vmux = 8, 821 .amux = LINE1, 822 }}, 823 .mpeg = SAA7134_MPEG_EMPRESS, 824 .video_out = CCIR656, 825 }, 826 [SAA7134_BOARD_VIDEOMATE_TV] = { 827 .name = "Compro VideoMate TV", 828 .audio_clock = 0x00187de7, 829 .tuner_type = TUNER_PHILIPS_NTSC_M, 830 .radio_type = UNSET, 831 .tuner_addr = ADDR_UNSET, 832 .radio_addr = ADDR_UNSET, 833 .inputs = {{ 834 .name = name_svideo, 835 .vmux = 8, 836 .amux = LINE1, 837 },{ 838 .name = name_comp1, 839 .vmux = 3, 840 .amux = LINE1, 841 },{ 842 .name = name_tv, 843 .vmux = 1, 844 .amux = LINE2, 845 .tv = 1, 846 }}, 847 }, 848 [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS] = { 849 .name = "Compro VideoMate TV Gold+", 850 .audio_clock = 0x00187de7, 851 .tuner_type = TUNER_PHILIPS_NTSC_M, 852 .gpiomask = 0x800c0000, 853 .radio_type = UNSET, 854 .tuner_addr = ADDR_UNSET, 855 .radio_addr = ADDR_UNSET, 856 .inputs = {{ 857 .name = name_svideo, 858 .vmux = 8, 859 .amux = LINE1, 860 .gpio = 0x06c00012, 861 },{ 862 .name = name_comp1, 863 .vmux = 3, 864 .amux = LINE1, 865 .gpio = 0x0ac20012, 866 },{ 867 .name = name_tv, 868 .vmux = 1, 869 .amux = LINE2, 870 .gpio = 0x08c20012, 871 .tv = 1, 872 }}, /* radio and probably mute is missing */ 873 }, 874 [SAA7134_BOARD_CRONOS_PLUS] = { 875 /* 876 gpio pins: 877 0 .. 3 BASE_ID 878 4 .. 7 PROTECT_ID 879 8 .. 11 USER_OUT 880 12 .. 13 USER_IN 881 14 .. 15 VIDIN_SEL 882 */ 883 .name = "Matrox CronosPlus", 884 .tuner_type = TUNER_ABSENT, 885 .radio_type = UNSET, 886 .tuner_addr = ADDR_UNSET, 887 .radio_addr = ADDR_UNSET, 888 .gpiomask = 0xcf00, 889 .inputs = {{ 890 .name = name_comp1, 891 .vmux = 0, 892 .gpio = 2 << 14, 893 },{ 894 .name = name_comp2, 895 .vmux = 0, 896 .gpio = 1 << 14, 897 },{ 898 .name = name_comp3, 899 .vmux = 0, 900 .gpio = 0 << 14, 901 },{ 902 .name = name_comp4, 903 .vmux = 0, 904 .gpio = 3 << 14, 905 },{ 906 .name = name_svideo, 907 .vmux = 8, 908 .gpio = 2 << 14, 909 }}, 910 }, 911 [SAA7134_BOARD_MD2819] = { 912 .name = "AverMedia M156 / Medion 2819", 913 .audio_clock = 0x00187de7, 914 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, 915 .radio_type = UNSET, 916 .tuner_addr = ADDR_UNSET, 917 .radio_addr = ADDR_UNSET, 918 .tda9887_conf = TDA9887_PRESENT, 919 .inputs = {{ 920 .name = name_tv, 921 .vmux = 1, 922 .amux = TV, 923 .tv = 1, 924 },{ 925 .name = name_comp1, 926 .vmux = 0, 927 .amux = LINE2, 928 },{ 929 .name = name_comp2, 930 .vmux = 3, 931 .amux = LINE2, 932 },{ 933 .name = name_svideo, 934 .vmux = 8, 935 .amux = LINE2, 936 }}, 937 .radio = { 938 .name = name_radio, 939 .amux = LINE2, 940 }, 941 }, 942 [SAA7134_BOARD_BMK_MPEX_TUNER] = { 943 /* "Greg Wickham <greg.wickham@grangenet.net> */ 944 .name = "BMK MPEX Tuner", 945 .audio_clock = 0x200000, 946 .tuner_type = TUNER_PHILIPS_PAL, 947 .radio_type = UNSET, 948 .tuner_addr = ADDR_UNSET, 949 .radio_addr = ADDR_UNSET, 950 .inputs = {{ 951 .name = name_comp1, 952 .vmux = 1, 953 .amux = LINE1, 954 },{ 955 .name = name_svideo, 956 .vmux = 8, 957 .amux = LINE1, 958 },{ 959 .name = name_tv, 960 .vmux = 3, 961 .amux = TV, 962 .tv = 1, 963 }}, 964 .mpeg = SAA7134_MPEG_EMPRESS, 965 .video_out = CCIR656, 966 }, 967 [SAA7134_BOARD_ASUSTEK_TVFM7133] = { 968 .name = "ASUS TV-FM 7133", 969 .audio_clock = 0x00187de7, 970 /* probably wrong, the 7133 one is the NTSC version ... 971 * .tuner_type = TUNER_PHILIPS_FM1236_MK3 */ 972 .tuner_type = TUNER_LG_NTSC_NEW_TAPC, 973 .radio_type = UNSET, 974 .tuner_addr = ADDR_UNSET, 975 .radio_addr = ADDR_UNSET, 976 .tda9887_conf = TDA9887_PRESENT, 977 .inputs = {{ 978 .name = name_tv, 979 .vmux = 1, 980 .amux = TV, 981 .tv = 1, 982 983 },{ 984 .name = name_comp1, 985 .vmux = 4, 986 .amux = LINE2, 987 },{ 988 .name = name_svideo, 989 .vmux = 6, 990 .amux = LINE2, 991 }}, 992 .radio = { 993 .name = name_radio, 994 .amux = LINE1, 995 }, 996 }, 997 [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = { 998 .name = "Pinnacle PCTV Stereo (saa7134)", 999 .audio_clock = 0x00187de7, 1000 .tuner_type = TUNER_MT2032, 1001 .radio_type = UNSET, 1002 .tuner_addr = ADDR_UNSET, 1003 .radio_addr = ADDR_UNSET, 1004 .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE, 1005 .inputs = {{ 1006 .name = name_tv, 1007 .vmux = 3, 1008 .amux = TV, 1009 .tv = 1, 1010 },{ 1011 .name = name_comp1, 1012 .vmux = 0, 1013 .amux = LINE2, 1014 },{ 1015 .name = name_comp2, 1016 .vmux = 1, 1017 .amux = LINE2, 1018 },{ 1019 .name = name_svideo, 1020 .vmux = 8, 1021 .amux = LINE2, 1022 }}, 1023 }, 1024 [SAA7134_BOARD_MANLI_MTV002] = { 1025 /* Ognjen Nastic <ognjen@logosoft.ba> */ 1026 .name = "Manli MuchTV M-TV002/Behold TV 403 FM", 1027 .audio_clock = 0x00200000, 1028 .tuner_type = TUNER_PHILIPS_PAL, 1029 .radio_type = UNSET, 1030 .tuner_addr = ADDR_UNSET, 1031 .radio_addr = ADDR_UNSET, 1032 .inputs = {{ 1033 .name = name_svideo, 1034 .vmux = 8, 1035 .amux = LINE1, 1036 },{ 1037 .name = name_comp1, 1038 .vmux = 1, 1039 .amux = LINE1, 1040 },{ 1041 .name = name_tv, 1042 .vmux = 3, 1043 .amux = LINE2, 1044 .tv = 1, 1045 }}, 1046 .radio = { 1047 .name = name_radio, 1048 .amux = LINE2, 1049 }, 1050 }, 1051 [SAA7134_BOARD_MANLI_MTV001] = { 1052 /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */ 1053 .name = "Manli MuchTV M-TV001/Behold TV 401", 1054 .audio_clock = 0x00200000, 1055 .tuner_type = TUNER_PHILIPS_PAL, 1056 .radio_type = UNSET, 1057 .tuner_addr = ADDR_UNSET, 1058 .radio_addr = ADDR_UNSET, 1059 .inputs = {{ 1060 .name = name_svideo, 1061 .vmux = 8, 1062 .amux = LINE1, 1063 },{ 1064 .name = name_comp1, 1065 .vmux = 1, 1066 .amux = LINE1, 1067 },{ 1068 .name = name_tv, 1069 .vmux = 3, 1070 .amux = LINE2, 1071 .tv = 1, 1072 }}, 1073 .mute = { 1074 .name = name_mute, 1075 .amux = LINE1, 1076 }, 1077 }, 1078 [SAA7134_BOARD_TG3000TV] = { 1079 /* TransGear 3000TV */ 1080 .name = "Nagase Sangyo TransGear 3000TV", 1081 .audio_clock = 0x00187de7, 1082 .tuner_type = TUNER_PHILIPS_NTSC_M, 1083 .radio_type = UNSET, 1084 .tuner_addr = ADDR_UNSET, 1085 .radio_addr = ADDR_UNSET, 1086 .inputs = {{ 1087 .name = name_tv, 1088 .vmux = 1, 1089 .amux = LINE2, 1090 .tv = 1, 1091 },{ 1092 .name = name_comp1, 1093 .vmux = 3, 1094 .amux = LINE2, 1095 },{ 1096 .name = name_svideo, 1097 .vmux = 8, 1098 .amux = LINE2, 1099 }}, 1100 }, 1101 [SAA7134_BOARD_ECS_TVP3XP] = { 1102 .name = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ", 1103 .audio_clock = 0x187de7, /* xtal 32.1 MHz */ 1104 .tuner_type = TUNER_PHILIPS_PAL, 1105 .radio_type = UNSET, 1106 .tuner_addr = ADDR_UNSET, 1107 .radio_addr = ADDR_UNSET, 1108 .inputs = {{ 1109 .name = name_tv, 1110 .vmux = 1, 1111 .amux = TV, 1112 .tv = 1, 1113 },{ 1114 .name = name_tv_mono, 1115 .vmux = 1, 1116 .amux = LINE2, 1117 .tv = 1, 1118 },{ 1119 .name = name_comp1, 1120 .vmux = 3, 1121 .amux = LINE1, 1122 },{ 1123 .name = name_svideo, 1124 .vmux = 8, 1125 .amux = LINE1, 1126 },{ 1127 .name = "CVid over SVid", 1128 .vmux = 0, 1129 .amux = LINE1, 1130 }}, 1131 .radio = { 1132 .name = name_radio, 1133 .amux = LINE2, 1134 }, 1135 }, 1136 [SAA7134_BOARD_ECS_TVP3XP_4CB5] = { 1137 .name = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)", 1138 .audio_clock = 0x187de7, 1139 .tuner_type = TUNER_PHILIPS_NTSC, 1140 .radio_type = UNSET, 1141 .tuner_addr = ADDR_UNSET, 1142 .radio_addr = ADDR_UNSET, 1143 .inputs = {{ 1144 .name = name_tv, 1145 .vmux = 1, 1146 .amux = TV, 1147 .tv = 1, 1148 },{ 1149 .name = name_tv_mono, 1150 .vmux = 1, 1151 .amux = LINE2, 1152 .tv = 1, 1153 },{ 1154 .name = name_comp1, 1155 .vmux = 3, 1156 .amux = LINE1, 1157 },{ 1158 .name = name_svideo, 1159 .vmux = 8, 1160 .amux = LINE1, 1161 },{ 1162 .name = "CVid over SVid", 1163 .vmux = 0, 1164 .amux = LINE1, 1165 }}, 1166 .radio = { 1167 .name = name_radio, 1168 .amux = LINE2, 1169 }, 1170 }, 1171 [SAA7134_BOARD_ECS_TVP3XP_4CB6] = { 1172 /* Barry Scott <barry.scott@onelan.co.uk> */ 1173 .name = "Elitegroup ECS TVP3XP FM1246 Tuner Card (PAL,FM)", 1174 .audio_clock = 0x187de7, 1175 .tuner_type = TUNER_PHILIPS_PAL_I, 1176 .radio_type = UNSET, 1177 .tuner_addr = ADDR_UNSET, 1178 .radio_addr = ADDR_UNSET, 1179 .inputs = {{ 1180 .name = name_tv, 1181 .vmux = 1, 1182 .amux = TV, 1183 .tv = 1, 1184 },{ 1185 .name = name_tv_mono, 1186 .vmux = 1, 1187 .amux = LINE2, 1188 .tv = 1, 1189 },{ 1190 .name = name_comp1, 1191 .vmux = 3, 1192 .amux = LINE1, 1193 },{ 1194 .name = name_svideo, 1195 .vmux = 8, 1196 .amux = LINE1, 1197 },{ 1198 .name = "CVid over SVid", 1199 .vmux = 0, 1200 .amux = LINE1, 1201 }}, 1202 .radio = { 1203 .name = name_radio, 1204 .amux = LINE2, 1205 }, 1206 }, 1207 [SAA7134_BOARD_AVACSSMARTTV] = { 1208 /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */ 1209 .name = "AVACS SmartTV", 1210 .audio_clock = 0x00187de7, 1211 .tuner_type = TUNER_PHILIPS_PAL, 1212 .radio_type = UNSET, 1213 .tuner_addr = ADDR_UNSET, 1214 .radio_addr = ADDR_UNSET, 1215 .inputs = {{ 1216 .name = name_tv, 1217 .vmux = 1, 1218 .amux = TV, 1219 .tv = 1, 1220 },{ 1221 .name = name_tv_mono, 1222 .vmux = 1, 1223 .amux = LINE2, 1224 .tv = 1, 1225 },{ 1226 .name = name_comp1, 1227 .vmux = 0, 1228 .amux = LINE2, 1229 },{ 1230 .name = name_comp2, 1231 .vmux = 3, 1232 .amux = LINE2, 1233 },{ 1234 .name = name_svideo, 1235 .vmux = 8, 1236 .amux = LINE2, 1237 }}, 1238 .radio = { 1239 .name = name_radio, 1240 .amux = LINE2, 1241 .gpio = 0x200000, 1242 }, 1243 }, 1244 [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = { 1245 /* Michael Smith <msmith@cbnco.com> */ 1246 .name = "AVerMedia DVD EZMaker", 1247 .audio_clock = 0x00187de7, 1248 .tuner_type = TUNER_ABSENT, 1249 .radio_type = UNSET, 1250 .tuner_addr = ADDR_UNSET, 1251 .radio_addr = ADDR_UNSET, 1252 .inputs = {{ 1253 .name = name_comp1, 1254 .vmux = 3, 1255 },{ 1256 .name = name_svideo, 1257 .vmux = 8, 1258 }}, 1259 }, 1260 [SAA7134_BOARD_NOVAC_PRIMETV7133] = { 1261 /* toshii@netbsd.org */ 1262 .name = "Noval Prime TV 7133", 1263 .audio_clock = 0x00200000, 1264 .tuner_type = TUNER_ALPS_TSBH1_NTSC, 1265 .radio_type = UNSET, 1266 .tuner_addr = ADDR_UNSET, 1267 .radio_addr = ADDR_UNSET, 1268 .inputs = {{ 1269 .name = name_comp1, 1270 .vmux = 3, 1271 },{ 1272 .name = name_tv, 1273 .vmux = 1, 1274 .amux = TV, 1275 .tv = 1, 1276 },{ 1277 .name = name_svideo, 1278 .vmux = 8, 1279 }}, 1280 }, 1281 [SAA7134_BOARD_AVERMEDIA_STUDIO_305] = { 1282 .name = "AverMedia AverTV Studio 305", 1283 .audio_clock = 0x00187de7, 1284 .tuner_type = TUNER_PHILIPS_FM1256_IH3, 1285 .radio_type = UNSET, 1286 .tuner_addr = ADDR_UNSET, 1287 .radio_addr = ADDR_UNSET, 1288 .tda9887_conf = TDA9887_PRESENT, 1289 .inputs = {{ 1290 .name = name_tv, 1291 .vmux = 1, 1292 .amux = LINE2, 1293 .tv = 1, 1294 },{ 1295 .name = name_comp1, 1296 .vmux = 0, 1297 .amux = LINE2, 1298 },{ 1299 .name = name_comp2, 1300 .vmux = 3, 1301 .amux = LINE2, 1302 },{ 1303 .name = name_svideo, 1304 .vmux = 8, 1305 .amux = LINE2, 1306 }}, 1307 .radio = { 1308 .name = name_radio, 1309 .amux = LINE2, 1310 }, 1311 .mute = { 1312 .name = name_mute, 1313 .amux = LINE1, 1314 }, 1315 }, 1316 [SAA7134_BOARD_UPMOST_PURPLE_TV] = { 1317 .name = "UPMOST PURPLE TV", 1318 .audio_clock = 0x00187de7, 1319 .tuner_type = TUNER_PHILIPS_FM1236_MK3, 1320 .radio_type = UNSET, 1321 .tuner_addr = ADDR_UNSET, 1322 .radio_addr = ADDR_UNSET, 1323 .tda9887_conf = TDA9887_PRESENT, 1324 .inputs = {{ 1325 .name = name_tv, 1326 .vmux = 7, 1327 .amux = TV, 1328 .tv = 1, 1329 },{ 1330 .name = name_svideo, 1331 .vmux = 7, 1332 .amux = LINE1, 1333 }}, 1334 }, 1335 [SAA7134_BOARD_ITEMS_MTV005] = { 1336 /* Norman Jonas <normanjonas@arcor.de> */ 1337 .name = "Items MuchTV Plus / IT-005", 1338 .audio_clock = 0x00187de7, 1339 .tuner_type = TUNER_PHILIPS_PAL, 1340 .radio_type = UNSET, 1341 .tuner_addr = ADDR_UNSET, 1342 .radio_addr = ADDR_UNSET, 1343 .inputs = {{ 1344 .name = name_tv, 1345 .vmux = 3, 1346 .amux = TV, 1347 .tv = 1, 1348 },{ 1349 .name = name_comp1, 1350 .vmux = 1, 1351 .amux = LINE1, 1352 },{ 1353 .name = name_svideo, 1354 .vmux = 8, 1355 .amux = LINE1, 1356 }}, 1357 .radio = { 1358 .name = name_radio, 1359 .amux = LINE2, 1360 }, 1361 }, 1362 [SAA7134_BOARD_CINERGY200] = { 1363 .name = "Terratec Cinergy 200 TV", 1364 .audio_clock = 0x00200000, 1365 .tuner_type = TUNER_PHILIPS_PAL, 1366 .radio_type = UNSET, 1367 .tuner_addr = ADDR_UNSET, 1368 .radio_addr = ADDR_UNSET, 1369 .inputs = {{ 1370 .name = name_tv, 1371 .vmux = 1, 1372 .amux = LINE2, 1373 .tv = 1, 1374 },{ 1375 .name = name_comp1, 1376 .vmux = 4, 1377 .amux = LINE1, 1378 },{ 1379 .name = name_svideo, 1380 .vmux = 8, 1381 .amux = LINE1, 1382 },{ 1383 .name = name_comp2, /* CVideo over SVideo Connector */ 1384 .vmux = 0, 1385 .amux = LINE1, 1386 }}, 1387 .mute = { 1388 .name = name_mute, 1389 .amux = LINE2, 1390 }, 1391 }, 1392 [SAA7134_BOARD_VIDEOMATE_TV_PVR] = { 1393 /* Alain St-Denis <alain@topaze.homeip.net> */ 1394 .name = "Compro VideoMate TV PVR/FM", 1395 .audio_clock = 0x00187de7, 1396 .tuner_type = TUNER_PHILIPS_NTSC_M, 1397 .radio_type = UNSET, 1398 .tuner_addr = ADDR_UNSET, 1399 .radio_addr = ADDR_UNSET, 1400 .gpiomask = 0x808c0080, 1401 .inputs = {{ 1402 .name = name_svideo, 1403 .vmux = 8, 1404 .amux = LINE1, 1405 .gpio = 0x00080, 1406 },{ 1407 .name = name_comp1, 1408 .vmux = 3, 1409 .amux = LINE1, 1410 .gpio = 0x00080, 1411 },{ 1412 .name = name_tv, 1413 .vmux = 1, 1414 .amux = LINE2_LEFT, 1415 .tv = 1, 1416 .gpio = 0x00080, 1417 }}, 1418 .radio = { 1419 .name = name_radio, 1420 .amux = LINE2, 1421 .gpio = 0x80000, 1422 }, 1423 .mute = { 1424 .name = name_mute, 1425 .amux = LINE2, 1426 .gpio = 0x40000, 1427 }, 1428 }, 1429 [SAA7134_BOARD_SABRENT_SBTTVFM] = { 1430 /* Michael Rodriguez-Torrent <mrtorrent@asu.edu> */ 1431 .name = "Sabrent SBT-TVFM (saa7130)", 1432 .audio_clock = 0x00187de7, 1433 .tuner_type = TUNER_PHILIPS_NTSC_M, 1434 .radio_type = UNSET, 1435 .tuner_addr = ADDR_UNSET, 1436 .radio_addr = ADDR_UNSET, 1437 .inputs = {{ 1438 .name = name_comp1, 1439 .vmux = 1, 1440 .amux = LINE1, 1441 },{ 1442 .name = name_tv, 1443 .vmux = 3, 1444 .amux = LINE2, 1445 .tv = 1, 1446 },{ 1447 .name = name_svideo, 1448 .vmux = 8, 1449 .amux = LINE1, 1450 }}, 1451 .radio = { 1452 .name = name_radio, 1453 .amux = LINE2, 1454 }, 1455 }, 1456 [SAA7134_BOARD_ZOLID_XPERT_TV7134] = { 1457 /* Helge Jensen <helge.jensen@slog.dk> */ 1458 .name = ":Zolid Xpert TV7134", 1459 .audio_clock = 0x00187de7, 1460 .tuner_type = TUNER_PHILIPS_NTSC, 1461 .radio_type = UNSET, 1462 .tuner_addr = ADDR_UNSET, 1463 .radio_addr = ADDR_UNSET, 1464 .inputs = {{ 1465 .name = name_svideo, 1466 .vmux = 8, 1467 .amux = LINE1, 1468 },{ 1469 .name = name_comp1, 1470 .vmux = 3, 1471 .amux = LINE1, 1472 },{ 1473 .name = name_tv, 1474 .vmux = 1, 1475 .amux = LINE2, 1476 .tv = 1, 1477 }}, 1478 }, 1479 [SAA7134_BOARD_EMPIRE_PCI_TV_RADIO_LE] = { 1480 /* "Matteo Az" <matte.az@nospam.libero.it> ;-) */ 1481 .name = "Empire PCI TV-Radio LE", 1482 .audio_clock = 0x00187de7, 1483 .tuner_type = TUNER_PHILIPS_PAL, 1484 .radio_type = UNSET, 1485 .tuner_addr = ADDR_UNSET, 1486 .radio_addr = ADDR_UNSET, 1487 .gpiomask = 0x4000, 1488 .inputs = {{ 1489 .name = name_tv_mono, 1490 .vmux = 1, 1491 .amux = LINE2, 1492 .gpio = 0x8000, 1493 .tv = 1, 1494 },{ 1495 .name = name_comp1, 1496 .vmux = 3, 1497 .amux = LINE1, 1498 .gpio = 0x8000, 1499 },{ 1500 .name = name_svideo, 1501 .vmux = 6, 1502 .amux = LINE1, 1503 .gpio = 0x8000, 1504 }}, 1505 .radio = { 1506 .name = name_radio, 1507 .amux = LINE1, 1508 .gpio = 0x8000, 1509 }, 1510 .mute = { 1511 .name = name_mute, 1512 .amux = TV, 1513 .gpio =0x8000, 1514 } 1515 }, 1516 [SAA7134_BOARD_AVERMEDIA_STUDIO_307] = { 1517 /* 1518 Nickolay V. Shmyrev <nshmyrev@yandex.ru> 1519 Lots of thanks to Andrey Zolotarev <zolotarev_andrey@mail.ru> 1520 */ 1521 .name = "Avermedia AVerTV Studio 307", 1522 .audio_clock = 0x00187de7, 1523 .tuner_type = TUNER_PHILIPS_FM1256_IH3, 1524 .radio_type = UNSET, 1525 .tuner_addr = ADDR_UNSET, 1526 .radio_addr = ADDR_UNSET, 1527 .tda9887_conf = TDA9887_PRESENT, 1528 .gpiomask = 0x03, 1529 .inputs = {{ 1530 .name = name_tv, 1531 .vmux = 1, 1532 .amux = TV, 1533 .tv = 1, 1534 .gpio = 0x00, 1535 },{ 1536 .name = name_comp1, 1537 .vmux = 0, 1538 .amux = LINE2, 1539 .gpio = 0x00, 1540 },{ 1541 .name = name_comp2, 1542 .vmux = 3, 1543 .amux = LINE2, 1544 .gpio = 0x00, 1545 },{ 1546 .name = name_svideo, 1547 .vmux = 8, 1548 .amux = LINE2, 1549 .gpio = 0x00, 1550 }}, 1551 .radio = { 1552 .name = name_radio, 1553 .amux = LINE1, 1554 .gpio = 0x01, 1555 }, 1556 .mute = { 1557 .name = name_mute, 1558 .amux = LINE1, 1559 .gpio = 0x00, 1560 }, 1561 }, 1562 [SAA7134_BOARD_AVERMEDIA_GO_007_FM] = { 1563 .name = "Avermedia AVerTV GO 007 FM", 1564 .audio_clock = 0x00187de7, 1565 .tuner_type = TUNER_PHILIPS_TDA8290, 1566 .radio_type = UNSET, 1567 .tuner_addr = ADDR_UNSET, 1568 .radio_addr = ADDR_UNSET, 1569 .gpiomask = 0x00300003, 1570 /* .gpiomask = 0x8c240003, */ 1571 .inputs = {{ 1572 .name = name_tv, 1573 .vmux = 1, 1574 .amux = TV, 1575 .tv = 1, 1576 .gpio = 0x01, 1577 },{ 1578 .name = name_comp1, 1579 .vmux = 0, 1580 .amux = LINE1, 1581 .gpio = 0x02, 1582 },{ 1583 .name = name_svideo, 1584 .vmux = 6, 1585 .amux = LINE1, 1586 .gpio = 0x02, 1587 }}, 1588 .radio = { 1589 .name = name_radio, 1590 .amux = LINE1, 1591 .gpio = 0x00300001, 1592 }, 1593 .mute = { 1594 .name = name_mute, 1595 .amux = TV, 1596 .gpio = 0x01, 1597 }, 1598 }, 1599 [SAA7134_BOARD_AVERMEDIA_CARDBUS] = { 1600 /* Kees.Blom@cwi.nl */ 1601 .name = "AVerMedia Cardbus TV/Radio (E500)", 1602 .audio_clock = 0x187de7, 1603 .tuner_type = TUNER_PHILIPS_TDA8290, 1604 .radio_type = UNSET, 1605 .tuner_addr = ADDR_UNSET, 1606 .radio_addr = ADDR_UNSET, 1607 .inputs = {{ 1608 .name = name_tv, 1609 .vmux = 1, 1610 .amux = TV, 1611 .tv = 1, 1612 },{ 1613 .name = name_comp1, 1614 .vmux = 3, 1615 .amux = LINE2, 1616 },{ 1617 .name = name_svideo, 1618 .vmux = 8, 1619 .amux = LINE1, 1620 }}, 1621 .radio = { 1622 .name = name_radio, 1623 .amux = LINE1, 1624 }, 1625 }, 1626 [SAA7134_BOARD_CINERGY400_CARDBUS] = { 1627 .name = "Terratec Cinergy 400 mobile", 1628 .audio_clock = 0x187de7, 1629 .tuner_type = TUNER_ALPS_TSBE5_PAL, 1630 .radio_type = UNSET, 1631 .tuner_addr = ADDR_UNSET, 1632 .radio_addr = ADDR_UNSET, 1633 .tda9887_conf = TDA9887_PRESENT, 1634 .inputs = {{ 1635 .name = name_tv, 1636 .vmux = 1, 1637 .amux = TV, 1638 .tv = 1, 1639 },{ 1640 .name = name_tv_mono, 1641 .vmux = 1, 1642 .amux = LINE2, 1643 .tv = 1, 1644 },{ 1645 .name = name_comp1, 1646 .vmux = 3, 1647 .amux = LINE1, 1648 },{ 1649 .name = name_svideo, 1650 .vmux = 8, 1651 .amux = LINE1, 1652 }}, 1653 }, 1654 [SAA7134_BOARD_CINERGY600_MK3] = { 1655 .name = "Terratec Cinergy 600 TV MK3", 1656 .audio_clock = 0x00200000, 1657 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, 1658 .radio_type = UNSET, 1659 .tuner_addr = ADDR_UNSET, 1660 .radio_addr = ADDR_UNSET, 1661 .tda9887_conf = TDA9887_PRESENT, 1662 .inputs = {{ 1663 .name = name_tv, 1664 .vmux = 1, 1665 .amux = TV, 1666 .tv = 1, 1667 },{ 1668 .name = name_comp1, 1669 .vmux = 4, 1670 .amux = LINE1, 1671 },{ 1672 .name = name_svideo, 1673 .vmux = 8, 1674 .amux = LINE1, 1675 },{ 1676 .name = name_comp2, /* CVideo over SVideo Connector */ 1677 .vmux = 0, 1678 .amux = LINE1, 1679 }}, 1680 .radio = { 1681 .name = name_radio, 1682 .amux = LINE2, 1683 }, 1684 }, 1685 [SAA7134_BOARD_VIDEOMATE_GOLD_PLUS] = { 1686 /* Dylan Walkden <dylan_walkden@hotmail.com> */ 1687 .name = "Compro VideoMate Gold+ Pal", 1688 .audio_clock = 0x00187de7, 1689 .tuner_type = TUNER_PHILIPS_PAL, 1690 .radio_type = UNSET, 1691 .tuner_addr = ADDR_UNSET, 1692 .radio_addr = ADDR_UNSET, 1693 .gpiomask = 0x1ce780, 1694 .inputs = {{ 1695 .name = name_svideo, 1696 .vmux = 0, /* CVideo over SVideo Connector - ok? */ 1697 .amux = LINE1, 1698 .gpio = 0x008080, 1699 },{ 1700 .name = name_comp1, 1701 .vmux = 3, 1702 .amux = LINE1, 1703 .gpio = 0x008080, 1704 },{ 1705 .name = name_tv, 1706 .vmux = 1, 1707 .amux = TV, 1708 .tv = 1, 1709 .gpio = 0x008080, 1710 }}, 1711 .radio = { 1712 .name = name_radio, 1713 .amux = LINE2, 1714 .gpio = 0x80000, 1715 }, 1716 .mute = { 1717 .name = name_mute, 1718 .amux = LINE2, 1719 .gpio = 0x0c8000, 1720 }, 1721 }, 1722 [SAA7134_BOARD_PINNACLE_300I_DVBT_PAL] = { 1723 .name = "Pinnacle PCTV 300i DVB-T + PAL", 1724 .audio_clock = 0x00187de7, 1725 .tuner_type = TUNER_MT2032, 1726 .radio_type = UNSET, 1727 .tuner_addr = ADDR_UNSET, 1728 .radio_addr = ADDR_UNSET, 1729 .tda9887_conf = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE, 1730 .mpeg = SAA7134_MPEG_DVB, 1731 .inputs = {{ 1732 .name = name_tv, 1733 .vmux = 3, 1734 .amux = TV, 1735 .tv = 1, 1736 },{ 1737 .name = name_comp1, 1738 .vmux = 0, 1739 .amux = LINE2, 1740 },{ 1741 .name = name_comp2, 1742 .vmux = 1, 1743 .amux = LINE2, 1744 },{ 1745 .name = name_svideo, 1746 .vmux = 8, 1747 .amux = LINE2, 1748 }}, 1749 }, 1750 [SAA7134_BOARD_PROVIDEO_PV952] = { 1751 /* andreas.kretschmer@web.de */ 1752 .name = "ProVideo PV952", 1753 .audio_clock = 0x00187de7, 1754 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, 1755 .radio_type = UNSET, 1756 .tuner_addr = ADDR_UNSET, 1757 .radio_addr = ADDR_UNSET, 1758 .tda9887_conf = TDA9887_PRESENT, 1759 .inputs = {{ 1760 .name = name_comp1, 1761 .vmux = 0, 1762 .amux = LINE1, 1763 },{ 1764 .name = name_tv, 1765 .vmux = 1, 1766 .amux = TV, 1767 .tv = 1, 1768 },{ 1769 .name = name_tv_mono, 1770 .vmux = 1, 1771 .amux = LINE2, 1772 .tv = 1, 1773 }}, 1774 .radio = { 1775 .name = name_radio, 1776 .amux = LINE2, 1777 }, 1778 }, 1779 [SAA7134_BOARD_AVERMEDIA_305] = { 1780 /* much like the "studio" version but without radio 1781 * and another tuner (sirspiritus@yandex.ru) */ 1782 .name = "AverMedia AverTV/305", 1783 .audio_clock = 0x00187de7, 1784 .tuner_type = TUNER_PHILIPS_FQ1216ME, 1785 .radio_type = UNSET, 1786 .tuner_addr = ADDR_UNSET, 1787 .radio_addr = ADDR_UNSET, 1788 .tda9887_conf = TDA9887_PRESENT, 1789 .inputs = {{ 1790 .name = name_tv, 1791 .vmux = 1, 1792 .amux = LINE2, 1793 .tv = 1, 1794 },{ 1795 .name = name_comp1, 1796 .vmux = 0, 1797 .amux = LINE2, 1798 },{ 1799 .name = name_comp2, 1800 .vmux = 3, 1801 .amux = LINE2, 1802 },{ 1803 .name = name_svideo, 1804 .vmux = 8, 1805 .amux = LINE2, 1806 }}, 1807 .mute = { 1808 .name = name_mute, 1809 .amux = LINE1, 1810 }, 1811 }, 1812 [SAA7134_BOARD_FLYDVBTDUO] = { 1813 /* LifeView FlyDVB-T DUO */ 1814 /* "Nico Sabbi <nsabbi@tiscali.it> Hartmut Hackmann hartmut.hackmann@t-online.de*/ 1815 .name = "LifeView FlyDVB-T DUO / MSI TV@nywhere Duo", 1816 .audio_clock = 0x00200000, 1817 .tuner_type = TUNER_PHILIPS_TDA8290, 1818 .radio_type = UNSET, 1819 .tuner_addr = ADDR_UNSET, 1820 .radio_addr = ADDR_UNSET, 1821 .gpiomask = 0x00200000, 1822 .mpeg = SAA7134_MPEG_DVB, 1823 .inputs = {{ 1824 .name = name_tv, 1825 .vmux = 1, 1826 .amux = TV, 1827 .gpio = 0x200000, /* GPIO21=High for TV input */ 1828 .tv = 1, 1829 },{ 1830 .name = name_comp1, /* Composite signal on S-Video input */ 1831 .vmux = 0, 1832 .amux = LINE2, 1833 },{ 1834 .name = name_comp2, /* Composite input */ 1835 .vmux = 3, 1836 .amux = LINE2, 1837 },{ 1838 .name = name_svideo, /* S-Video signal on S-Video input */ 1839 .vmux = 8, 1840 .amux = LINE2, 1841 }}, 1842 .radio = { 1843 .name = name_radio, 1844 .amux = TV, 1845 .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */ 1846 }, 1847 }, 1848 [SAA7134_BOARD_PHILIPS_TOUGH] = { 1849 .name = "Philips TOUGH DVB-T reference design", 1850 .tuner_type = TUNER_ABSENT, 1851 .audio_clock = 0x00187de7, 1852 .radio_type = UNSET, 1853 .tuner_addr = ADDR_UNSET, 1854 .radio_addr = ADDR_UNSET, 1855 .mpeg = SAA7134_MPEG_DVB, 1856 .inputs = {{ 1857 .name = name_comp1, 1858 .vmux = 0, 1859 .amux = LINE1, 1860 },{ 1861 .name = name_svideo, 1862 .vmux = 8, 1863 .amux = LINE1, 1864 }}, 1865 }, 1866 [SAA7134_BOARD_AVERMEDIA_307] = { 1867 /* 1868 Davydov Vladimir <vladimir@iqmedia.com> 1869 */ 1870 .name = "Avermedia AVerTV 307", 1871 .audio_clock = 0x00187de7, 1872 .tuner_type = TUNER_PHILIPS_FQ1216ME, 1873 .radio_type = UNSET, 1874 .tuner_addr = ADDR_UNSET, 1875 .radio_addr = ADDR_UNSET, 1876 .tda9887_conf = TDA9887_PRESENT, 1877 .inputs = {{ 1878 .name = name_tv, 1879 .vmux = 1, 1880 .amux = TV, 1881 .tv = 1, 1882 },{ 1883 .name = name_comp1, 1884 .vmux = 0, 1885 .amux = LINE1, 1886 },{ 1887 .name = name_comp2, 1888 .vmux = 3, 1889 .amux = LINE1, 1890 },{ 1891 .name = name_svideo, 1892 .vmux = 8, 1893 .amux = LINE1, 1894 }}, 1895 }, 1896 [SAA7134_BOARD_ADS_INSTANT_TV] = { 1897 .name = "ADS Tech Instant TV (saa7135)", 1898 .audio_clock = 0x00187de7, 1899 .tuner_type = TUNER_PHILIPS_TDA8290, 1900 .radio_type = UNSET, 1901 .tuner_addr = ADDR_UNSET, 1902 .radio_addr = ADDR_UNSET, 1903 .inputs = {{ 1904 .name = name_tv, 1905 .vmux = 1, 1906 .amux = TV, 1907 .tv = 1, 1908 },{ 1909 .name = name_comp1, 1910 .vmux = 3, 1911 .amux = LINE2, 1912 },{ 1913 .name = name_svideo, 1914 .vmux = 8, 1915 .amux = LINE2, 1916 }}, 1917 }, 1918 [SAA7134_BOARD_KWORLD_VSTREAM_XPERT] = { 1919 .name = "Kworld/Tevion V-Stream Xpert TV PVR7134", 1920 .audio_clock = 0x00187de7, 1921 .tuner_type = TUNER_PHILIPS_PAL_I, 1922 .radio_type = UNSET, 1923 .tuner_addr = ADDR_UNSET, 1924 .radio_addr = ADDR_UNSET, 1925 .gpiomask = 0x0700, 1926 .inputs = {{ 1927 .name = name_tv, 1928 .vmux = 1, 1929 .amux = TV, 1930 .tv = 1, 1931 .gpio = 0x000, 1932 },{ 1933 .name = name_comp1, 1934 .vmux = 3, 1935 .amux = LINE1, 1936 .gpio = 0x200, /* gpio by DScaler */ 1937 },{ 1938 .name = name_svideo, 1939 .vmux = 0, 1940 .amux = LINE1, 1941 .gpio = 0x200, 1942 }}, 1943 .radio = { 1944 .name = name_radio, 1945 .amux = LINE1, 1946 .gpio = 0x100, 1947 }, 1948 .mute = { 1949 .name = name_mute, 1950 .amux = TV, 1951 .gpio = 0x000, 1952 }, 1953 }, 1954 [SAA7134_BOARD_FLYDVBT_DUO_CARDBUS] = { 1955 .name = "LifeView/Typhoon/Genius FlyDVB-T Duo Cardbus", 1956 .audio_clock = 0x00200000, 1957 .tuner_type = TUNER_PHILIPS_TDA8290, 1958 .radio_type = UNSET, 1959 .tuner_addr = ADDR_UNSET, 1960 .radio_addr = ADDR_UNSET, 1961 .mpeg = SAA7134_MPEG_DVB, 1962 .gpiomask = 0x00200000, 1963 .inputs = {{ 1964 .name = name_tv, 1965 .vmux = 1, 1966 .amux = TV, 1967 .gpio = 0x200000, /* GPIO21=High for TV input */ 1968 .tv = 1, 1969 },{ 1970 .name = name_svideo, /* S-Video signal on S-Video input */ 1971 .vmux = 8, 1972 .amux = LINE2, 1973 },{ 1974 .name = name_comp1, /* Composite signal on S-Video input */ 1975 .vmux = 0, 1976 .amux = LINE2, 1977 },{ 1978 .name = name_comp2, /* Composite input */ 1979 .vmux = 3, 1980 .amux = LINE2, 1981 }}, 1982 .radio = { 1983 .name = name_radio, 1984 .amux = TV, 1985 .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */ 1986 }, 1987 }, 1988 [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII] = { 1989 .name = "Compro VideoMate TV Gold+II", 1990 .audio_clock = 0x002187de7, 1991 .tuner_type = TUNER_LG_PAL_NEW_TAPC, 1992 .radio_type = TUNER_TEA5767, 1993 .tuner_addr = 0x63, 1994 .radio_addr = 0x60, 1995 .gpiomask = 0x8c1880, 1996 .inputs = {{ 1997 .name = name_svideo, 1998 .vmux = 0, 1999 .amux = LINE1, 2000 .gpio = 0x800800, 2001 },{ 2002 .name = name_comp1, 2003 .vmux = 3, 2004 .amux = LINE1, 2005 .gpio = 0x801000, 2006 },{ 2007 .name = name_tv, 2008 .vmux = 1, 2009 .amux = TV, 2010 .tv = 1, 2011 .gpio = 0x800000, 2012 }}, 2013 .radio = { 2014 .name = name_radio, 2015 .amux = TV, 2016 .gpio = 0x880000, 2017 }, 2018 .mute = { 2019 .name = name_mute, 2020 .amux = LINE2, 2021 .gpio = 0x840000, 2022 }, 2023 }, 2024 [SAA7134_BOARD_KWORLD_XPERT] = { 2025 .name = "Kworld Xpert TV PVR7134", 2026 .audio_clock = 0x00187de7, 2027 .tuner_type = TUNER_TENA_9533_DI, 2028 .radio_type = TUNER_TEA5767, 2029 .tuner_addr = 0x61, 2030 .radio_addr = 0x60, 2031 .gpiomask = 0x0700, 2032 .inputs = {{ 2033 .name = name_tv, 2034 .vmux = 1, 2035 .amux = TV, 2036 .tv = 1, 2037 .gpio = 0x000, 2038 },{ 2039 .name = name_comp1, 2040 .vmux = 3, 2041 .amux = LINE1, 2042 .gpio = 0x200, /* gpio by DScaler */ 2043 },{ 2044 .name = name_svideo, 2045 .vmux = 0, 2046 .amux = LINE1, 2047 .gpio = 0x200, 2048 }}, 2049 .radio = { 2050 .name = name_radio, 2051 .amux = LINE1, 2052 .gpio = 0x100, 2053 }, 2054 .mute = { 2055 .name = name_mute, 2056 .amux = TV, 2057 .gpio = 0x000, 2058 }, 2059 }, 2060 [SAA7134_BOARD_FLYTV_DIGIMATRIX] = { 2061 .name = "FlyTV mini Asus Digimatrix", 2062 .audio_clock = 0x00200000, 2063 .tuner_type = TUNER_LG_TALN, 2064 .radio_type = UNSET, 2065 .tuner_addr = ADDR_UNSET, 2066 .radio_addr = ADDR_UNSET, 2067 .inputs = {{ 2068 .name = name_tv, 2069 .vmux = 1, 2070 .amux = TV, 2071 .tv = 1, 2072 },{ 2073 .name = name_tv_mono, 2074 .vmux = 1, 2075 .amux = LINE2, 2076 .tv = 1, 2077 },{ 2078 .name = name_comp1, 2079 .vmux = 0, 2080 .amux = LINE2, 2081 },{ 2082 .name = name_comp2, 2083 .vmux = 3, 2084 .amux = LINE2, 2085 },{ 2086 .name = name_svideo, 2087 .vmux = 8, 2088 .amux = LINE2, 2089 }}, 2090 .radio = { 2091 .name = name_radio, /* radio unconfirmed */ 2092 .amux = LINE2, 2093 }, 2094 }, 2095 [SAA7134_BOARD_KWORLD_TERMINATOR] = { 2096 /* Kworld V-Stream Studio TV Terminator */ 2097 /* "James Webb <jrwebb@qwest.net> */ 2098 .name = "V-Stream Studio TV Terminator", 2099 .audio_clock = 0x00187de7, 2100 .tuner_type = TUNER_PHILIPS_TDA8290, 2101 .radio_type = UNSET, 2102 .tuner_addr = ADDR_UNSET, 2103 .radio_addr = ADDR_UNSET, 2104 .gpiomask = 1 << 21, 2105 .inputs = {{ 2106 .name = name_tv, 2107 .vmux = 1, 2108 .amux = TV, 2109 .gpio = 0x0000000, 2110 .tv = 1, 2111 },{ 2112 .name = name_comp1, /* Composite input */ 2113 .vmux = 3, 2114 .amux = LINE2, 2115 .gpio = 0x0000000, 2116 },{ 2117 .name = name_svideo, /* S-Video input */ 2118 .vmux = 8, 2119 .amux = LINE2, 2120 .gpio = 0x0000000, 2121 }}, 2122 .radio = { 2123 .name = name_radio, 2124 .amux = TV, 2125 .gpio = 0x0200000, 2126 }, 2127 }, 2128 [SAA7134_BOARD_YUAN_TUN900] = { 2129 .name = "Yuan TUN-900 (saa7135)", 2130 .audio_clock = 0x00187de7, 2131 .tuner_type = TUNER_PHILIPS_TDA8290, 2132 .radio_type = UNSET, 2133 .tuner_addr= ADDR_UNSET, 2134 .radio_addr= ADDR_UNSET, 2135 .gpiomask = 0x00010003, 2136 .inputs = {{ 2137 .name = name_tv, 2138 .vmux = 1, 2139 .amux = TV, 2140 .tv = 1, 2141 .gpio = 0x01, 2142 },{ 2143 .name = name_comp1, 2144 .vmux = 0, 2145 .amux = LINE2, 2146 .gpio = 0x02, 2147 },{ 2148 .name = name_svideo, 2149 .vmux = 6, 2150 .amux = LINE2, 2151 .gpio = 0x02, 2152 }}, 2153 .radio = { 2154 .name = name_radio, 2155 .amux = LINE1, 2156 .gpio = 0x00010003, 2157 }, 2158 .mute = { 2159 .name = name_mute, 2160 .amux = TV, 2161 .gpio = 0x01, 2162 }, 2163 }, 2164 [SAA7134_BOARD_BEHOLD_409FM] = { 2165 /* <http://tuner.beholder.ru>, Sergey <skiv@orel.ru> */ 2166 .name = "Beholder BeholdTV 409 FM", 2167 .audio_clock = 0x00187de7, 2168 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, 2169 .radio_type = UNSET, 2170 .tuner_addr = ADDR_UNSET, 2171 .radio_addr = ADDR_UNSET, 2172 .tda9887_conf = TDA9887_PRESENT, 2173 .inputs = {{ 2174 .name = name_tv, 2175 .vmux = 3, 2176 .amux = TV, 2177 .tv = 1, 2178 },{ 2179 .name = name_comp1, 2180 .vmux = 1, 2181 .amux = LINE1, 2182 },{ 2183 .name = name_svideo, 2184 .vmux = 8, 2185 .amux = LINE1, 2186 }}, 2187 .radio = { 2188 .name = name_radio, 2189 .amux = LINE2, 2190 }, 2191 }, 2192 [SAA7134_BOARD_GOTVIEW_7135] = { 2193 /* Mike Baikov <mike@baikov.com> */ 2194 /* Andrey Cvetcov <ays14@yandex.ru> */ 2195 .name = "GoTView 7135 PCI", 2196 .audio_clock = 0x00187de7, 2197 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, 2198 .radio_type = UNSET, 2199 .tuner_addr = ADDR_UNSET, 2200 .radio_addr = ADDR_UNSET, 2201 .tda9887_conf = TDA9887_PRESENT, 2202 .gpiomask = 0x00200003, 2203 .inputs = {{ 2204 .name = name_tv, 2205 .vmux = 1, 2206 .amux = TV, 2207 .tv = 1, 2208 .gpio = 0x00200003, 2209 },{ 2210 .name = name_tv_mono, 2211 .vmux = 1, 2212 .amux = LINE2, 2213 .gpio = 0x00200003, 2214 },{ 2215 .name = name_comp1, 2216 .vmux = 3, 2217 .amux = LINE1, 2218 .gpio = 0x00200003, 2219 },{ 2220 .name = name_svideo, 2221 .vmux = 8, 2222 .amux = LINE1, 2223 .gpio = 0x00200003, 2224 }}, 2225 .radio = { 2226 .name = name_radio, 2227 .amux = LINE2, 2228 .gpio = 0x00200003, 2229 }, 2230 .mute = { 2231 .name = name_mute, 2232 .amux = TV, 2233 .gpio = 0x00200003, 2234 }, 2235 }, 2236 [SAA7134_BOARD_PHILIPS_EUROPA] = { 2237 .name = "Philips EUROPA V3 reference design", 2238 .audio_clock = 0x00187de7, 2239 .tuner_type = TUNER_PHILIPS_TD1316, 2240 .radio_type = UNSET, 2241 .tuner_addr = 0x61, 2242 .radio_addr = ADDR_UNSET, 2243 .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE, 2244 .mpeg = SAA7134_MPEG_DVB, 2245 .inputs = {{ 2246 .name = name_tv, 2247 .vmux = 3, 2248 .amux = TV, 2249 .tv = 1, 2250 },{ 2251 .name = name_comp1, 2252 .vmux = 0, 2253 .amux = LINE2, 2254 },{ 2255 .name = name_svideo, 2256 .vmux = 8, 2257 .amux = LINE2, 2258 }}, 2259 }, 2260 [SAA7134_BOARD_VIDEOMATE_DVBT_300] = { 2261 .name = "Compro Videomate DVB-T300", 2262 .audio_clock = 0x00187de7, 2263 .tuner_type = TUNER_PHILIPS_TD1316, 2264 .radio_type = UNSET, 2265 .tuner_addr = 0x61, 2266 .radio_addr = ADDR_UNSET, 2267 .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE, 2268 .mpeg = SAA7134_MPEG_DVB, 2269 .inputs = {{ 2270 .name = name_tv, 2271 .vmux = 3, 2272 .amux = TV, 2273 .tv = 1, 2274 },{ 2275 .name = name_comp1, 2276 .vmux = 1, 2277 .amux = LINE2, 2278 },{ 2279 .name = name_svideo, 2280 .vmux = 8, 2281 .amux = LINE2, 2282 }}, 2283 }, 2284 [SAA7134_BOARD_VIDEOMATE_DVBT_200] = { 2285 .name = "Compro Videomate DVB-T200", 2286 .tuner_type = TUNER_ABSENT, 2287 .audio_clock = 0x00187de7, 2288 .radio_type = UNSET, 2289 .tuner_addr = ADDR_UNSET, 2290 .radio_addr = ADDR_UNSET, 2291 .mpeg = SAA7134_MPEG_DVB, 2292 .inputs = {{ 2293 .name = name_comp1, 2294 .vmux = 0, 2295 .amux = LINE1, 2296 },{ 2297 .name = name_svideo, 2298 .vmux = 8, 2299 .amux = LINE1, 2300 }}, 2301 }, 2302 [SAA7134_BOARD_RTD_VFG7350] = { 2303 .name = "RTD Embedded Technologies VFG7350", 2304 .audio_clock = 0x00200000, 2305 .tuner_type = TUNER_ABSENT, 2306 .radio_type = UNSET, 2307 .tuner_addr = ADDR_UNSET, 2308 .radio_addr = ADDR_UNSET, 2309 .inputs = {{ 2310 .name = "Composite 0", 2311 .vmux = 0, 2312 .amux = LINE1, 2313 },{ 2314 .name = "Composite 1", 2315 .vmux = 1, 2316 .amux = LINE2, 2317 },{ 2318 .name = "Composite 2", 2319 .vmux = 2, 2320 .amux = LINE1, 2321 },{ 2322 .name = "Composite 3", 2323 .vmux = 3, 2324 .amux = LINE2, 2325 },{ 2326 .name = "S-Video 0", 2327 .vmux = 8, 2328 .amux = LINE1, 2329 },{ 2330 .name = "S-Video 1", 2331 .vmux = 9, 2332 .amux = LINE2, 2333 }}, 2334 .mpeg = SAA7134_MPEG_EMPRESS, 2335 .video_out = CCIR656, 2336 .vid_port_opts = ( SET_T_CODE_POLARITY_NON_INVERTED | 2337 SET_CLOCK_NOT_DELAYED | 2338 SET_CLOCK_INVERTED | 2339 SET_VSYNC_OFF ), 2340 }, 2341 [SAA7134_BOARD_RTD_VFG7330] = { 2342 .name = "RTD Embedded Technologies VFG7330", 2343 .audio_clock = 0x00200000, 2344 .tuner_type = TUNER_ABSENT, 2345 .radio_type = UNSET, 2346 .tuner_addr = ADDR_UNSET, 2347 .radio_addr = ADDR_UNSET, 2348 .inputs = {{ 2349 .name = "Composite 0", 2350 .vmux = 0, 2351 .amux = LINE1, 2352 },{ 2353 .name = "Composite 1", 2354 .vmux = 1, 2355 .amux = LINE2, 2356 },{ 2357 .name = "Composite 2", 2358 .vmux = 2, 2359 .amux = LINE1, 2360 },{ 2361 .name = "Composite 3", 2362 .vmux = 3, 2363 .amux = LINE2, 2364 },{ 2365 .name = "S-Video 0", 2366 .vmux = 8, 2367 .amux = LINE1, 2368 },{ 2369 .name = "S-Video 1", 2370 .vmux = 9, 2371 .amux = LINE2, 2372 }}, 2373 }, 2374 [SAA7134_BOARD_FLYTVPLATINUM_MINI2] = { 2375 .name = "LifeView FlyTV Platinum Mini2", 2376 .audio_clock = 0x00200000, 2377 .tuner_type = TUNER_PHILIPS_TDA8290, 2378 .radio_type = UNSET, 2379 .tuner_addr = ADDR_UNSET, 2380 .radio_addr = ADDR_UNSET, 2381 2382 .inputs = {{ 2383 .name = name_tv, 2384 .vmux = 1, 2385 .amux = TV, 2386 .tv = 1, 2387 },{ 2388 .name = name_comp1, /* Composite signal on S-Video input */ 2389 .vmux = 0, 2390 .amux = LINE2, 2391 },{ 2392 .name = name_comp2, /* Composite input */ 2393 .vmux = 3, 2394 .amux = LINE2, 2395 },{ 2396 .name = name_svideo, 2397 .vmux = 8, 2398 .amux = LINE2, 2399 }}, 2400 }, 2401 [SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180] = { 2402 /* Michael Krufky <mkrufky@m1k.net> 2403 * Uses Alps Electric TDHU2, containing NXT2004 ATSC Decoder 2404 * AFAIK, there is no analog demod, thus, 2405 * no support for analog television. 2406 */ 2407 .name = "AVerMedia AVerTVHD MCE A180", 2408 .audio_clock = 0x00187de7, 2409 .tuner_type = TUNER_ABSENT, 2410 .radio_type = UNSET, 2411 .tuner_addr = ADDR_UNSET, 2412 .radio_addr = ADDR_UNSET, 2413 .mpeg = SAA7134_MPEG_DVB, 2414 .inputs = {{ 2415 .name = name_comp1, 2416 .vmux = 3, 2417 .amux = LINE2, 2418 },{ 2419 .name = name_svideo, 2420 .vmux = 8, 2421 .amux = LINE2, 2422 }}, 2423 }, 2424 [SAA7134_BOARD_MONSTERTV_MOBILE] = { 2425 .name = "SKNet MonsterTV Mobile", 2426 .audio_clock = 0x00187de7, 2427 .tuner_type = TUNER_PHILIPS_TDA8290, 2428 .radio_type = UNSET, 2429 .tuner_addr = ADDR_UNSET, 2430 .radio_addr = ADDR_UNSET, 2431 2432 .inputs = {{ 2433 .name = name_tv, 2434 .vmux = 1, 2435 .amux = TV, 2436 .tv = 1, 2437 },{ 2438 .name = name_comp1, 2439 .vmux = 3, 2440 .amux = LINE1, 2441 },{ 2442 .name = name_svideo, 2443 .vmux = 6, 2444 .amux = LINE1, 2445 }}, 2446 }, 2447 [SAA7134_BOARD_PINNACLE_PCTV_110i] = { 2448 .name = "Pinnacle PCTV 40i/50i/110i (saa7133)", 2449 .audio_clock = 0x00187de7, 2450 .tuner_type = TUNER_PHILIPS_TDA8290, 2451 .radio_type = UNSET, 2452 .tuner_addr = ADDR_UNSET, 2453 .radio_addr = ADDR_UNSET, 2454 .gpiomask = 0x080200000, 2455 .inputs = {{ 2456 .name = name_tv, 2457 .vmux = 4, 2458 .amux = TV, 2459 .tv = 1, 2460 },{ 2461 .name = name_comp1, 2462 .vmux = 1, 2463 .amux = LINE2, 2464 },{ 2465 .name = name_comp2, 2466 .vmux = 0, 2467 .amux = LINE2, 2468 },{ 2469 .name = name_svideo, 2470 .vmux = 8, 2471 .amux = LINE2, 2472 }}, 2473 .radio = { 2474 .name = name_radio, 2475 .amux = LINE1, 2476 }, 2477 }, 2478 [SAA7134_BOARD_ASUSTeK_P7131_DUAL] = { 2479 .name = "ASUSTeK P7131 Dual", 2480 .audio_clock = 0x00187de7, 2481 .tuner_type = TUNER_PHILIPS_TDA8290, 2482 .radio_type = UNSET, 2483 .tuner_addr = ADDR_UNSET, 2484 .radio_addr = ADDR_UNSET, 2485 .gpiomask = 1 << 21, 2486 .mpeg = SAA7134_MPEG_DVB, 2487 .inputs = {{ 2488 .name = name_tv, 2489 .vmux = 1, 2490 .amux = TV, 2491 .tv = 1, 2492 .gpio = 0x0000000, 2493 },{ 2494 .name = name_comp1, 2495 .vmux = 3, 2496 .amux = LINE2, 2497 .gpio = 0x0200000, 2498 },{ 2499 .name = name_comp2, 2500 .vmux = 0, 2501 .amux = LINE2, 2502 .gpio = 0x0200000, 2503 },{ 2504 .name = name_svideo, 2505 .vmux = 8, 2506 .amux = LINE2, 2507 .gpio = 0x0200000, 2508 }}, 2509 .radio = { 2510 .name = name_radio, 2511 .amux = TV, 2512 .gpio = 0x0200000, 2513 }, 2514 }, 2515 [SAA7134_BOARD_SEDNA_PC_TV_CARDBUS] = { 2516 /* Paul Tom Zalac <pzalac@gmail.com> */ 2517 /* Pavel Mihaylov <bin@bash.info> */ 2518 .name = "Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)", 2519 /* Sedna/MuchTV (OEM) Cardbus TV Tuner */ 2520 .audio_clock = 0x00187de7, 2521 .tuner_type = TUNER_PHILIPS_TDA8290, 2522 .radio_type = UNSET, 2523 .tuner_addr = ADDR_UNSET, 2524 .radio_addr = ADDR_UNSET, 2525 .gpiomask = 0xe880c0, 2526 .inputs = {{ 2527 .name = name_tv, 2528 .vmux = 3, 2529 .amux = TV, 2530 .tv = 1, 2531 },{ 2532 .name = name_comp1, 2533 .vmux = 1, 2534 .amux = LINE1, 2535 },{ 2536 .name = name_svideo, 2537 .vmux = 6, 2538 .amux = LINE1, 2539 }}, 2540 .radio = { 2541 .name = name_radio, 2542 .amux = LINE2, 2543 }, 2544 }, 2545 [SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV] = { 2546 /* "Cyril Lacoux (Yack)" <clacoux@ifeelgood.org> */ 2547 .name = "ASUS Digimatrix TV", 2548 .audio_clock = 0x00200000, 2549 .tuner_type = TUNER_PHILIPS_FQ1216ME, 2550 .tda9887_conf = TDA9887_PRESENT, 2551 .radio_type = UNSET, 2552 .tuner_addr = ADDR_UNSET, 2553 .radio_addr = ADDR_UNSET, 2554 .inputs = {{ 2555 .name = name_tv, 2556 .vmux = 1, 2557 .amux = TV, 2558 .tv = 1, 2559 },{ 2560 .name = name_comp1, 2561 .vmux = 3, 2562 .amux = LINE1, 2563 },{ 2564 .name = name_svideo, 2565 .vmux = 8, 2566 .amux = LINE1, 2567 }}, 2568 }, 2569 [SAA7134_BOARD_PHILIPS_TIGER] = { 2570 .name = "Philips Tiger reference design", 2571 .audio_clock = 0x00187de7, 2572 .tuner_type = TUNER_PHILIPS_TDA8290, 2573 .radio_type = UNSET, 2574 .tuner_addr = ADDR_UNSET, 2575 .radio_addr = ADDR_UNSET, 2576 .tuner_config = 0, 2577 .mpeg = SAA7134_MPEG_DVB, 2578 .gpiomask = 0x0200000, 2579 .inputs = {{ 2580 .name = name_tv, 2581 .vmux = 1, 2582 .amux = TV, 2583 .tv = 1, 2584 },{ 2585 .name = name_comp1, 2586 .vmux = 3, 2587 .amux = LINE1, 2588 },{ 2589 .name = name_svideo, 2590 .vmux = 8, 2591 .amux = LINE1, 2592 }}, 2593 .radio = { 2594 .name = name_radio, 2595 .amux = TV, 2596 .gpio = 0x0200000, 2597 }, 2598 }, 2599 [SAA7134_BOARD_MSI_TVATANYWHERE_PLUS] = { 2600 .name = "MSI TV@Anywhere plus", 2601 .audio_clock = 0x00187de7, 2602 .tuner_type = TUNER_PHILIPS_TDA8290, 2603 .radio_type = UNSET, 2604 .tuner_addr = ADDR_UNSET, 2605 .radio_addr = ADDR_UNSET, 2606 .gpiomask = 1 << 21, 2607 .inputs = {{ 2608 .name = name_tv, 2609 .vmux = 1, 2610 .amux = TV, 2611 .tv = 1, 2612 },{ 2613 .name = name_comp1, 2614 .vmux = 3, 2615 .amux = LINE2, /* unconfirmed, taken from Philips driver */ 2616 },{ 2617 .name = name_comp2, 2618 .vmux = 0, /* untested, Composite over S-Video */ 2619 .amux = LINE2, 2620 },{ 2621 .name = name_svideo, 2622 .vmux = 8, 2623 .amux = LINE2, 2624 }}, 2625 .radio = { 2626 .name = name_radio, 2627 .amux = TV, 2628 .gpio = 0x0200000, 2629 }, 2630 }, 2631 [SAA7134_BOARD_CINERGY250PCI] = { 2632 /* remote-control does not work. The signal about a 2633 key press comes in via gpio, but the key code 2634 doesn't. Neither does it have an i2c remote control 2635 interface. */ 2636 .name = "Terratec Cinergy 250 PCI TV", 2637 .audio_clock = 0x00187de7, 2638 .tuner_type = TUNER_PHILIPS_TDA8290, 2639 .radio_type = UNSET, 2640 .tuner_addr = ADDR_UNSET, 2641 .radio_addr = ADDR_UNSET, 2642 .gpiomask = 0x80200000, 2643 .inputs = {{ 2644 .name = name_tv, 2645 .vmux = 1, 2646 .amux = TV, 2647 .tv = 1, 2648 },{ 2649 .name = name_svideo, /* NOT tested */ 2650 .vmux = 8, 2651 .amux = LINE1, 2652 }}, 2653 .radio = { 2654 .name = name_radio, 2655 .amux = TV, 2656 .gpio = 0x0200000, 2657 }, 2658 }, 2659 [SAA7134_BOARD_FLYDVB_TRIO] = { 2660 /* LifeView LR319 FlyDVB Trio */ 2661 /* Peter Missel <peter.missel@onlinehome.de> */ 2662 .name = "LifeView FlyDVB Trio", 2663 .audio_clock = 0x00200000, 2664 .tuner_type = TUNER_PHILIPS_TDA8290, 2665 .radio_type = UNSET, 2666 .tuner_addr = ADDR_UNSET, 2667 .radio_addr = ADDR_UNSET, 2668 .gpiomask = 0x00200000, 2669 .mpeg = SAA7134_MPEG_DVB, 2670 .inputs = {{ 2671 .name = name_tv, /* Analog broadcast/cable TV */ 2672 .vmux = 1, 2673 .amux = TV, 2674 .gpio = 0x200000, /* GPIO21=High for TV input */ 2675 .tv = 1, 2676 },{ 2677 .name = name_svideo, /* S-Video signal on S-Video input */ 2678 .vmux = 8, 2679 .amux = LINE2, 2680 },{ 2681 .name = name_comp1, /* Composite signal on S-Video input */ 2682 .vmux = 0, 2683 .amux = LINE2, 2684 },{ 2685 .name = name_comp2, /* Composite input */ 2686 .vmux = 3, 2687 .amux = LINE2, 2688 }}, 2689 .radio = { 2690 .name = name_radio, 2691 .amux = TV, 2692 .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */ 2693 }, 2694 }, 2695 [SAA7134_BOARD_AVERMEDIA_777] = { 2696 .name = "AverTV DVB-T 777", 2697 .audio_clock = 0x00187de7, 2698 .tuner_type = TUNER_ABSENT, 2699 .radio_type = UNSET, 2700 .tuner_addr = ADDR_UNSET, 2701 .radio_addr = ADDR_UNSET, 2702 .mpeg = SAA7134_MPEG_DVB, 2703 .inputs = {{ 2704 .name = name_comp1, 2705 .vmux = 1, 2706 .amux = LINE1, 2707 },{ 2708 .name = name_svideo, 2709 .vmux = 8, 2710 .amux = LINE1, 2711 }}, 2712 }, 2713 [SAA7134_BOARD_FLYDVBT_LR301] = { 2714 /* LifeView FlyDVB-T */ 2715 /* Giampiero Giancipoli <gianci@libero.it> */ 2716 .name = "LifeView FlyDVB-T / Genius VideoWonder DVB-T", 2717 .audio_clock = 0x00200000, 2718 .tuner_type = TUNER_ABSENT, 2719 .radio_type = UNSET, 2720 .tuner_addr = ADDR_UNSET, 2721 .radio_addr = ADDR_UNSET, 2722 .mpeg = SAA7134_MPEG_DVB, 2723 .inputs = {{ 2724 .name = name_comp1, /* Composite input */ 2725 .vmux = 3, 2726 .amux = LINE2, 2727 },{ 2728 .name = name_svideo, /* S-Video signal on S-Video input */ 2729 .vmux = 8, 2730 .amux = LINE2, 2731 }}, 2732 }, 2733 [SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331] = { 2734 .name = "ADS Instant TV Duo Cardbus PTV331", 2735 .audio_clock = 0x00200000, 2736 .tuner_type = TUNER_PHILIPS_TDA8290, 2737 .radio_type = UNSET, 2738 .tuner_addr = ADDR_UNSET, 2739 .radio_addr = ADDR_UNSET, 2740 .mpeg = SAA7134_MPEG_DVB, 2741 .gpiomask = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */ 2742 .inputs = {{ 2743 .name = name_tv, 2744 .vmux = 1, 2745 .amux = TV, 2746 .tv = 1, 2747 .gpio = 0x00200000, 2748 }}, 2749 }, 2750 [SAA7134_BOARD_TEVION_DVBT_220RF] = { 2751 .name = "Tevion/KWorld DVB-T 220RF", 2752 .audio_clock = 0x00187de7, 2753 .tuner_type = TUNER_PHILIPS_TDA8290, 2754 .radio_type = UNSET, 2755 .tuner_addr = ADDR_UNSET, 2756 .radio_addr = ADDR_UNSET, 2757 .mpeg = SAA7134_MPEG_DVB, 2758 .inputs = {{ 2759 .name = name_tv, 2760 .vmux = 1, 2761 .amux = TV, 2762 .tv = 1, 2763 },{ 2764 .name = name_comp1, 2765 .vmux = 3, 2766 .amux = LINE1, 2767 },{ 2768 .name = name_svideo, 2769 .vmux = 0, 2770 .amux = LINE1, 2771 }}, 2772 .radio = { 2773 .name = name_radio, 2774 .amux = LINE1, 2775 }, 2776 }, 2777 [SAA7134_BOARD_KWORLD_DVBT_210] = { 2778 .name = "KWorld DVB-T 210", 2779 .audio_clock = 0x00187de7, 2780 .tuner_type = TUNER_PHILIPS_TDA8290, 2781 .radio_type = UNSET, 2782 .tuner_addr = ADDR_UNSET, 2783 .radio_addr = ADDR_UNSET, 2784 .mpeg = SAA7134_MPEG_DVB, 2785 .gpiomask = 1 << 21, 2786 .inputs = {{ 2787 .name = name_tv, 2788 .vmux = 1, 2789 .amux = TV, 2790 .tv = 1, 2791 },{ 2792 .name = name_comp1, 2793 .vmux = 3, 2794 .amux = LINE1, 2795 },{ 2796 .name = name_svideo, 2797 .vmux = 8, 2798 .amux = LINE1, 2799 }}, 2800 .radio = { 2801 .name = name_radio, 2802 .amux = TV, 2803 .gpio = 0x0200000, 2804 }, 2805 }, 2806 [SAA7134_BOARD_KWORLD_ATSC110] = { 2807 .name = "Kworld ATSC110", 2808 .audio_clock = 0x00187de7, 2809 .tuner_type = TUNER_PHILIPS_TUV1236D, 2810 .radio_type = UNSET, 2811 .tuner_addr = ADDR_UNSET, 2812 .radio_addr = ADDR_UNSET, 2813 .tda9887_conf = TDA9887_PRESENT, 2814 .mpeg = SAA7134_MPEG_DVB, 2815 .inputs = {{ 2816 .name = name_tv, 2817 .vmux = 1, 2818 .amux = TV, 2819 .tv = 1, 2820 },{ 2821 .name = name_comp1, 2822 .vmux = 3, 2823 .amux = LINE2, 2824 },{ 2825 .name = name_svideo, 2826 .vmux = 8, 2827 .amux = LINE2, 2828 }}, 2829 }, 2830 [SAA7134_BOARD_AVERMEDIA_A169_B] = { 2831 /* AVerMedia A169 */ 2832 /* Rickard Osser <ricky@osser.se> */ 2833 /* This card has two saa7134 chips on it, 2834 but only one of them is currently working. */ 2835 .name = "AVerMedia A169 B", 2836 .audio_clock = 0x02187de7, 2837 .tuner_type = TUNER_LG_TALN, 2838 .radio_type = UNSET, 2839 .tuner_addr = ADDR_UNSET, 2840 .radio_addr = ADDR_UNSET, 2841 .tda9887_conf = TDA9887_PRESENT, 2842 .gpiomask = 0x0a60000, 2843 }, 2844 [SAA7134_BOARD_AVERMEDIA_A169_B1] = { 2845 /* AVerMedia A169 */ 2846 /* Rickard Osser <ricky@osser.se> */ 2847 .name = "AVerMedia A169 B1", 2848 .audio_clock = 0x02187de7, 2849 .tuner_type = TUNER_LG_TALN, 2850 .radio_type = UNSET, 2851 .tuner_addr = ADDR_UNSET, 2852 .radio_addr = ADDR_UNSET, 2853 .tda9887_conf = TDA9887_PRESENT, 2854 .gpiomask = 0xca60000, 2855 .inputs = {{ 2856 .name = name_tv, 2857 .vmux = 4, 2858 .amux = TV, 2859 .tv = 1, 2860 .gpio = 0x04a61000, 2861 },{ 2862 .name = name_comp2, /* Composite SVIDEO (B/W if signal is carried with SVIDEO) */ 2863 .vmux = 1, 2864 .amux = LINE2, 2865 },{ 2866 .name = name_svideo, 2867 .vmux = 9, /* 9 is correct as S-VIDEO1 according to a169.inf! */ 2868 .amux = LINE1, 2869 }}, 2870 }, 2871 [SAA7134_BOARD_MD7134_BRIDGE_2] = { 2872 /* This card has two saa7134 chips on it, 2873 but only one of them is currently working. 2874 The programming for the primary decoder is 2875 in SAA7134_BOARD_MD7134 */ 2876 .name = "Medion 7134 Bridge #2", 2877 .audio_clock = 0x00187de7, 2878 .radio_type = UNSET, 2879 .tuner_addr = ADDR_UNSET, 2880 .radio_addr = ADDR_UNSET, 2881 }, 2882 [SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS] = { 2883 .name = "LifeView FlyDVB-T Hybrid Cardbus", 2884 .audio_clock = 0x00200000, 2885 .tuner_type = TUNER_PHILIPS_TDA8290, 2886 .radio_type = UNSET, 2887 .tuner_addr = ADDR_UNSET, 2888 .radio_addr = ADDR_UNSET, 2889 .mpeg = SAA7134_MPEG_DVB, 2890 .gpiomask = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */ 2891 .inputs = {{ 2892 .name = name_tv, 2893 .vmux = 1, 2894 .amux = TV, 2895 .gpio = 0x200000, /* GPIO21=High for TV input */ 2896 .tv = 1, 2897 },{ 2898 .name = name_svideo, /* S-Video signal on S-Video input */ 2899 .vmux = 8, 2900 .amux = LINE2, 2901 },{ 2902 .name = name_comp1, /* Composite signal on S-Video input */ 2903 .vmux = 0, 2904 .amux = LINE2, 2905 },{ 2906 .name = name_comp2, /* Composite input */ 2907 .vmux = 3, 2908 .amux = LINE2, 2909 }}, 2910 .radio = { 2911 .name = name_radio, 2912 .amux = TV, 2913 .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */ 2914 }, 2915 }, 2916 [SAA7134_BOARD_FLYVIDEO3000_NTSC] = { 2917 /* "Zac Bowling" <zac@zacbowling.com> */ 2918 .name = "LifeView FlyVIDEO3000 (NTSC)", 2919 .audio_clock = 0x00200000, 2920 .tuner_type = TUNER_PHILIPS_NTSC, 2921 .radio_type = UNSET, 2922 .tuner_addr = ADDR_UNSET, 2923 .radio_addr = ADDR_UNSET, 2924 2925 .gpiomask = 0xe000, 2926 .inputs = {{ 2927 .name = name_tv, 2928 .vmux = 1, 2929 .amux = TV, 2930 .gpio = 0x8000, 2931 .tv = 1, 2932 },{ 2933 .name = name_tv_mono, 2934 .vmux = 1, 2935 .amux = LINE2, 2936 .gpio = 0x0000, 2937 .tv = 1, 2938 },{ 2939 .name = name_comp1, 2940 .vmux = 0, 2941 .amux = LINE2, 2942 .gpio = 0x4000, 2943 },{ 2944 .name = name_comp2, 2945 .vmux = 3, 2946 .amux = LINE2, 2947 .gpio = 0x4000, 2948 },{ 2949 .name = name_svideo, 2950 .vmux = 8, 2951 .amux = LINE2, 2952 .gpio = 0x4000, 2953 }}, 2954 .radio = { 2955 .name = name_radio, 2956 .amux = LINE2, 2957 .gpio = 0x2000, 2958 }, 2959 .mute = { 2960 .name = name_mute, 2961 .amux = TV, 2962 .gpio = 0x8000, 2963 }, 2964 }, 2965 [SAA7134_BOARD_MEDION_MD8800_QUADRO] = { 2966 .name = "Medion Md8800 Quadro", 2967 .audio_clock = 0x00187de7, 2968 .tuner_type = TUNER_PHILIPS_TDA8290, 2969 .radio_type = UNSET, 2970 .tuner_addr = ADDR_UNSET, 2971 .radio_addr = ADDR_UNSET, 2972 .mpeg = SAA7134_MPEG_DVB, 2973 .inputs = {{ 2974 .name = name_tv, 2975 .vmux = 1, 2976 .amux = TV, 2977 .tv = 1, 2978 },{ 2979 .name = name_comp1, 2980 .vmux = 0, 2981 .amux = LINE2, 2982 },{ 2983 .name = name_svideo, 2984 .vmux = 8, 2985 .amux = LINE2, 2986 }}, 2987 }, 2988 [SAA7134_BOARD_FLYDVBS_LR300] = { 2989 /* LifeView FlyDVB-s */ 2990 /* Igor M. Liplianin <liplianin@tut.by> */ 2991 .name = "LifeView FlyDVB-S /Acorp TV134DS", 2992 .audio_clock = 0x00200000, 2993 .tuner_type = TUNER_ABSENT, 2994 .radio_type = UNSET, 2995 .tuner_addr = ADDR_UNSET, 2996 .radio_addr = ADDR_UNSET, 2997 .mpeg = SAA7134_MPEG_DVB, 2998 .inputs = {{ 2999 .name = name_comp1, /* Composite input */ 3000 .vmux = 3, 3001 .amux = LINE1, 3002 },{ 3003 .name = name_svideo, /* S-Video signal on S-Video input */ 3004 .vmux = 8, 3005 .amux = LINE1, 3006 }}, 3007 }, 3008 [SAA7134_BOARD_PROTEUS_2309] = { 3009 .name = "Proteus Pro 2309", 3010 .audio_clock = 0x00187de7, 3011 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, 3012 .radio_type = UNSET, 3013 .tuner_addr = ADDR_UNSET, 3014 .radio_addr = ADDR_UNSET, 3015 .tda9887_conf = TDA9887_PRESENT, 3016 .inputs = {{ 3017 .name = name_tv, 3018 .vmux = 1, 3019 .amux = LINE2, 3020 .tv = 1, 3021 },{ 3022 .name = name_comp1, 3023 .vmux = 0, 3024 .amux = LINE2, 3025 },{ 3026 .name = name_comp2, 3027 .vmux = 3, 3028 .amux = LINE2, 3029 },{ 3030 .name = name_svideo, 3031 .vmux = 8, 3032 .amux = LINE2, 3033 }}, 3034 .mute = { 3035 .name = name_mute, 3036 .amux = LINE1, 3037 }, 3038 }, 3039 [SAA7134_BOARD_AVERMEDIA_A16AR] = { 3040 /* Petr Baudis <pasky@ucw.cz> */ 3041 .name = "AVerMedia TV Hybrid A16AR", 3042 .audio_clock = 0x187de7, 3043 .tuner_type = TUNER_PHILIPS_TD1316, /* untested */ 3044 .radio_type = TUNER_TEA5767, /* untested */ 3045 .tuner_addr = ADDR_UNSET, 3046 .radio_addr = ADDR_UNSET, 3047 .tda9887_conf = TDA9887_PRESENT, 3048 .mpeg = SAA7134_MPEG_DVB, 3049 .inputs = {{ 3050 .name = name_tv, 3051 .vmux = 1, 3052 .amux = TV, 3053 .tv = 1, 3054 },{ 3055 .name = name_comp1, 3056 .vmux = 3, 3057 .amux = LINE2, 3058 },{ 3059 .name = name_svideo, 3060 .vmux = 8, 3061 .amux = LINE1, 3062 }}, 3063 .radio = { 3064 .name = name_radio, 3065 .amux = LINE1, 3066 }, 3067 }, 3068 [SAA7134_BOARD_ASUS_EUROPA2_HYBRID] = { 3069 .name = "Asus Europa2 OEM", 3070 .audio_clock = 0x00187de7, 3071 .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3, 3072 .radio_type = UNSET, 3073 .tuner_addr = ADDR_UNSET, 3074 .radio_addr = ADDR_UNSET, 3075 .tda9887_conf = TDA9887_PRESENT| TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE, 3076 .mpeg = SAA7134_MPEG_DVB, 3077 .inputs = {{ 3078 .name = name_tv, 3079 .vmux = 3, 3080 .amux = TV, 3081 .tv = 1, 3082 },{ 3083 .name = name_comp1, 3084 .vmux = 4, 3085 .amux = LINE2, 3086 },{ 3087 .name = name_svideo, 3088 .vmux = 8, 3089 .amux = LINE2, 3090 }}, 3091 .radio = { 3092 .name = name_radio, 3093 .amux = LINE1, 3094 }, 3095 }, 3096 [SAA7134_BOARD_PINNACLE_PCTV_310i] = { 3097 .name = "Pinnacle PCTV 310i", 3098 .audio_clock = 0x00187de7, 3099 .tuner_type = TUNER_PHILIPS_TDA8290, 3100 .radio_type = UNSET, 3101 .tuner_addr = ADDR_UNSET, 3102 .radio_addr = ADDR_UNSET, 3103 .tuner_config = 1, 3104 .mpeg = SAA7134_MPEG_DVB, 3105 .gpiomask = 0x000200000, 3106 .inputs = {{ 3107 .name = name_tv, 3108 .vmux = 4, 3109 .amux = TV, 3110 .tv = 1, 3111 },{ 3112 .name = name_comp1, 3113 .vmux = 1, 3114 .amux = LINE2, 3115 },{ 3116 .name = name_comp2, 3117 .vmux = 0, 3118 .amux = LINE2, 3119 },{ 3120 .name = name_svideo, 3121 .vmux = 8, 3122 .amux = LINE2, 3123 }}, 3124 .radio = { 3125 .name = name_radio, 3126 .amux = TV, 3127 .gpio = 0x0200000, 3128 }, 3129 }, 3130 [SAA7134_BOARD_AVERMEDIA_STUDIO_507] = { 3131 /* Mikhail Fedotov <mo_fedotov@mail.ru> */ 3132 .name = "Avermedia AVerTV Studio 507", 3133 .audio_clock = 0x00187de7, 3134 .tuner_type = TUNER_PHILIPS_FM1256_IH3, 3135 .radio_type = UNSET, 3136 .tuner_addr = ADDR_UNSET, 3137 .radio_addr = ADDR_UNSET, 3138 .tda9887_conf = TDA9887_PRESENT, 3139 .gpiomask = 0x03, 3140 .inputs = {{ 3141 .name = name_tv, 3142 .vmux = 1, 3143 .amux = TV, 3144 .tv = 1, 3145 .gpio = 0x00, 3146 },{ 3147 .name = name_comp1, 3148 .vmux = 0, 3149 .amux = LINE2, 3150 .gpio = 0x00, 3151 },{ 3152 .name = name_comp2, 3153 .vmux = 3, 3154 .amux = LINE2, 3155 .gpio = 0x00, 3156 },{ 3157 .name = name_svideo, 3158 .vmux = 8, 3159 .amux = LINE2, 3160 .gpio = 0x00, 3161 }}, 3162 .radio = { 3163 .name = name_radio, 3164 .amux = LINE2, 3165 .gpio = 0x01, 3166 }, 3167 .mute = { 3168 .name = name_mute, 3169 .amux = LINE1, 3170 .gpio = 0x00, 3171 }, 3172 }, 3173 [SAA7134_BOARD_VIDEOMATE_DVBT_200A] = { 3174 /* Francis Barber <fedora@barber-family.id.au> */ 3175 .name = "Compro Videomate DVB-T200A", 3176 .audio_clock = 0x00187de7, 3177 .tuner_type = TUNER_ABSENT, 3178 .radio_type = UNSET, 3179 .tuner_addr = ADDR_UNSET, 3180 .radio_addr = ADDR_UNSET, 3181 .tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE, 3182 .mpeg = SAA7134_MPEG_DVB, 3183 .inputs = {{ 3184 .name = name_tv, 3185 .vmux = 3, 3186 .amux = TV, 3187 .tv = 1, 3188 },{ 3189 .name = name_comp1, 3190 .vmux = 1, 3191 .amux = LINE2, 3192 },{ 3193 .name = name_svideo, 3194 .vmux = 8, 3195 .amux = LINE2, 3196 }}, 3197 }, 3198 [SAA7134_BOARD_HAUPPAUGE_HVR1110] = { 3199 /* Thomas Genty <tomlohave@gmail.com> */ 3200 .name = "Hauppauge WinTV-HVR1110 DVB-T/Hybrid", 3201 .audio_clock = 0x00187de7, 3202 .tuner_type = TUNER_PHILIPS_TDA8290, 3203 .radio_type = UNSET, 3204 .tuner_addr = ADDR_UNSET, 3205 .radio_addr = ADDR_UNSET, 3206 .mpeg = SAA7134_MPEG_DVB, 3207 .inputs = {{ 3208 .name = name_tv, 3209 .vmux = 1, 3210 .amux = TV, 3211 .tv = 1, 3212 },{ 3213 .name = name_comp1, 3214 .vmux = 3, 3215 .amux = LINE2, 3216 },{ 3217 .name = name_svideo, 3218 .vmux = 8, 3219 .amux = LINE2, 3220 }}, 3221 .radio = { 3222 .name = name_radio, 3223 .amux = TV, 3224 }, 3225 }, 3226 [SAA7134_BOARD_CINERGY_HT_PCMCIA] = { 3227 .name = "Terratec Cinergy HT PCMCIA", 3228 .audio_clock = 0x00187de7, 3229 .tuner_type = TUNER_PHILIPS_TDA8290, 3230 .radio_type = UNSET, 3231 .tuner_addr = ADDR_UNSET, 3232 .radio_addr = ADDR_UNSET, 3233 .mpeg = SAA7134_MPEG_DVB, 3234 .inputs = {{ 3235 .name = name_tv, 3236 .vmux = 1, 3237 .amux = TV, 3238 .tv = 1, 3239 },{ 3240 .name = name_comp1, 3241 .vmux = 0, 3242 .amux = LINE1, 3243 },{ 3244 .name = name_svideo, 3245 .vmux = 6, 3246 .amux = LINE1, 3247 }}, 3248 }, 3249 [SAA7134_BOARD_ENCORE_ENLTV] = { 3250 /* Steven Walter <stevenrwalter@gmail.com> 3251 Juan Pablo Sormani <sorman@gmail.com> */ 3252 .name = "Encore ENLTV", 3253 .audio_clock = 0x00200000, 3254 .tuner_type = TUNER_TNF_5335MF, 3255 .radio_type = UNSET, 3256 .tuner_addr = ADDR_UNSET, 3257 .radio_addr = ADDR_UNSET, 3258 .inputs = {{ 3259 .name = name_tv, 3260 .vmux = 1, 3261 .amux = 3, 3262 .tv = 1, 3263 },{ 3264 .name = name_tv_mono, 3265 .vmux = 7, 3266 .amux = 4, 3267 .tv = 1, 3268 },{ 3269 .name = name_comp1, 3270 .vmux = 3, 3271 .amux = 2, 3272 },{ 3273 .name = name_svideo, 3274 .vmux = 0, 3275 .amux = 2, 3276 }}, 3277 .radio = { 3278 .name = name_radio, 3279 .amux = LINE2, 3280/* .gpio = 0x00300001,*/ 3281 .gpio = 0x20000, 3282 3283 }, 3284 .mute = { 3285 .name = name_mute, 3286 .amux = 0, 3287 }, 3288 }, 3289 [SAA7134_BOARD_ENCORE_ENLTV_FM] = { 3290 /* Juan Pablo Sormani <sorman@gmail.com> */ 3291 .name = "Encore ENLTV-FM", 3292 .audio_clock = 0x00200000, 3293 .tuner_type = TUNER_PHILIPS_ATSC, 3294 .radio_type = UNSET, 3295 .tuner_addr = ADDR_UNSET, 3296 .radio_addr = ADDR_UNSET, 3297 .inputs = {{ 3298 .name = name_tv, 3299 .vmux = 1, 3300 .amux = 3, 3301 .tv = 1, 3302 },{ 3303 .name = name_tv_mono, 3304 .vmux = 7, 3305 .amux = 4, 3306 .tv = 1, 3307 },{ 3308 .name = name_comp1, 3309 .vmux = 3, 3310 .amux = 2, 3311 },{ 3312 .name = name_svideo, 3313 .vmux = 0, 3314 .amux = 2, 3315 }}, 3316 .radio = { 3317 .name = name_radio, 3318 .amux = LINE2, 3319 .gpio = 0x20000, 3320 3321 }, 3322 .mute = { 3323 .name = name_mute, 3324 .amux = 0, 3325 }, 3326 }, 3327 [SAA7134_BOARD_CINERGY_HT_PCI] = { 3328 .name = "Terratec Cinergy HT PCI", 3329 .audio_clock = 0x00187de7, 3330 .tuner_type = TUNER_PHILIPS_TDA8290, 3331 .radio_type = UNSET, 3332 .tuner_addr = ADDR_UNSET, 3333 .radio_addr = ADDR_UNSET, 3334 .mpeg = SAA7134_MPEG_DVB, 3335 .inputs = {{ 3336 .name = name_tv, 3337 .vmux = 1, 3338 .amux = TV, 3339 .tv = 1, 3340 },{ 3341 .name = name_comp1, 3342 .vmux = 0, 3343 .amux = LINE1, 3344 },{ 3345 .name = name_svideo, 3346 .vmux = 6, 3347 .amux = LINE1, 3348 }}, 3349 }, 3350 [SAA7134_BOARD_PHILIPS_TIGER_S] = { 3351 .name = "Philips Tiger - S Reference design", 3352 .audio_clock = 0x00187de7, 3353 .tuner_type = TUNER_PHILIPS_TDA8290, 3354 .radio_type = UNSET, 3355 .tuner_addr = ADDR_UNSET, 3356 .radio_addr = ADDR_UNSET, 3357 .tuner_config = 2, 3358 .mpeg = SAA7134_MPEG_DVB, 3359 .gpiomask = 0x0200000, 3360 .inputs = {{ 3361 .name = name_tv, 3362 .vmux = 1, 3363 .amux = TV, 3364 .tv = 1, 3365 },{ 3366 .name = name_comp1, 3367 .vmux = 3, 3368 .amux = LINE1, 3369 },{ 3370 .name = name_svideo, 3371 .vmux = 8, 3372 .amux = LINE1, 3373 }}, 3374 .radio = { 3375 .name = name_radio, 3376 .amux = TV, 3377 .gpio = 0x0200000, 3378 }, 3379 }, 3380 [SAA7134_BOARD_AVERMEDIA_M102] = { 3381 .name = "Avermedia M102", 3382 .audio_clock = 0x00187de7, 3383 .tuner_type = TUNER_PHILIPS_TDA8290, 3384 .radio_type = UNSET, 3385 .tuner_addr = ADDR_UNSET, 3386 .radio_addr = ADDR_UNSET, 3387 .gpiomask = 1<<21, 3388 .inputs = {{ 3389 .name = name_tv, 3390 .vmux = 1, 3391 .amux = TV, 3392 .tv = 1, 3393 },{ 3394 .name = name_comp1, 3395 .vmux = 0, 3396 .amux = LINE2, 3397 },{ 3398 .name = name_svideo, 3399 .vmux = 6, 3400 .amux = LINE2, 3401 }}, 3402 }, 3403 [SAA7134_BOARD_ASUS_P7131_4871] = { 3404 .name = "ASUS P7131 4871", 3405 .audio_clock = 0x00187de7, 3406 .tuner_type = TUNER_PHILIPS_TDA8290, 3407 .radio_type = UNSET, 3408 .tuner_addr = ADDR_UNSET, 3409 .radio_addr = ADDR_UNSET, 3410 .tuner_config = 2, 3411 .mpeg = SAA7134_MPEG_DVB, 3412 .gpiomask = 0x0200000, 3413 .inputs = {{ 3414 .name = name_tv, 3415 .vmux = 1, 3416 .amux = TV, 3417 .tv = 1, 3418 .gpio = 0x0200000, 3419 }}, 3420 }, 3421 [SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA] = { 3422 .name = "ASUSTeK P7131 Hybrid", 3423 .audio_clock = 0x00187de7, 3424 .tuner_type = TUNER_PHILIPS_TDA8290, 3425 .radio_type = UNSET, 3426 .tuner_addr = ADDR_UNSET, 3427 .radio_addr = ADDR_UNSET, 3428 .tuner_config = 2, 3429 .gpiomask = 1 << 21, 3430 .mpeg = SAA7134_MPEG_DVB, 3431 .inputs = {{ 3432 .name = name_tv, 3433 .vmux = 1, 3434 .amux = TV, 3435 .tv = 1, 3436 .gpio = 0x0000000, 3437 },{ 3438 .name = name_comp1, 3439 .vmux = 3, 3440 .amux = LINE2, 3441 .gpio = 0x0200000, 3442 },{ 3443 .name = name_comp2, 3444 .vmux = 0, 3445 .amux = LINE2, 3446 .gpio = 0x0200000, 3447 },{ 3448 .name = name_svideo, 3449 .vmux = 8, 3450 .amux = LINE2, 3451 .gpio = 0x0200000, 3452 }}, 3453 .radio = { 3454 .name = name_radio, 3455 .amux = TV, 3456 .gpio = 0x0200000, 3457 }, 3458 }, 3459 [SAA7134_BOARD_SABRENT_TV_PCB05] = { 3460 .name = "Sabrent PCMCIA TV-PCB05", 3461 .audio_clock = 0x00187de7, 3462 .tuner_type = TUNER_PHILIPS_TDA8290, 3463 .radio_type = UNSET, 3464 .tuner_addr = ADDR_UNSET, 3465 .radio_addr = ADDR_UNSET, 3466 .inputs = {{ 3467 .name = name_tv, 3468 .vmux = 1, 3469 .amux = TV, 3470 .tv = 1, 3471 },{ 3472 .name = name_comp1, 3473 .vmux = 3, 3474 .amux = LINE1, 3475 },{ 3476 .name = name_comp2, 3477 .vmux = 0, 3478 .amux = LINE1, 3479 },{ 3480 .name = name_svideo, 3481 .vmux = 8, 3482 .amux = LINE1, 3483 }}, 3484 .mute = { 3485 .name = name_mute, 3486 .amux = TV, 3487 }, 3488 }, 3489}; 3490 3491const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards); 3492 3493/* ------------------------------------------------------------------ */ 3494/* PCI ids + subsystem IDs */ 3495 3496struct pci_device_id saa7134_pci_tbl[] = { 3497 { 3498 .vendor = PCI_VENDOR_ID_PHILIPS, 3499 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3500 .subvendor = PCI_VENDOR_ID_PHILIPS, 3501 .subdevice = 0x2001, 3502 .driver_data = SAA7134_BOARD_PROTEUS_PRO, 3503 },{ 3504 .vendor = PCI_VENDOR_ID_PHILIPS, 3505 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3506 .subvendor = PCI_VENDOR_ID_PHILIPS, 3507 .subdevice = 0x2001, 3508 .driver_data = SAA7134_BOARD_PROTEUS_PRO, 3509 },{ 3510 .vendor = PCI_VENDOR_ID_PHILIPS, 3511 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3512 .subvendor = PCI_VENDOR_ID_PHILIPS, 3513 .subdevice = 0x6752, 3514 .driver_data = SAA7134_BOARD_EMPRESS, 3515 },{ 3516 .vendor = PCI_VENDOR_ID_PHILIPS, 3517 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3518 .subvendor = 0x1131, 3519 .subdevice = 0x4e85, 3520 .driver_data = SAA7134_BOARD_MONSTERTV, 3521 },{ 3522 .vendor = PCI_VENDOR_ID_PHILIPS, 3523 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3524 .subvendor = 0x153b, 3525 .subdevice = 0x1142, 3526 .driver_data = SAA7134_BOARD_CINERGY400, 3527 },{ 3528 .vendor = PCI_VENDOR_ID_PHILIPS, 3529 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3530 .subvendor = 0x153b, 3531 .subdevice = 0x1143, 3532 .driver_data = SAA7134_BOARD_CINERGY600, 3533 },{ 3534 .vendor = PCI_VENDOR_ID_PHILIPS, 3535 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3536 .subvendor = 0x153b, 3537 .subdevice = 0x1158, 3538 .driver_data = SAA7134_BOARD_CINERGY600_MK3, 3539 },{ 3540 .vendor = PCI_VENDOR_ID_PHILIPS, 3541 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3542 .subvendor = 0x153b, 3543 .subdevice = 0x1162, 3544 .driver_data = SAA7134_BOARD_CINERGY400_CARDBUS, 3545 },{ 3546 .vendor = PCI_VENDOR_ID_PHILIPS, 3547 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3548 .subvendor = 0x5169, 3549 .subdevice = 0x0138, 3550 .driver_data = SAA7134_BOARD_FLYVIDEO3000_NTSC, 3551 },{ 3552 .vendor = PCI_VENDOR_ID_PHILIPS, 3553 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3554 .subvendor = 0x5168, 3555 .subdevice = 0x0138, 3556 .driver_data = SAA7134_BOARD_FLYVIDEO3000, 3557 },{ 3558 .vendor = PCI_VENDOR_ID_PHILIPS, 3559 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3560 .subvendor = 0x4e42, /* "Typhoon PCI Capture TV Card" Art.No. 50673 */ 3561 .subdevice = 0x0138, 3562 .driver_data = SAA7134_BOARD_FLYVIDEO3000, 3563 },{ 3564 .vendor = PCI_VENDOR_ID_PHILIPS, 3565 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3566 .subvendor = 0x5168, 3567 .subdevice = 0x0138, 3568 .driver_data = SAA7134_BOARD_FLYVIDEO2000, 3569 },{ 3570 .vendor = PCI_VENDOR_ID_PHILIPS, 3571 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3572 .subvendor = 0x4e42, /* Typhoon */ 3573 .subdevice = 0x0138, /* LifeView FlyTV Prime30 OEM */ 3574 .driver_data = SAA7134_BOARD_FLYVIDEO2000, 3575 },{ 3576 .vendor = PCI_VENDOR_ID_PHILIPS, 3577 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3578 .subvendor = 0x5168, 3579 .subdevice = 0x0212, /* minipci, LR212 */ 3580 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI, 3581 },{ 3582 .vendor = PCI_VENDOR_ID_PHILIPS, 3583 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3584 .subvendor = 0x14c0, 3585 .subdevice = 0x1212, /* minipci, LR1212 */ 3586 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI2, 3587 },{ 3588 .vendor = PCI_VENDOR_ID_PHILIPS, 3589 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3590 .subvendor = 0x4e42, 3591 .subdevice = 0x0212, /* OEM minipci, LR212 */ 3592 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_MINI, 3593 },{ 3594 .vendor = PCI_VENDOR_ID_PHILIPS, 3595 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3596 .subvendor = 0x5168, /* Animation Technologies (LifeView) */ 3597 .subdevice = 0x0214, /* Standard PCI, LR214 Rev E and earlier (SAA7135) */ 3598 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM, 3599 },{ 3600 .vendor = PCI_VENDOR_ID_PHILIPS, 3601 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3602 .subvendor = 0x5168, /* Animation Technologies (LifeView) */ 3603 .subdevice = 0x5214, /* Standard PCI, LR214 Rev F onwards (SAA7131) */ 3604 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM, 3605 },{ 3606 .vendor = PCI_VENDOR_ID_PHILIPS, 3607 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3608 .subvendor = 0x1489, /* KYE */ 3609 .subdevice = 0x0214, /* Genius VideoWonder ProTV */ 3610 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM, /* is an LR214WF actually */ 3611 },{ 3612 .vendor = PCI_VENDOR_ID_PHILIPS, 3613 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3614 .subvendor = 0x16be, 3615 .subdevice = 0x0003, 3616 .driver_data = SAA7134_BOARD_MD7134, 3617 },{ 3618 .vendor = PCI_VENDOR_ID_PHILIPS, 3619 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3620 .subvendor = 0x1048, 3621 .subdevice = 0x226b, 3622 .driver_data = SAA7134_BOARD_ELSA, 3623 },{ 3624 .vendor = PCI_VENDOR_ID_PHILIPS, 3625 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3626 .subvendor = 0x1048, 3627 .subdevice = 0x226a, 3628 .driver_data = SAA7134_BOARD_ELSA_500TV, 3629 },{ 3630 .vendor = PCI_VENDOR_ID_PHILIPS, 3631 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3632 .subvendor = 0x1048, 3633 .subdevice = 0x226c, 3634 .driver_data = SAA7134_BOARD_ELSA_700TV, 3635 },{ 3636 .vendor = PCI_VENDOR_ID_PHILIPS, 3637 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3638 .subvendor = PCI_VENDOR_ID_ASUSTEK, 3639 .subdevice = 0x4842, 3640 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134, 3641 },{ 3642 .vendor = PCI_VENDOR_ID_PHILIPS, 3643 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3644 .subvendor = PCI_VENDOR_ID_ASUSTEK, 3645 .subdevice = 0x4845, 3646 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7135, 3647 },{ 3648 .vendor = PCI_VENDOR_ID_PHILIPS, 3649 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3650 .subvendor = PCI_VENDOR_ID_ASUSTEK, 3651 .subdevice = 0x4830, 3652 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134, 3653 },{ 3654 .vendor = PCI_VENDOR_ID_PHILIPS, 3655 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3656 .subvendor = PCI_VENDOR_ID_ASUSTEK, 3657 .subdevice = 0x4843, 3658 .driver_data = SAA7134_BOARD_ASUSTEK_TVFM7133, 3659 },{ 3660 .vendor = PCI_VENDOR_ID_PHILIPS, 3661 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3662 .subvendor = PCI_VENDOR_ID_ASUSTEK, 3663 .subdevice = 0x4840, 3664 .driver_data = SAA7134_BOARD_ASUSTeK_TVFM7134, 3665 },{ 3666 .vendor = PCI_VENDOR_ID_PHILIPS, 3667 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3668 .subvendor = PCI_VENDOR_ID_PHILIPS, 3669 .subdevice = 0xfe01, 3670 .driver_data = SAA7134_BOARD_TVSTATION_RDS, 3671 },{ 3672 .vendor = PCI_VENDOR_ID_PHILIPS, 3673 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3674 .subvendor = 0x1894, 3675 .subdevice = 0xfe01, 3676 .driver_data = SAA7134_BOARD_TVSTATION_RDS, 3677 },{ 3678 .vendor = PCI_VENDOR_ID_PHILIPS, 3679 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3680 .subvendor = 0x1894, 3681 .subdevice = 0xa006, 3682 .driver_data = SAA7134_BOARD_TVSTATION_DVR, 3683 },{ 3684 .vendor = PCI_VENDOR_ID_PHILIPS, 3685 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3686 .subvendor = 0x1131, 3687 .subdevice = 0x7133, 3688 .driver_data = SAA7134_BOARD_VA1000POWER, 3689 },{ 3690 .vendor = PCI_VENDOR_ID_PHILIPS, 3691 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3692 .subvendor = PCI_VENDOR_ID_PHILIPS, 3693 .subdevice = 0x2001, 3694 .driver_data = SAA7134_BOARD_10MOONSTVMASTER, 3695 },{ 3696 .vendor = PCI_VENDOR_ID_PHILIPS, 3697 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3698 .subvendor = 0x185b, 3699 .subdevice = 0xc100, 3700 .driver_data = SAA7134_BOARD_VIDEOMATE_TV, 3701 },{ 3702 .vendor = PCI_VENDOR_ID_PHILIPS, 3703 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3704 .subvendor = 0x185b, 3705 .subdevice = 0xc100, 3706 .driver_data = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS, 3707 },{ 3708 .vendor = PCI_VENDOR_ID_PHILIPS, 3709 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3710 .subvendor = PCI_VENDOR_ID_MATROX, 3711 .subdevice = 0x48d0, 3712 .driver_data = SAA7134_BOARD_CRONOS_PLUS, 3713 },{ 3714 .vendor = PCI_VENDOR_ID_PHILIPS, 3715 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3716 .subvendor = 0x1461, /* Avermedia Technologies Inc */ 3717 .subdevice = 0xa70b, 3718 .driver_data = SAA7134_BOARD_MD2819, 3719 },{ 3720 .vendor = PCI_VENDOR_ID_PHILIPS, 3721 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3722 .subvendor = 0x1461, /* Avermedia Technologies Inc */ 3723 .subdevice = 0x2115, 3724 .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_305, 3725 },{ 3726 .vendor = PCI_VENDOR_ID_PHILIPS, 3727 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3728 .subvendor = 0x1461, /* Avermedia Technologies Inc */ 3729 .subdevice = 0x2108, 3730 .driver_data = SAA7134_BOARD_AVERMEDIA_305, 3731 },{ 3732 .vendor = PCI_VENDOR_ID_PHILIPS, 3733 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3734 .subvendor = 0x1461, /* Avermedia Technologies Inc */ 3735 .subdevice = 0x10ff, 3736 .driver_data = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER, 3737 },{ 3738 /* AVerMedia CardBus */ 3739 .vendor = PCI_VENDOR_ID_PHILIPS, 3740 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3741 .subvendor = 0x1461, /* Avermedia Technologies Inc */ 3742 .subdevice = 0xd6ee, 3743 .driver_data = SAA7134_BOARD_AVERMEDIA_CARDBUS, 3744 },{ 3745 /* TransGear 3000TV */ 3746 .vendor = PCI_VENDOR_ID_PHILIPS, 3747 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3748 .subvendor = 0x1461, /* Avermedia Technologies Inc */ 3749 .subdevice = 0x050c, 3750 .driver_data = SAA7134_BOARD_TG3000TV, 3751 },{ 3752 .vendor = PCI_VENDOR_ID_PHILIPS, 3753 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3754 .subvendor = 0x11bd, 3755 .subdevice = 0x002b, 3756 .driver_data = SAA7134_BOARD_PINNACLE_PCTV_STEREO, 3757 },{ 3758 .vendor = PCI_VENDOR_ID_PHILIPS, 3759 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3760 .subvendor = 0x11bd, 3761 .subdevice = 0x002d, 3762 .driver_data = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL, 3763 },{ 3764 .vendor = PCI_VENDOR_ID_PHILIPS, 3765 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3766 .subvendor = 0x1019, 3767 .subdevice = 0x4cb4, 3768 .driver_data = SAA7134_BOARD_ECS_TVP3XP, 3769 },{ 3770 .vendor = PCI_VENDOR_ID_PHILIPS, 3771 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3772 .subvendor = 0x1019, 3773 .subdevice = 0x4cb5, 3774 .driver_data = SAA7134_BOARD_ECS_TVP3XP_4CB5, 3775 },{ 3776 .vendor = PCI_VENDOR_ID_PHILIPS, 3777 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3778 .subvendor = 0x1019, 3779 .subdevice = 0x4cb6, 3780 .driver_data = SAA7134_BOARD_ECS_TVP3XP_4CB6, 3781 },{ 3782 .vendor = PCI_VENDOR_ID_PHILIPS, 3783 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3784 .subvendor = 0x12ab, 3785 .subdevice = 0x0800, 3786 .driver_data = SAA7134_BOARD_UPMOST_PURPLE_TV, 3787 },{ 3788 .vendor = PCI_VENDOR_ID_PHILIPS, 3789 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3790 .subvendor = 0x153b, 3791 .subdevice = 0x1152, 3792 .driver_data = SAA7134_BOARD_CINERGY200, 3793 },{ 3794 .vendor = PCI_VENDOR_ID_PHILIPS, 3795 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3796 .subvendor = 0x185b, 3797 .subdevice = 0xc100, 3798 .driver_data = SAA7134_BOARD_VIDEOMATE_TV_PVR, 3799 },{ 3800 .vendor = PCI_VENDOR_ID_PHILIPS, 3801 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3802 .subvendor = 0x1461, /* Avermedia Technologies Inc */ 3803 .subdevice = 0x9715, 3804 .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_307, 3805 },{ 3806 .vendor = PCI_VENDOR_ID_PHILIPS, 3807 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3808 .subvendor = 0x1461, /* Avermedia Technologies Inc */ 3809 .subdevice = 0xa70a, 3810 .driver_data = SAA7134_BOARD_AVERMEDIA_307, 3811 },{ 3812 .vendor = PCI_VENDOR_ID_PHILIPS, 3813 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3814 .subvendor = 0x185b, 3815 .subdevice = 0xc200, 3816 .driver_data = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS, 3817 },{ 3818 .vendor = PCI_VENDOR_ID_PHILIPS, 3819 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3820 .subvendor = 0x1540, 3821 .subdevice = 0x9524, 3822 .driver_data = SAA7134_BOARD_PROVIDEO_PV952, 3823 3824 },{ 3825 .vendor = PCI_VENDOR_ID_PHILIPS, 3826 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3827 .subvendor = 0x5168, 3828 .subdevice = 0x0502, /* Cardbus version */ 3829 .driver_data = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS, 3830 },{ 3831 .vendor = PCI_VENDOR_ID_PHILIPS, 3832 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3833 .subvendor = 0x5168, 3834 .subdevice = 0x0306, /* PCI version */ 3835 .driver_data = SAA7134_BOARD_FLYDVBTDUO, 3836 },{ 3837 .vendor = PCI_VENDOR_ID_PHILIPS, 3838 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3839 .subvendor = 0x1461, /* Avermedia Technologies Inc */ 3840 .subdevice = 0xf31f, 3841 .driver_data = SAA7134_BOARD_AVERMEDIA_GO_007_FM, 3842 3843 },{ 3844 .vendor = PCI_VENDOR_ID_PHILIPS, 3845 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3846 .subvendor = PCI_VENDOR_ID_PHILIPS, 3847 .subdevice = 0x2004, 3848 .driver_data = SAA7134_BOARD_PHILIPS_TOUGH, 3849 },{ 3850 .vendor = PCI_VENDOR_ID_PHILIPS, 3851 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3852 .subvendor = 0x1421, 3853 .subdevice = 0x0350, /* PCI version */ 3854 .driver_data = SAA7134_BOARD_ADS_INSTANT_TV, 3855 },{ 3856 .vendor = PCI_VENDOR_ID_PHILIPS, 3857 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3858 .subvendor = 0x1421, 3859 .subdevice = 0x0351, /* PCI version, new revision */ 3860 .driver_data = SAA7134_BOARD_ADS_INSTANT_TV, 3861 },{ 3862 .vendor = PCI_VENDOR_ID_PHILIPS, 3863 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3864 .subvendor = 0x1421, 3865 .subdevice = 0x0370, /* cardbus version */ 3866 .driver_data = SAA7134_BOARD_ADS_INSTANT_TV, 3867 },{ 3868 .vendor = PCI_VENDOR_ID_PHILIPS, 3869 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3870 .subvendor = 0x1421, 3871 .subdevice = 0x1370, /* cardbus version */ 3872 .driver_data = SAA7134_BOARD_ADS_INSTANT_TV, 3873 3874 },{ 3875 .vendor = PCI_VENDOR_ID_PHILIPS, 3876 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3877 .subvendor = 0x4e42, /* Typhoon */ 3878 .subdevice = 0x0502, /* LifeView LR502 OEM */ 3879 .driver_data = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS, 3880 },{ 3881 .vendor = PCI_VENDOR_ID_PHILIPS, 3882 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3883 .subvendor = 0x1043, 3884 .subdevice = 0x0210, /* mini pci NTSC version */ 3885 .driver_data = SAA7134_BOARD_FLYTV_DIGIMATRIX, 3886 },{ 3887 .vendor = PCI_VENDOR_ID_PHILIPS, 3888 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3889 .subvendor = 0x1043, 3890 .subdevice = 0x0210, /* mini pci PAL/SECAM version */ 3891 .driver_data = SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV, 3892 3893 },{ 3894 .vendor = PCI_VENDOR_ID_PHILIPS, 3895 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3896 .subvendor = 0x0000, /* It shouldn't break anything, since subdevice id seems unique */ 3897 .subdevice = 0x4091, 3898 .driver_data = SAA7134_BOARD_BEHOLD_409FM, 3899 },{ 3900 .vendor = PCI_VENDOR_ID_PHILIPS, 3901 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3902 .subvendor = 0x5456, /* GoTView */ 3903 .subdevice = 0x7135, 3904 .driver_data = SAA7134_BOARD_GOTVIEW_7135, 3905 },{ 3906 .vendor = PCI_VENDOR_ID_PHILIPS, 3907 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3908 .subvendor = PCI_VENDOR_ID_PHILIPS, 3909 .subdevice = 0x2004, 3910 .driver_data = SAA7134_BOARD_PHILIPS_EUROPA, 3911 },{ 3912 .vendor = PCI_VENDOR_ID_PHILIPS, 3913 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3914 .subvendor = 0x185b, 3915 .subdevice = 0xc900, 3916 .driver_data = SAA7134_BOARD_VIDEOMATE_DVBT_300, 3917 },{ 3918 .vendor = PCI_VENDOR_ID_PHILIPS, 3919 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 3920 .subvendor = 0x185b, 3921 .subdevice = 0xc901, 3922 .driver_data = SAA7134_BOARD_VIDEOMATE_DVBT_200, 3923 },{ 3924 .vendor = PCI_VENDOR_ID_PHILIPS, 3925 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3926 .subvendor = 0x1435, 3927 .subdevice = 0x7350, 3928 .driver_data = SAA7134_BOARD_RTD_VFG7350, 3929 },{ 3930 .vendor = PCI_VENDOR_ID_PHILIPS, 3931 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3932 .subvendor = 0x1435, 3933 .subdevice = 0x7330, 3934 .driver_data = SAA7134_BOARD_RTD_VFG7330, 3935 },{ 3936 .vendor = PCI_VENDOR_ID_PHILIPS, 3937 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3938 .subvendor = 0x1461, 3939 .subdevice = 0x1044, 3940 .driver_data = SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180, 3941 },{ 3942 .vendor = PCI_VENDOR_ID_PHILIPS, 3943 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3944 .subvendor = 0x1131, 3945 .subdevice = 0x4ee9, 3946 .driver_data = SAA7134_BOARD_MONSTERTV_MOBILE, 3947 },{ 3948 .vendor = PCI_VENDOR_ID_PHILIPS, 3949 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3950 .subvendor = 0x11bd, 3951 .subdevice = 0x002e, 3952 .driver_data = SAA7134_BOARD_PINNACLE_PCTV_110i, 3953 },{ 3954 .vendor = PCI_VENDOR_ID_PHILIPS, 3955 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3956 .subvendor = 0x1043, 3957 .subdevice = 0x4862, 3958 .driver_data = SAA7134_BOARD_ASUSTeK_P7131_DUAL, 3959 },{ 3960 .vendor = PCI_VENDOR_ID_PHILIPS, 3961 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3962 .subvendor = PCI_VENDOR_ID_PHILIPS, 3963 .subdevice = 0x2018, 3964 .driver_data = SAA7134_BOARD_PHILIPS_TIGER, 3965 },{ 3966 .vendor = PCI_VENDOR_ID_PHILIPS, 3967 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3968 .subvendor = 0x1462, 3969 .subdevice = 0x6231, 3970 .driver_data = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS, 3971 },{ 3972 .vendor = PCI_VENDOR_ID_PHILIPS, 3973 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3974 .subvendor = 0x153b, 3975 .subdevice = 0x1160, 3976 .driver_data = SAA7134_BOARD_CINERGY250PCI, 3977 },{ 3978 .vendor = PCI_VENDOR_ID_PHILIPS, 3979 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA 7131E */ 3980 .subvendor = 0x5168, 3981 .subdevice = 0x0319, 3982 .driver_data = SAA7134_BOARD_FLYDVB_TRIO, 3983 },{ 3984 .vendor = PCI_VENDOR_ID_PHILIPS, 3985 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3986 .subvendor = 0x1461, 3987 .subdevice = 0x2c05, 3988 .driver_data = SAA7134_BOARD_AVERMEDIA_777, 3989 },{ 3990 .vendor = PCI_VENDOR_ID_PHILIPS, 3991 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 3992 .subvendor = 0x5168, 3993 .subdevice = 0x0301, 3994 .driver_data = SAA7134_BOARD_FLYDVBT_LR301, 3995 },{ 3996 .vendor = PCI_VENDOR_ID_PHILIPS, 3997 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 3998 .subvendor = 0x0331, 3999 .subdevice = 0x1421, 4000 .driver_data = SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331, 4001 },{ 4002 .vendor = PCI_VENDOR_ID_PHILIPS, 4003 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4004 .subvendor = 0x17de, 4005 .subdevice = 0x7201, 4006 .driver_data = SAA7134_BOARD_TEVION_DVBT_220RF, 4007 },{ 4008 .vendor = PCI_VENDOR_ID_PHILIPS, 4009 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4010 .subvendor = 0x17de, 4011 .subdevice = 0x7250, 4012 .driver_data = SAA7134_BOARD_KWORLD_DVBT_210, 4013 },{ 4014 .vendor = PCI_VENDOR_ID_PHILIPS, 4015 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */ 4016 .subvendor = 0x17de, 4017 .subdevice = 0x7350, 4018 .driver_data = SAA7134_BOARD_KWORLD_ATSC110, 4019 },{ 4020 .vendor = PCI_VENDOR_ID_PHILIPS, 4021 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 4022 .subvendor = 0x1461, 4023 .subdevice = 0x7360, 4024 .driver_data = SAA7134_BOARD_AVERMEDIA_A169_B, 4025 },{ 4026 .vendor = PCI_VENDOR_ID_PHILIPS, 4027 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 4028 .subvendor = 0x1461, 4029 .subdevice = 0x6360, 4030 .driver_data = SAA7134_BOARD_AVERMEDIA_A169_B1, 4031 },{ 4032 .vendor = PCI_VENDOR_ID_PHILIPS, 4033 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 4034 .subvendor = 0x16be, 4035 .subdevice = 0x0005, 4036 .driver_data = SAA7134_BOARD_MD7134_BRIDGE_2, 4037 },{ 4038 .vendor = PCI_VENDOR_ID_PHILIPS, 4039 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 4040 .subvendor = 0x5168, 4041 .subdevice = 0x0300, 4042 .driver_data = SAA7134_BOARD_FLYDVBS_LR300, 4043 },{ 4044 .vendor = PCI_VENDOR_ID_PHILIPS, 4045 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 4046 .subvendor = 0x4e42, 4047 .subdevice = 0x0300,/* LR300 */ 4048 .driver_data = SAA7134_BOARD_FLYDVBS_LR300, 4049 },{ 4050 .vendor = PCI_VENDOR_ID_PHILIPS, 4051 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 4052 .subvendor = 0x1489, 4053 .subdevice = 0x0301, 4054 .driver_data = SAA7134_BOARD_FLYDVBT_LR301, 4055 },{ 4056 .vendor = PCI_VENDOR_ID_PHILIPS, 4057 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4058 .subvendor = 0x5168, /* Animation Technologies (LifeView) */ 4059 .subdevice = 0x0304, 4060 .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM, 4061 },{ 4062 .vendor = PCI_VENDOR_ID_PHILIPS, 4063 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4064 .subvendor = 0x5168, 4065 .subdevice = 0x3306, 4066 .driver_data = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS, 4067 },{ 4068 .vendor = PCI_VENDOR_ID_PHILIPS, 4069 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4070 .subvendor = 0x5168, 4071 .subdevice = 0x3502, /* whats the difference to 0x3306 ?*/ 4072 .driver_data = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS, 4073 },{ 4074 .vendor = PCI_VENDOR_ID_PHILIPS, 4075 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4076 .subvendor = 0x16be, 4077 .subdevice = 0x0007, 4078 .driver_data = SAA7134_BOARD_MEDION_MD8800_QUADRO, 4079 },{ 4080 .vendor = PCI_VENDOR_ID_PHILIPS, 4081 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4082 .subvendor = 0x16be, 4083 .subdevice = 0x0008, 4084 .driver_data = SAA7134_BOARD_MEDION_MD8800_QUADRO, 4085 },{ 4086 .vendor = PCI_VENDOR_ID_PHILIPS, 4087 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4088 .subvendor = 0x1461, 4089 .subdevice = 0x2c05, 4090 .driver_data = SAA7134_BOARD_AVERMEDIA_777, 4091 },{ 4092 .vendor = PCI_VENDOR_ID_PHILIPS, 4093 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4094 .subvendor = 0x1489, 4095 .subdevice = 0x0502, /* Cardbus version */ 4096 .driver_data = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS, 4097 },{ 4098 .vendor = PCI_VENDOR_ID_PHILIPS, 4099 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 4100 .subvendor = 0x0919, /* Philips Proteus PRO 2309 */ 4101 .subdevice = 0x2003, 4102 .driver_data = SAA7134_BOARD_PROTEUS_2309, 4103 },{ 4104 .vendor = PCI_VENDOR_ID_PHILIPS, 4105 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 4106 .subvendor = 0x1461, 4107 .subdevice = 0x2c00, 4108 .driver_data = SAA7134_BOARD_AVERMEDIA_A16AR, 4109 },{ 4110 .vendor = PCI_VENDOR_ID_PHILIPS, 4111 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 4112 .subvendor = 0x1043, 4113 .subdevice = 0x4860, 4114 .driver_data = SAA7134_BOARD_ASUS_EUROPA2_HYBRID, 4115 },{ 4116 .vendor = PCI_VENDOR_ID_PHILIPS, 4117 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4118 .subvendor = 0x11bd, 4119 .subdevice = 0x002f, 4120 .driver_data = SAA7134_BOARD_PINNACLE_PCTV_310i, 4121 },{ 4122 .vendor = PCI_VENDOR_ID_PHILIPS, 4123 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4124 .subvendor = 0x1461, /* Avermedia Technologies Inc */ 4125 .subdevice = 0x9715, 4126 .driver_data = SAA7134_BOARD_AVERMEDIA_STUDIO_507, 4127 },{ 4128 .vendor = PCI_VENDOR_ID_PHILIPS, 4129 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4130 .subvendor = 0x1043, 4131 .subdevice = 0x4876, 4132 .driver_data = SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA, 4133 },{ 4134 .vendor = PCI_VENDOR_ID_PHILIPS, 4135 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4136 .subvendor = 0x0070, 4137 .subdevice = 0x6701, 4138 .driver_data = SAA7134_BOARD_HAUPPAUGE_HVR1110, 4139 },{ 4140 .vendor = PCI_VENDOR_ID_PHILIPS, 4141 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4142 .subvendor = 0x153b, 4143 .subdevice = 0x1172, 4144 .driver_data = SAA7134_BOARD_CINERGY_HT_PCMCIA, 4145 },{ 4146 .vendor = PCI_VENDOR_ID_PHILIPS, 4147 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 4148 .subvendor = PCI_VENDOR_ID_PHILIPS, 4149 .subdevice = 0x2342, 4150 .driver_data = SAA7134_BOARD_ENCORE_ENLTV, 4151 },{ 4152 .vendor = PCI_VENDOR_ID_PHILIPS, 4153 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 4154 .subvendor = 0x1131, 4155 .subdevice = 0x2341, 4156 .driver_data = SAA7134_BOARD_ENCORE_ENLTV, 4157 },{ 4158 .vendor = PCI_VENDOR_ID_PHILIPS, 4159 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 4160 .subvendor = 0x3016, 4161 .subdevice = 0x2344, 4162 .driver_data = SAA7134_BOARD_ENCORE_ENLTV, 4163 },{ 4164 .vendor = PCI_VENDOR_ID_PHILIPS, 4165 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 4166 .subvendor = 0x1131, 4167 .subdevice = 0x230f, 4168 .driver_data = SAA7134_BOARD_ENCORE_ENLTV_FM, 4169 },{ 4170 .vendor = PCI_VENDOR_ID_PHILIPS, 4171 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4172 .subvendor = 0x153b, 4173 .subdevice = 0x1175, 4174 .driver_data = SAA7134_BOARD_CINERGY_HT_PCI, 4175 },{ 4176 .vendor = PCI_VENDOR_ID_PHILIPS, 4177 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4178 .subvendor = 0x1461, /* Avermedia Technologies Inc */ 4179 .subdevice = 0xf31e, 4180 .driver_data = SAA7134_BOARD_AVERMEDIA_M102, 4181 },{ 4182 .vendor = PCI_VENDOR_ID_PHILIPS, 4183 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4184 .subvendor = 0x4E42, /* MSI */ 4185 .subdevice = 0x0306, /* TV@nywhere DUO */ 4186 .driver_data = SAA7134_BOARD_FLYDVBTDUO, 4187 },{ 4188 .vendor = PCI_VENDOR_ID_PHILIPS, 4189 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4190 .subvendor = 0x1043, 4191 .subdevice = 0x4871, 4192 .driver_data = SAA7134_BOARD_ASUS_P7131_4871, 4193 },{ 4194 .vendor = PCI_VENDOR_ID_PHILIPS, 4195 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4196 .subvendor = 0x1043, 4197 .subdevice = 0x4857, 4198 .driver_data = SAA7134_BOARD_ASUSTeK_P7131_DUAL, 4199 },{ 4200 .vendor = PCI_VENDOR_ID_PHILIPS, 4201 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 4202 .subvendor = 0x0919, /* SinoVideo PCI 2309 Proteus (7134) */ 4203 .subdevice = 0x2003, /* OEM cardbus */ 4204 .driver_data = SAA7134_BOARD_SABRENT_TV_PCB05, 4205 },{ 4206 /* --- boards without eeprom + subsystem ID --- */ 4207 .vendor = PCI_VENDOR_ID_PHILIPS, 4208 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 4209 .subvendor = PCI_VENDOR_ID_PHILIPS, 4210 .subdevice = 0, 4211 .driver_data = SAA7134_BOARD_NOAUTO, 4212 },{ 4213 .vendor = PCI_VENDOR_ID_PHILIPS, 4214 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 4215 .subvendor = PCI_VENDOR_ID_PHILIPS, 4216 .subdevice = 0, 4217 .driver_data = SAA7134_BOARD_NOAUTO, 4218 },{ 4219 /* --- default catch --- */ 4220 .vendor = PCI_VENDOR_ID_PHILIPS, 4221 .device = PCI_DEVICE_ID_PHILIPS_SAA7130, 4222 .subvendor = PCI_ANY_ID, 4223 .subdevice = PCI_ANY_ID, 4224 .driver_data = SAA7134_BOARD_UNKNOWN, 4225 },{ 4226 .vendor = PCI_VENDOR_ID_PHILIPS, 4227 .device = PCI_DEVICE_ID_PHILIPS_SAA7133, 4228 .subvendor = PCI_ANY_ID, 4229 .subdevice = PCI_ANY_ID, 4230 .driver_data = SAA7134_BOARD_UNKNOWN, 4231 },{ 4232 .vendor = PCI_VENDOR_ID_PHILIPS, 4233 .device = PCI_DEVICE_ID_PHILIPS_SAA7134, 4234 .subvendor = PCI_ANY_ID, 4235 .subdevice = PCI_ANY_ID, 4236 .driver_data = SAA7134_BOARD_UNKNOWN, 4237 },{ 4238 .vendor = PCI_VENDOR_ID_PHILIPS, 4239 .device = PCI_DEVICE_ID_PHILIPS_SAA7135, 4240 .subvendor = PCI_ANY_ID, 4241 .subdevice = PCI_ANY_ID, 4242 .driver_data = SAA7134_BOARD_UNKNOWN, 4243 },{ 4244 /* --- end of list --- */ 4245 } 4246}; 4247MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl); 4248 4249/* ----------------------------------------------------------- */ 4250/* flyvideo tweaks */ 4251 4252 4253static void board_flyvideo(struct saa7134_dev *dev) 4254{ 4255 printk("%s: there are different flyvideo cards with different tuners\n" 4256 "%s: out there, you might have to use the tuner=<nr> insmod\n" 4257 "%s: option to override the default value.\n", 4258 dev->name, dev->name, dev->name); 4259} 4260 4261/* ----------------------------------------------------------- */ 4262 4263int saa7134_board_init1(struct saa7134_dev *dev) 4264{ 4265 /* Always print gpio, often manufacturers encode tuner type and other info. */ 4266 saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0); 4267 dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2); 4268 printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value); 4269 4270 switch (dev->board) { 4271 case SAA7134_BOARD_FLYVIDEO2000: 4272 case SAA7134_BOARD_FLYVIDEO3000: 4273 case SAA7134_BOARD_FLYVIDEO3000_NTSC: 4274 dev->has_remote = SAA7134_REMOTE_GPIO; 4275 board_flyvideo(dev); 4276 break; 4277 case SAA7134_BOARD_FLYTVPLATINUM_MINI2: 4278 case SAA7134_BOARD_FLYTVPLATINUM_FM: 4279 case SAA7134_BOARD_CINERGY400: 4280 case SAA7134_BOARD_CINERGY600: 4281 case SAA7134_BOARD_CINERGY600_MK3: 4282 case SAA7134_BOARD_ECS_TVP3XP: 4283 case SAA7134_BOARD_ECS_TVP3XP_4CB5: 4284 case SAA7134_BOARD_ECS_TVP3XP_4CB6: 4285 case SAA7134_BOARD_MD2819: 4286 case SAA7134_BOARD_KWORLD_VSTREAM_XPERT: 4287 case SAA7134_BOARD_KWORLD_XPERT: 4288 case SAA7134_BOARD_AVERMEDIA_STUDIO_305: 4289 case SAA7134_BOARD_AVERMEDIA_305: 4290 case SAA7134_BOARD_AVERMEDIA_STUDIO_307: 4291 case SAA7134_BOARD_AVERMEDIA_307: 4292 case SAA7134_BOARD_AVERMEDIA_STUDIO_507: 4293 case SAA7134_BOARD_AVERMEDIA_GO_007_FM: 4294 case SAA7134_BOARD_AVERMEDIA_777: 4295/* case SAA7134_BOARD_SABRENT_SBTTVFM: */ /* not finished yet */ 4296 case SAA7134_BOARD_VIDEOMATE_TV_PVR: 4297 case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS: 4298 case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII: 4299 case SAA7134_BOARD_VIDEOMATE_DVBT_300: 4300 case SAA7134_BOARD_VIDEOMATE_DVBT_200: 4301 case SAA7134_BOARD_VIDEOMATE_DVBT_200A: 4302 case SAA7134_BOARD_MANLI_MTV001: 4303 case SAA7134_BOARD_MANLI_MTV002: 4304 case SAA7134_BOARD_BEHOLD_409FM: 4305 case SAA7134_BOARD_AVACSSMARTTV: 4306 case SAA7134_BOARD_GOTVIEW_7135: 4307 case SAA7134_BOARD_KWORLD_TERMINATOR: 4308 case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS: 4309 case SAA7134_BOARD_FLYDVBT_LR301: 4310 case SAA7134_BOARD_ASUSTeK_P7131_DUAL: 4311 case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA: 4312 case SAA7134_BOARD_FLYDVBTDUO: 4313 case SAA7134_BOARD_PROTEUS_2309: 4314 case SAA7134_BOARD_AVERMEDIA_A16AR: 4315 case SAA7134_BOARD_ENCORE_ENLTV: 4316 case SAA7134_BOARD_ENCORE_ENLTV_FM: 4317 dev->has_remote = SAA7134_REMOTE_GPIO; 4318 break; 4319 case SAA7134_BOARD_FLYDVBS_LR300: 4320 saa_writeb(SAA7134_GPIO_GPMODE3, 0x80); 4321 saa_writeb(SAA7134_GPIO_GPSTATUS2, 0x40); 4322 dev->has_remote = SAA7134_REMOTE_GPIO; 4323 break; 4324 case SAA7134_BOARD_MD5044: 4325 printk("%s: seems there are two different versions of the MD5044\n" 4326 "%s: (with the same ID) out there. If sound doesn't work for\n" 4327 "%s: you try the audio_clock_override=0x200000 insmod option.\n", 4328 dev->name,dev->name,dev->name); 4329 break; 4330 case SAA7134_BOARD_CINERGY400_CARDBUS: 4331 /* power-up tuner chip */ 4332 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000); 4333 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000); 4334 break; 4335 case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL: 4336 saa_writeb(SAA7134_GPIO_GPMODE1, 0x80); 4337 saa_writeb(SAA7134_GPIO_GPSTATUS1, 0x80); 4338 break; 4339 case SAA7134_BOARD_MONSTERTV_MOBILE: 4340 /* power-up tuner chip */ 4341 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x00040000, 0x00040000); 4342 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000004); 4343 break; 4344 case SAA7134_BOARD_FLYDVBT_DUO_CARDBUS: 4345 /* turn the fan on */ 4346 saa_writeb(SAA7134_GPIO_GPMODE3, 0x08); 4347 saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x06); 4348 break; 4349 case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331: 4350 case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS: 4351 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x08000000, 0x08000000); 4352 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08000000, 0x00000000); 4353 break; 4354 case SAA7134_BOARD_AVERMEDIA_CARDBUS: 4355 /* power-up tuner chip */ 4356 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0xffffffff, 0xffffffff); 4357 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff); 4358 msleep(1); 4359 break; 4360 case SAA7134_BOARD_RTD_VFG7350: 4361 4362 /* 4363 * Make sure Production Test Register at offset 0x1D1 is cleared 4364 * to take chip out of test mode. Clearing bit 4 (TST_EN_AOUT) 4365 * prevents pin 105 from remaining low; keeping pin 105 low 4366 * continually resets the SAA6752 chip. 4367 */ 4368 4369 saa_writeb (SAA7134_PRODUCTION_TEST_MODE, 0x00); 4370 break; 4371 /* i2c remotes */ 4372 case SAA7134_BOARD_PINNACLE_PCTV_110i: 4373 case SAA7134_BOARD_PINNACLE_PCTV_310i: 4374 case SAA7134_BOARD_UPMOST_PURPLE_TV: 4375 case SAA7134_BOARD_HAUPPAUGE_HVR1110: 4376 dev->has_remote = SAA7134_REMOTE_I2C; 4377 break; 4378 case SAA7134_BOARD_AVERMEDIA_A169_B: 4379 case SAA7134_BOARD_MD7134_BRIDGE_2: 4380 printk("%s: %s: dual saa713x broadcast decoders\n" 4381 "%s: Sorry, none of the inputs to this chip are supported yet.\n" 4382 "%s: Dual decoder functionality is disabled for now, use the other chip.\n", 4383 dev->name,card(dev).name,dev->name,dev->name); 4384 break; 4385 case SAA7134_BOARD_AVERMEDIA_M102: 4386 /* enable tuner */ 4387 saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x8c040007, 0x8c040007); 4388 saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0c0007cd, 0x0c0007cd); 4389 break; 4390 } 4391 return 0; 4392} 4393 4394/* stuff which needs working i2c */ 4395int saa7134_board_init2(struct saa7134_dev *dev) 4396{ 4397 unsigned char buf; 4398 int board; 4399 struct tuner_setup tun_setup; 4400 tun_setup.config = 0; 4401 tun_setup.tuner_callback = saa7134_tuner_callback; 4402 4403 switch (dev->board) { 4404 case SAA7134_BOARD_BMK_MPEX_NOTUNER: 4405 case SAA7134_BOARD_BMK_MPEX_TUNER: 4406 dev->i2c_client.addr = 0x60; 4407 board = (i2c_master_recv(&dev->i2c_client,&buf,0) < 0) 4408 ? SAA7134_BOARD_BMK_MPEX_NOTUNER 4409 : SAA7134_BOARD_BMK_MPEX_TUNER; 4410 if (board == dev->board) 4411 break; 4412 dev->board = board; 4413 printk("%s: board type fixup: %s\n", dev->name, 4414 saa7134_boards[dev->board].name); 4415 dev->tuner_type = saa7134_boards[dev->board].tuner_type; 4416 4417 if (TUNER_ABSENT != dev->tuner_type) { 4418 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV; 4419 tun_setup.type = dev->tuner_type; 4420 tun_setup.addr = ADDR_UNSET; 4421 4422 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR, &tun_setup); 4423 } 4424 break; 4425 case SAA7134_BOARD_MD7134: 4426 { 4427 u8 subaddr; 4428 u8 data[3]; 4429 int ret, tuner_t; 4430 4431 struct i2c_msg msg[] = {{.addr=0x50, .flags=0, .buf=&subaddr, .len = 1}, 4432 {.addr=0x50, .flags=I2C_M_RD, .buf=data, .len = 3}}; 4433 subaddr= 0x14; 4434 tuner_t = 0; 4435 ret = i2c_transfer(&dev->i2c_adap, msg, 2); 4436 if (ret != 2) { 4437 printk(KERN_ERR "EEPROM read failure\n"); 4438 } else if ((data[0] != 0) && (data[0] != 0xff)) { 4439 /* old config structure */ 4440 subaddr = data[0] + 2; 4441 msg[1].len = 2; 4442 i2c_transfer(&dev->i2c_adap, msg, 2); 4443 tuner_t = (data[0] << 8) + data[1]; 4444 switch (tuner_t){ 4445 case 0x0103: 4446 dev->tuner_type = TUNER_PHILIPS_PAL; 4447 break; 4448 case 0x010C: 4449 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3; 4450 break; 4451 default: 4452 printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t); 4453 } 4454 } else if ((data[1] != 0) && (data[1] != 0xff)) { 4455 /* new config structure */ 4456 subaddr = data[1] + 1; 4457 msg[1].len = 1; 4458 i2c_transfer(&dev->i2c_adap, msg, 2); 4459 subaddr = data[0] + 1; 4460 msg[1].len = 2; 4461 i2c_transfer(&dev->i2c_adap, msg, 2); 4462 tuner_t = (data[1] << 8) + data[0]; 4463 switch (tuner_t) { 4464 case 0x0005: 4465 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3; 4466 break; 4467 case 0x001d: 4468 dev->tuner_type = TUNER_PHILIPS_FMD1216ME_MK3; 4469 printk(KERN_INFO "%s Board has DVB-T\n", dev->name); 4470 break; 4471 default: 4472 printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t); 4473 } 4474 } else { 4475 printk(KERN_ERR "%s unexpected config structure\n", dev->name); 4476 } 4477 4478 printk(KERN_INFO "%s Tuner type is %d\n", dev->name, dev->tuner_type); 4479 if (dev->tuner_type == TUNER_PHILIPS_FMD1216ME_MK3) { 4480 dev->tda9887_conf = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE; 4481 saa7134_i2c_call_clients(dev,TDA9887_SET_CONFIG, &dev->tda9887_conf); 4482 } 4483 4484 tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV; 4485 tun_setup.type = dev->tuner_type; 4486 tun_setup.addr = ADDR_UNSET; 4487 4488 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup); 4489 } 4490 break; 4491 case SAA7134_BOARD_PHILIPS_EUROPA: 4492 case SAA7134_BOARD_VIDEOMATE_DVBT_300: 4493 case SAA7134_BOARD_ASUS_EUROPA2_HYBRID: 4494 /* The Philips EUROPA based hybrid boards have the tuner connected through 4495 * the channel decoder. We have to make it transparent to find it 4496 */ 4497 { 4498 u8 data[] = { 0x07, 0x02}; 4499 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)}; 4500 i2c_transfer(&dev->i2c_adap, &msg, 1); 4501 4502 tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV; 4503 tun_setup.type = dev->tuner_type; 4504 tun_setup.addr = dev->tuner_addr; 4505 4506 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup); 4507 } 4508 break; 4509 case SAA7134_BOARD_PHILIPS_TIGER: 4510 case SAA7134_BOARD_PHILIPS_TIGER_S: 4511 { 4512 u8 data[] = { 0x3c, 0x33, 0x60}; 4513 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)}; 4514 if(dev->autodetected && (dev->eedata[0x49] == 0x50)) { 4515 dev->board = SAA7134_BOARD_PHILIPS_TIGER_S; 4516 printk(KERN_INFO "%s: Reconfigured board as %s\n", 4517 dev->name, saa7134_boards[dev->board].name); 4518 } 4519 if(dev->board == SAA7134_BOARD_PHILIPS_TIGER_S) { 4520 tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV; 4521 tun_setup.type = TUNER_PHILIPS_TDA8290; 4522 tun_setup.addr = 0x4b; 4523 tun_setup.config = 2; 4524 4525 saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup); 4526 data[2] = 0x68; 4527 } 4528 i2c_transfer(&dev->i2c_adap, &msg, 1); 4529 } 4530 break; 4531 case SAA7134_BOARD_PINNACLE_PCTV_310i: 4532 case SAA7134_BOARD_KWORLD_DVBT_210: 4533 case SAA7134_BOARD_TEVION_DVBT_220RF: 4534 case SAA7134_BOARD_ASUSTeK_P7131_DUAL: 4535 case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA: 4536 case SAA7134_BOARD_MEDION_MD8800_QUADRO: 4537 case SAA7134_BOARD_HAUPPAUGE_HVR1110: 4538 /* this is a hybrid board, initialize to analog mode 4539 * and configure firmware eeprom address 4540 */ 4541 { 4542 u8 data[] = { 0x3c, 0x33, 0x60}; 4543 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)}; 4544 i2c_transfer(&dev->i2c_adap, &msg, 1); 4545 } 4546 break; 4547 case SAA7134_BOARD_FLYDVB_TRIO: 4548 { 4549 u8 data[] = { 0x3c, 0x33, 0x62}; 4550 struct i2c_msg msg = {.addr=0x09, .flags=0, .buf=data, .len = sizeof(data)}; 4551 i2c_transfer(&dev->i2c_adap, &msg, 1); 4552 } 4553 break; 4554 case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331: 4555 case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS: 4556 /* initialize analog mode */ 4557 { 4558 u8 data[] = { 0x3c, 0x33, 0x6a}; 4559 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)}; 4560 i2c_transfer(&dev->i2c_adap, &msg, 1); 4561 } 4562 break; 4563 case SAA7134_BOARD_CINERGY_HT_PCMCIA: 4564 case SAA7134_BOARD_CINERGY_HT_PCI: 4565 /* initialize analog mode */ 4566 { 4567 u8 data[] = { 0x3c, 0x33, 0x68}; 4568 struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)}; 4569 i2c_transfer(&dev->i2c_adap, &msg, 1); 4570 } 4571 break; 4572 case SAA7134_BOARD_KWORLD_ATSC110: 4573 { 4574 /* enable tuner */ 4575 int i; 4576 static const u8 buffer [] = { 0x10,0x12,0x13,0x04,0x16,0x00,0x14,0x04,0x017,0x00 }; 4577 dev->i2c_client.addr = 0x0a; 4578 for (i = 0; i < 5; i++) 4579 if (2 != i2c_master_send(&dev->i2c_client,&buffer[i*2],2)) 4580 printk(KERN_WARNING "%s: Unable to enable tuner(%i).\n", 4581 dev->name, i); 4582 } 4583 break; 4584 case SAA7134_BOARD_VIDEOMATE_DVBT_200: 4585 case SAA7134_BOARD_VIDEOMATE_DVBT_200A: 4586 /* The T200 and the T200A share the same pci id. Consequently, 4587 * we are going to query eeprom to try to find out which one we 4588 * are actually looking at. */ 4589 4590 /* Don't do this if the board was specifically selected with an 4591 * insmod option or if we have the default configuration T200*/ 4592 if(!dev->autodetected || (dev->eedata[0x41] == 0xd0)) 4593 break; 4594 if(dev->eedata[0x41] == 0x02) { 4595 /* Reconfigure board as T200A */ 4596 dev->board = SAA7134_BOARD_VIDEOMATE_DVBT_200A; 4597 dev->tuner_type = saa7134_boards[dev->board].tuner_type; 4598 dev->tda9887_conf = saa7134_boards[dev->board].tda9887_conf; 4599 printk(KERN_INFO "%s: Reconfigured board as %s\n", 4600 dev->name, saa7134_boards[dev->board].name); 4601 } else { 4602 printk(KERN_WARNING "%s: Unexpected tuner type info: %x in eeprom\n", 4603 dev->name, dev->eedata[0x41]); 4604 break; 4605 } 4606 break; 4607 } 4608 return 0; 4609} 4610 4611/* ----------------------------------------------------------- */ 4612/* 4613 * Local variables: 4614 * c-basic-offset: 8 4615 * End: 4616 */ 4617