linux/drivers/media/video/saa7134/saa7134-cards.c
<<
>>
Prefs
   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#include <linux/i2c.h>
  26#include <linux/i2c-algo-bit.h>
  27
  28#include "saa7134-reg.h"
  29#include "saa7134.h"
  30#include "tuner-xc2028.h"
  31#include <media/v4l2-common.h>
  32#include <media/tveeprom.h>
  33#include "tea5767.h"
  34#include "tda18271.h"
  35#include "xc5000.h"
  36
  37/* commly used strings */
  38static char name_mute[]    = "mute";
  39static char name_radio[]   = "Radio";
  40static char name_tv[]      = "Television";
  41static char name_tv_mono[] = "TV (mono only)";
  42static char name_comp[]    = "Composite";
  43static char name_comp1[]   = "Composite1";
  44static char name_comp2[]   = "Composite2";
  45static char name_comp3[]   = "Composite3";
  46static char name_comp4[]   = "Composite4";
  47static char name_svideo[]  = "S-Video";
  48
  49/* ------------------------------------------------------------------ */
  50/* board config info                                                  */
  51
  52/* If radio_type !=UNSET, radio_addr should be specified
  53 */
  54
  55struct saa7134_board saa7134_boards[] = {
  56        [SAA7134_BOARD_UNKNOWN] = {
  57                .name           = "UNKNOWN/GENERIC",
  58                .audio_clock    = 0x00187de7,
  59                .tuner_type     = TUNER_ABSENT,
  60                .radio_type     = UNSET,
  61                .tuner_addr     = ADDR_UNSET,
  62                .radio_addr     = ADDR_UNSET,
  63
  64                .inputs         = {{
  65                        .name = "default",
  66                        .vmux = 0,
  67                        .amux = LINE1,
  68                }},
  69        },
  70        [SAA7134_BOARD_PROTEUS_PRO] = {
  71                /* /me */
  72                .name           = "Proteus Pro [philips reference design]",
  73                .audio_clock    = 0x00187de7,
  74                .tuner_type     = TUNER_PHILIPS_PAL,
  75                .radio_type     = UNSET,
  76                .tuner_addr     = ADDR_UNSET,
  77                .radio_addr     = ADDR_UNSET,
  78
  79                .inputs         = {{
  80                        .name = name_comp1,
  81                        .vmux = 0,
  82                        .amux = LINE1,
  83                },{
  84                        .name = name_tv,
  85                        .vmux = 1,
  86                        .amux = TV,
  87                        .tv   = 1,
  88                },{
  89                        .name = name_tv_mono,
  90                        .vmux = 1,
  91                        .amux = LINE2,
  92                        .tv   = 1,
  93                }},
  94                .radio = {
  95                        .name = name_radio,
  96                        .amux = LINE2,
  97                },
  98        },
  99        [SAA7134_BOARD_FLYVIDEO3000] = {
 100                /* "Marco d'Itri" <md@Linux.IT> */
 101                .name           = "LifeView FlyVIDEO3000",
 102                .audio_clock    = 0x00200000,
 103                .tuner_type     = TUNER_PHILIPS_PAL,
 104                .radio_type     = UNSET,
 105                .tuner_addr     = ADDR_UNSET,
 106                .radio_addr     = ADDR_UNSET,
 107
 108                .gpiomask       = 0xe000,
 109                .inputs         = {{
 110                        .name = name_tv,
 111                        .vmux = 1,
 112                        .amux = TV,
 113                        .gpio = 0x8000,
 114                        .tv   = 1,
 115                },{
 116                        .name = name_tv_mono,
 117                        .vmux = 1,
 118                        .amux = LINE2,
 119                        .gpio = 0x0000,
 120                        .tv   = 1,
 121                },{
 122                        .name = name_comp1,
 123                        .vmux = 0,
 124                        .amux = LINE2,
 125                        .gpio = 0x4000,
 126                },{
 127                        .name = name_comp2,
 128                        .vmux = 3,
 129                        .amux = LINE2,
 130                        .gpio = 0x4000,
 131                },{
 132                        .name = name_svideo,
 133                        .vmux = 8,
 134                        .amux = LINE2,
 135                        .gpio = 0x4000,
 136                }},
 137                .radio = {
 138                        .name = name_radio,
 139                        .amux = LINE2,
 140                        .gpio = 0x2000,
 141                },
 142                .mute = {
 143                        .name = name_mute,
 144                        .amux = TV,
 145                        .gpio = 0x8000,
 146                },
 147        },
 148        [SAA7134_BOARD_FLYVIDEO2000] = {
 149                /* "TC Wan" <tcwan@cs.usm.my> */
 150                .name           = "LifeView/Typhoon FlyVIDEO2000",
 151                .audio_clock    = 0x00200000,
 152                .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
 153                .radio_type     = UNSET,
 154                .tuner_addr     = ADDR_UNSET,
 155                .radio_addr     = ADDR_UNSET,
 156
 157                .gpiomask       = 0xe000,
 158                .inputs         = {{
 159                        .name = name_tv,
 160                        .vmux = 1,
 161                        .amux = LINE2,
 162                        .gpio = 0x0000,
 163                        .tv   = 1,
 164                },{
 165                        .name = name_comp1,
 166                        .vmux = 0,
 167                        .amux = LINE2,
 168                        .gpio = 0x4000,
 169                },{
 170                        .name = name_comp2,
 171                        .vmux = 3,
 172                        .amux = LINE2,
 173                        .gpio = 0x4000,
 174                },{
 175                        .name = name_svideo,
 176                        .vmux = 8,
 177                        .amux = LINE2,
 178                        .gpio = 0x4000,
 179                }},
 180                .radio = {
 181                        .name = name_radio,
 182                        .amux = LINE2,
 183                        .gpio = 0x2000,
 184                },
 185                .mute = {
 186                        .name = name_mute,
 187                        .amux = LINE2,
 188                        .gpio = 0x8000,
 189                },
 190        },
 191        [SAA7134_BOARD_FLYTVPLATINUM_MINI] = {
 192                /* "Arnaud Quette" <aquette@free.fr> */
 193                .name           = "LifeView FlyTV Platinum Mini",
 194                .audio_clock    = 0x00200000,
 195                .tuner_type     = TUNER_PHILIPS_TDA8290,
 196                .radio_type     = UNSET,
 197                .tuner_addr     = ADDR_UNSET,
 198                .radio_addr     = ADDR_UNSET,
 199
 200                .inputs         = {{
 201                        .name = name_tv,
 202                        .vmux = 1,
 203                        .amux = TV,
 204                        .tv   = 1,
 205                },{
 206                        .name = name_comp1,     /* Composite signal on S-Video input */
 207                        .vmux = 0,
 208                        .amux = LINE2,
 209                },{
 210                        .name = name_comp2,     /* Composite input */
 211                        .vmux = 3,
 212                        .amux = LINE2,
 213                },{
 214                        .name = name_svideo,
 215                        .vmux = 8,
 216                        .amux = LINE2,
 217                }},
 218        },
 219        [SAA7134_BOARD_FLYTVPLATINUM_FM] = {
 220                /* LifeView FlyTV Platinum FM (LR214WF) */
 221                /* "Peter Missel <peter.missel@onlinehome.de> */
 222                .name           = "LifeView FlyTV Platinum FM / Gold",
 223                .audio_clock    = 0x00200000,
 224                .tuner_type     = TUNER_PHILIPS_TDA8290,
 225                .radio_type     = UNSET,
 226                .tuner_addr     = ADDR_UNSET,
 227                .radio_addr     = ADDR_UNSET,
 228
 229                .gpiomask       = 0x1E000,      /* Set GP16 and unused 15,14,13 to Output */
 230                .inputs         = {{
 231                        .name = name_tv,
 232                        .vmux = 1,
 233                        .amux = TV,
 234                        .gpio = 0x10000,        /* GP16=1 selects TV input */
 235                        .tv   = 1,
 236                },{
 237/*                      .name = name_tv_mono,
 238                        .vmux = 1,
 239                        .amux = LINE2,
 240                        .gpio = 0x0000,
 241                        .tv   = 1,
 242                },{
 243*/                      .name = name_comp1,     /* Composite signal on S-Video input */
 244                        .vmux = 0,
 245                        .amux = LINE2,
 246/*                      .gpio = 0x4000,         */
 247                },{
 248                        .name = name_comp2,     /* Composite input */
 249                        .vmux = 3,
 250                        .amux = LINE2,
 251/*                      .gpio = 0x4000,         */
 252                },{
 253                        .name = name_svideo,    /* S-Video signal on S-Video input */
 254                        .vmux = 8,
 255                        .amux = LINE2,
 256/*                      .gpio = 0x4000,         */
 257                }},
 258                .radio = {
 259                        .name = name_radio,
 260                        .amux = TV,
 261                        .gpio = 0x00000,        /* GP16=0 selects FM radio antenna */
 262                },
 263                .mute = {
 264                        .name = name_mute,
 265                        .amux = TV,
 266                        .gpio = 0x10000,
 267                },
 268        },
 269        [SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM] = {
 270                /* RoverMedia TV Link Pro FM (LR138 REV:I) */
 271                /* Eugene Yudin <Eugene.Yudin@gmail.com> */
 272                .name           = "RoverMedia TV Link Pro FM",
 273                .audio_clock    = 0x00200000,
 274                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3, /* TCL MFPE05 2 */
 275                .radio_type     = UNSET,
 276                .tuner_addr     = ADDR_UNSET,
 277                .radio_addr     = ADDR_UNSET,
 278                .tda9887_conf   = TDA9887_PRESENT,
 279                .gpiomask       = 0xe000,
 280                .inputs         = { {
 281                        .name = name_tv,
 282                        .vmux = 1,
 283                        .amux = TV,
 284                        .gpio = 0x8000,
 285                        .tv   = 1,
 286                }, {
 287                        .name = name_tv_mono,
 288                        .vmux = 1,
 289                        .amux = LINE2,
 290                        .gpio = 0x0000,
 291                        .tv   = 1,
 292                }, {
 293                        .name = name_comp1,
 294                        .vmux = 0,
 295                        .amux = LINE2,
 296                        .gpio = 0x4000,
 297                }, {
 298                        .name = name_comp2,
 299                        .vmux = 3,
 300                        .amux = LINE2,
 301                        .gpio = 0x4000,
 302                }, {
 303                        .name = name_svideo,
 304                        .vmux = 8,
 305                        .amux = LINE2,
 306                        .gpio = 0x4000,
 307                } },
 308                .radio = {
 309                        .name = name_radio,
 310                        .amux = LINE2,
 311                        .gpio = 0x2000,
 312                },
 313                .mute = {
 314                        .name = name_mute,
 315                        .amux = TV,
 316                        .gpio = 0x8000,
 317                },
 318        },
 319        [SAA7134_BOARD_EMPRESS] = {
 320                /* "Gert Vervoort" <gert.vervoort@philips.com> */
 321                .name           = "EMPRESS",
 322                .audio_clock    = 0x00187de7,
 323                .tuner_type     = TUNER_PHILIPS_PAL,
 324                .radio_type     = UNSET,
 325                .tuner_addr     = ADDR_UNSET,
 326                .radio_addr     = ADDR_UNSET,
 327                .empress_addr   = 0x20,
 328
 329                .inputs         = {{
 330                        .name = name_comp1,
 331                        .vmux = 0,
 332                        .amux = LINE1,
 333                },{
 334                        .name = name_svideo,
 335                        .vmux = 8,
 336                        .amux = LINE1,
 337                },{
 338                        .name = name_tv,
 339                        .vmux = 1,
 340                        .amux = LINE2,
 341                        .tv   = 1,
 342                }},
 343                .radio = {
 344                        .name = name_radio,
 345                        .amux = LINE2,
 346                },
 347                .mpeg      = SAA7134_MPEG_EMPRESS,
 348                .video_out = CCIR656,
 349        },
 350        [SAA7134_BOARD_MONSTERTV] = {
 351                /* "K.Ohta" <alpha292@bremen.or.jp> */
 352                .name           = "SKNet Monster TV",
 353                .audio_clock    = 0x00187de7,
 354                .tuner_type     = TUNER_PHILIPS_NTSC_M,
 355                .radio_type     = UNSET,
 356                .tuner_addr     = ADDR_UNSET,
 357                .radio_addr     = ADDR_UNSET,
 358
 359                .inputs         = {{
 360                        .name = name_tv,
 361                        .vmux = 1,
 362                        .amux = TV,
 363                        .tv   = 1,
 364                },{
 365                        .name = name_comp1,
 366                        .vmux = 0,
 367                        .amux = LINE1,
 368                },{
 369                        .name = name_svideo,
 370                        .vmux = 8,
 371                        .amux = LINE1,
 372                }},
 373                .radio = {
 374                        .name = name_radio,
 375                        .amux = LINE2,
 376                },
 377        },
 378        [SAA7134_BOARD_MD9717] = {
 379                .name           = "Tevion MD 9717",
 380                .audio_clock    = 0x00200000,
 381                .tuner_type     = TUNER_PHILIPS_PAL,
 382                .radio_type     = UNSET,
 383                .tuner_addr     = ADDR_UNSET,
 384                .radio_addr     = ADDR_UNSET,
 385                .inputs         = {{
 386                        .name = name_tv,
 387                        .vmux = 1,
 388                        .amux = TV,
 389                        .tv   = 1,
 390                },{
 391                        /* workaround for problems with normal TV sound */
 392                        .name = name_tv_mono,
 393                        .vmux = 1,
 394                        .amux = LINE2,
 395                        .tv   = 1,
 396                },{
 397                        .name = name_comp1,
 398                        .vmux = 0,
 399                        .amux = LINE1,
 400                },{
 401                        .name = name_comp2,
 402                        .vmux = 3,
 403                        .amux = LINE1,
 404                },{
 405                        .name = name_svideo,
 406                        .vmux = 8,
 407                        .amux = LINE1,
 408                }},
 409                .radio = {
 410                        .name = name_radio,
 411                        .amux = LINE2,
 412                },
 413               .mute = {
 414                       .name = name_mute,
 415                       .amux = TV,
 416               },
 417        },
 418        [SAA7134_BOARD_TVSTATION_RDS] = {
 419                /* Typhoon TV Tuner RDS: Art.Nr. 50694 */
 420                .name           = "KNC One TV-Station RDS / Typhoon TV Tuner RDS",
 421                .audio_clock    = 0x00200000,
 422                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
 423                .radio_type     = UNSET,
 424                .tuner_addr     = ADDR_UNSET,
 425                .radio_addr     = ADDR_UNSET,
 426                .tda9887_conf   = TDA9887_PRESENT,
 427                .inputs         = {{
 428                        .name = name_tv,
 429                        .vmux = 1,
 430                        .amux = TV,
 431                        .tv   = 1,
 432                },{
 433                        .name = name_tv_mono,
 434                        .vmux = 1,
 435                        .amux   = LINE2,
 436                        .tv   = 1,
 437                },{
 438
 439                        .name = name_svideo,
 440                        .vmux = 8,
 441                        .amux = LINE1,
 442                },{
 443                        .name = name_comp1,
 444                        .vmux = 3,
 445                        .amux = LINE1,
 446                },{
 447
 448                        .name = "CVid over SVid",
 449                        .vmux = 0,
 450                        .amux = LINE1,
 451                }},
 452                .radio = {
 453                        .name = name_radio,
 454                        .amux = LINE2,
 455                },
 456        },
 457        [SAA7134_BOARD_TVSTATION_DVR] = {
 458                .name           = "KNC One TV-Station DVR",
 459                .audio_clock    = 0x00200000,
 460                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
 461                .radio_type     = UNSET,
 462                .tuner_addr     = ADDR_UNSET,
 463                .radio_addr     = ADDR_UNSET,
 464                .empress_addr   = 0x20,
 465                .tda9887_conf   = TDA9887_PRESENT,
 466                .gpiomask       = 0x820000,
 467                .inputs         = {{
 468                        .name = name_tv,
 469                        .vmux = 1,
 470                        .amux = TV,
 471                        .tv   = 1,
 472                        .gpio = 0x20000,
 473                },{
 474                        .name = name_svideo,
 475                        .vmux = 8,
 476                        .amux = LINE1,
 477                        .gpio = 0x20000,
 478                },{
 479                        .name = name_comp1,
 480                        .vmux = 3,
 481                        .amux = LINE1,
 482                        .gpio = 0x20000,
 483                }},
 484                .radio          = {
 485                        .name = name_radio,
 486                        .amux = LINE2,
 487                        .gpio = 0x20000,
 488                },
 489                .mpeg           = SAA7134_MPEG_EMPRESS,
 490                .video_out      = CCIR656,
 491        },
 492        [SAA7134_BOARD_CINERGY400] = {
 493                .name           = "Terratec Cinergy 400 TV",
 494                .audio_clock    = 0x00200000,
 495                .tuner_type     = TUNER_PHILIPS_PAL,
 496                .radio_type     = UNSET,
 497                .tuner_addr     = ADDR_UNSET,
 498                .radio_addr     = ADDR_UNSET,
 499                .inputs         = {{
 500                        .name = name_tv,
 501                        .vmux = 1,
 502                        .amux = TV,
 503                        .tv   = 1,
 504                },{
 505                        .name = name_comp1,
 506                        .vmux = 4,
 507                        .amux = LINE1,
 508                },{
 509                        .name = name_svideo,
 510                        .vmux = 8,
 511                        .amux = LINE1,
 512                },{
 513                        .name = name_comp2, /* CVideo over SVideo Connector */
 514                        .vmux = 0,
 515                        .amux = LINE1,
 516                }}
 517        },
 518        [SAA7134_BOARD_MD5044] = {
 519                .name           = "Medion 5044",
 520                .audio_clock    = 0x00187de7, /* was: 0x00200000, */
 521                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
 522                .radio_type     = UNSET,
 523                .tuner_addr     = ADDR_UNSET,
 524                .radio_addr     = ADDR_UNSET,
 525                .tda9887_conf   = TDA9887_PRESENT,
 526                .inputs         = {{
 527                        .name = name_tv,
 528                        .vmux = 1,
 529                        .amux = TV,
 530                        .tv   = 1,
 531                },{
 532                        /* workaround for problems with normal TV sound */
 533                        .name = name_tv_mono,
 534                        .vmux = 1,
 535                        .amux = LINE2,
 536                        .tv   = 1,
 537                },{
 538                        .name = name_comp1,
 539                        .vmux = 0,
 540                        .amux = LINE2,
 541                },{
 542                        .name = name_comp2,
 543                        .vmux = 3,
 544                        .amux = LINE2,
 545                },{
 546                        .name = name_svideo,
 547                        .vmux = 8,
 548                        .amux = LINE2,
 549                }},
 550                .radio = {
 551                        .name = name_radio,
 552                        .amux = LINE2,
 553                },
 554        },
 555        [SAA7134_BOARD_KWORLD] = {
 556                .name           = "Kworld/KuroutoShikou SAA7130-TVPCI",
 557                .audio_clock    = 0x00187de7,
 558                .tuner_type     = TUNER_PHILIPS_NTSC_M,
 559                .radio_type     = UNSET,
 560                .tuner_addr     = ADDR_UNSET,
 561                .radio_addr     = ADDR_UNSET,
 562                .inputs         = {{
 563                        .name = name_svideo,
 564                        .vmux = 8,
 565                        .amux = LINE1,
 566                },{
 567                        .name = name_comp1,
 568                        .vmux = 3,
 569                        .amux = LINE1,
 570                },{
 571                        .name = name_tv,
 572                        .vmux = 1,
 573                        .amux = LINE2,
 574                        .tv   = 1,
 575                }},
 576        },
 577        [SAA7134_BOARD_CINERGY600] = {
 578                .name           = "Terratec Cinergy 600 TV",
 579                .audio_clock    = 0x00200000,
 580                .tuner_type     = TUNER_PHILIPS_PAL,
 581                .radio_type     = UNSET,
 582                .tuner_addr     = ADDR_UNSET,
 583                .radio_addr     = ADDR_UNSET,
 584                .tda9887_conf   = TDA9887_PRESENT,
 585                .inputs         = {{
 586                        .name = name_tv,
 587                        .vmux = 1,
 588                        .amux = TV,
 589                        .tv   = 1,
 590                },{
 591                        .name = name_comp1,
 592                        .vmux = 4,
 593                        .amux = LINE1,
 594                },{
 595                        .name = name_svideo,
 596                        .vmux = 8,
 597                        .amux = LINE1,
 598                },{
 599                        .name = name_comp2, /* CVideo over SVideo Connector */
 600                        .vmux = 0,
 601                        .amux = LINE1,
 602                }},
 603                .radio = {
 604                        .name = name_radio,
 605                        .amux = LINE2,
 606                },
 607        },
 608        [SAA7134_BOARD_MD7134] = {
 609                .name           = "Medion 7134",
 610                .audio_clock    = 0x00187de7,
 611                .tuner_type     = TUNER_PHILIPS_FMD1216ME_MK3,
 612                .radio_type     = UNSET,
 613                .tuner_addr     = ADDR_UNSET,
 614                .radio_addr     = ADDR_UNSET,
 615                .tda9887_conf   = TDA9887_PRESENT,
 616                .mpeg           = SAA7134_MPEG_DVB,
 617                .inputs = {{
 618                        .name   = name_tv,
 619                        .vmux   = 1,
 620                        .amux   = TV,
 621                        .tv     = 1,
 622                },{
 623                        .name   = name_comp1,
 624                        .vmux   = 0,
 625                        .amux   = LINE1,
 626                },{
 627                        .name   = name_svideo,
 628                        .vmux   = 8,
 629                        .amux   = LINE1,
 630                }},
 631                .radio = {
 632                        .name   = name_radio,
 633                        .amux   = LINE2,
 634               },
 635               .mute = {
 636                       .name = name_mute,
 637                       .amux = TV,
 638                },
 639        },
 640        [SAA7134_BOARD_TYPHOON_90031] = {
 641                /* aka Typhoon "TV+Radio", Art.Nr 90031 */
 642                /* Tom Zoerner <tomzo at users sourceforge net> */
 643                .name           = "Typhoon TV+Radio 90031",
 644                .audio_clock    = 0x00200000,
 645                .tuner_type     = TUNER_PHILIPS_PAL,
 646                .radio_type     = UNSET,
 647                .tuner_addr     = ADDR_UNSET,
 648                .radio_addr     = ADDR_UNSET,
 649                .tda9887_conf   = TDA9887_PRESENT,
 650                .inputs         = {{
 651                        .name   = name_tv,
 652                        .vmux   = 1,
 653                        .amux   = TV,
 654                        .tv     = 1,
 655                },{
 656                        .name   = name_comp1,
 657                        .vmux   = 3,
 658                        .amux   = LINE1,
 659                },{
 660                        .name   = name_svideo,
 661                        .vmux   = 8,
 662                        .amux   = LINE1,
 663                }},
 664                .radio = {
 665                        .name   = name_radio,
 666                        .amux   = LINE2,
 667                },
 668        },
 669        [SAA7134_BOARD_ELSA] = {
 670                .name           = "ELSA EX-VISION 300TV",
 671                .audio_clock    = 0x00187de7,
 672                .tuner_type     = TUNER_HITACHI_NTSC,
 673                .radio_type     = UNSET,
 674                .tuner_addr     = ADDR_UNSET,
 675                .radio_addr     = ADDR_UNSET,
 676                .inputs         = {{
 677                        .name = name_svideo,
 678                        .vmux = 8,
 679                        .amux = LINE1,
 680                },{
 681                        .name   = name_comp1,
 682                        .vmux   = 0,
 683                        .amux   = LINE1,
 684                },{
 685                        .name = name_tv,
 686                        .vmux = 4,
 687                        .amux = LINE2,
 688                        .tv   = 1,
 689                }},
 690        },
 691        [SAA7134_BOARD_ELSA_500TV] = {
 692                .name           = "ELSA EX-VISION 500TV",
 693                .audio_clock    = 0x00187de7,
 694                .tuner_type     = TUNER_HITACHI_NTSC,
 695                .radio_type     = UNSET,
 696                .tuner_addr     = ADDR_UNSET,
 697                .radio_addr     = ADDR_UNSET,
 698                .inputs         = {{
 699                        .name = name_svideo,
 700                        .vmux = 7,
 701                        .amux = LINE1,
 702                },{
 703                        .name = name_tv,
 704                        .vmux = 8,
 705                        .amux = TV,
 706                        .tv   = 1,
 707                },{
 708                        .name = name_tv_mono,
 709                        .vmux = 8,
 710                        .amux = LINE2,
 711                        .tv   = 1,
 712                }},
 713        },
 714        [SAA7134_BOARD_ELSA_700TV] = {
 715                .name           = "ELSA EX-VISION 700TV",
 716                .audio_clock    = 0x00187de7,
 717                .tuner_type     = TUNER_HITACHI_NTSC,
 718                .radio_type     = UNSET,
 719                .tuner_addr     = ADDR_UNSET,
 720                .radio_addr     = ADDR_UNSET,
 721                .inputs         = {{
 722                        .name = name_tv,
 723                        .vmux = 4,
 724                        .amux = LINE2,
 725                        .tv   = 1,
 726                },{
 727                        .name = name_comp1,
 728                        .vmux = 6,
 729                        .amux = LINE1,
 730                },{
 731                        .name = name_svideo,
 732                        .vmux = 7,
 733                        .amux = LINE1,
 734                }},
 735                .mute           = {
 736                        .name = name_mute,
 737                        .amux = TV,
 738                },
 739        },
 740        [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
 741                .name           = "ASUS TV-FM 7134",
 742                .audio_clock    = 0x00187de7,
 743                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
 744                .radio_type     = UNSET,
 745                .tuner_addr     = ADDR_UNSET,
 746                .radio_addr     = ADDR_UNSET,
 747                .tda9887_conf   = TDA9887_PRESENT,
 748                .inputs         = {{
 749                        .name = name_tv,
 750                        .vmux = 1,
 751                        .amux = TV,
 752                        .tv   = 1,
 753                },{
 754                        .name = name_comp1,
 755                        .vmux = 4,
 756                        .amux = LINE2,
 757                },{
 758                        .name = name_svideo,
 759                        .vmux = 6,
 760                        .amux = LINE2,
 761                }},
 762                .radio = {
 763                        .name = name_radio,
 764                        .amux = LINE1,
 765                },
 766        },
 767        [SAA7134_BOARD_ASUSTeK_TVFM7135] = {
 768                .name           = "ASUS TV-FM 7135",
 769                .audio_clock    = 0x00187de7,
 770                .tuner_type     = TUNER_PHILIPS_TDA8290,
 771                .radio_type     = UNSET,
 772                .tuner_addr     = ADDR_UNSET,
 773                .radio_addr     = ADDR_UNSET,
 774                .gpiomask       = 0x200000,
 775                .inputs         = {{
 776                        .name = name_tv,
 777                        .vmux = 1,
 778                        .amux = TV,
 779                        .gpio = 0x0000,
 780                        .tv   = 1,
 781                },{
 782                        .name = name_comp1,
 783                        .vmux = 4,
 784                        .amux = LINE2,
 785                        .gpio = 0x0000,
 786                },{
 787                        .name = name_svideo,
 788                        .vmux = 6,
 789                        .amux = LINE2,
 790                        .gpio = 0x0000,
 791                }},
 792                .radio = {
 793                        .name = name_radio,
 794                        .amux = TV,
 795                        .gpio = 0x200000,
 796                },
 797                .mute  = {
 798                        .name = name_mute,
 799                        .gpio = 0x0000,
 800                },
 801
 802        },
 803        [SAA7134_BOARD_VA1000POWER] = {
 804                .name           = "AOPEN VA1000 POWER",
 805                .audio_clock    = 0x00187de7,
 806                .tuner_type     = TUNER_PHILIPS_NTSC,
 807                .radio_type     = UNSET,
 808                .tuner_addr     = ADDR_UNSET,
 809                .radio_addr     = ADDR_UNSET,
 810                .inputs         = {{
 811                        .name = name_svideo,
 812                        .vmux = 8,
 813                        .amux = LINE1,
 814                },{
 815                        .name = name_comp1,
 816                        .vmux = 3,
 817                        .amux = LINE1,
 818                },{
 819                        .name = name_tv,
 820                        .vmux = 1,
 821                        .amux = LINE2,
 822                        .tv   = 1,
 823                }},
 824        },
 825        [SAA7134_BOARD_10MOONSTVMASTER] = {
 826                /* "lilicheng" <llc@linuxfans.org> */
 827                .name           = "10MOONS PCI TV CAPTURE CARD",
 828                .audio_clock    = 0x00200000,
 829                .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
 830                .radio_type     = UNSET,
 831                .tuner_addr     = ADDR_UNSET,
 832                .radio_addr     = ADDR_UNSET,
 833                .gpiomask       = 0xe000,
 834                .inputs         = {{
 835                        .name = name_tv,
 836                        .vmux = 1,
 837                        .amux = LINE2,
 838                        .gpio = 0x0000,
 839                        .tv   = 1,
 840                },{
 841                        .name = name_comp1,
 842                        .vmux = 0,
 843                        .amux = LINE2,
 844                        .gpio = 0x4000,
 845                },{
 846                        .name = name_comp2,
 847                        .vmux = 3,
 848                        .amux = LINE2,
 849                        .gpio = 0x4000,
 850                },{
 851                        .name = name_svideo,
 852                        .vmux = 8,
 853                        .amux = LINE2,
 854                        .gpio = 0x4000,
 855                }},
 856                .radio = {
 857                        .name = name_radio,
 858                        .amux = LINE2,
 859                        .gpio = 0x2000,
 860                },
 861                .mute = {
 862                        .name = name_mute,
 863                        .amux = LINE2,
 864                        .gpio = 0x8000,
 865                },
 866        },
 867        [SAA7134_BOARD_BMK_MPEX_NOTUNER] = {
 868                /* "Andrew de Quincey" <adq@lidskialf.net> */
 869                .name           = "BMK MPEX No Tuner",
 870                .audio_clock    = 0x200000,
 871                .tuner_type     = TUNER_ABSENT,
 872                .radio_type     = UNSET,
 873                .tuner_addr     = ADDR_UNSET,
 874                .radio_addr     = ADDR_UNSET,
 875                .empress_addr   = 0x20,
 876                .inputs         = {{
 877                        .name = name_comp1,
 878                        .vmux = 4,
 879                        .amux = LINE1,
 880                },{
 881                        .name = name_comp2,
 882                        .vmux = 3,
 883                        .amux = LINE1,
 884                },{
 885                        .name = name_comp3,
 886                        .vmux = 0,
 887                        .amux = LINE1,
 888                },{
 889                        .name = name_comp4,
 890                        .vmux = 1,
 891                        .amux = LINE1,
 892                },{
 893                        .name = name_svideo,
 894                        .vmux = 8,
 895                        .amux = LINE1,
 896                }},
 897                .mpeg      = SAA7134_MPEG_EMPRESS,
 898                .video_out = CCIR656,
 899        },
 900        [SAA7134_BOARD_VIDEOMATE_TV] = {
 901                .name           = "Compro VideoMate TV",
 902                .audio_clock    = 0x00187de7,
 903                .tuner_type     = TUNER_PHILIPS_NTSC_M,
 904                .radio_type     = UNSET,
 905                .tuner_addr     = ADDR_UNSET,
 906                .radio_addr     = ADDR_UNSET,
 907                .inputs         = {{
 908                        .name = name_svideo,
 909                        .vmux = 8,
 910                        .amux = LINE1,
 911                },{
 912                        .name = name_comp1,
 913                        .vmux = 3,
 914                        .amux = LINE1,
 915                },{
 916                        .name = name_tv,
 917                        .vmux = 1,
 918                        .amux = LINE2,
 919                        .tv   = 1,
 920                }},
 921        },
 922        [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS] = {
 923                .name           = "Compro VideoMate TV Gold+",
 924                .audio_clock    = 0x00187de7,
 925                .tuner_type     = TUNER_PHILIPS_NTSC_M,
 926                .gpiomask       = 0x800c0000,
 927                .radio_type     = UNSET,
 928                .tuner_addr     = ADDR_UNSET,
 929                .radio_addr     = ADDR_UNSET,
 930                .inputs         = {{
 931                        .name = name_svideo,
 932                        .vmux = 8,
 933                        .amux = LINE1,
 934                        .gpio = 0x06c00012,
 935                },{
 936                        .name = name_comp1,
 937                        .vmux = 3,
 938                        .amux = LINE1,
 939                        .gpio = 0x0ac20012,
 940                },{
 941                        .name = name_tv,
 942                        .vmux = 1,
 943                        .amux = LINE2,
 944                        .gpio = 0x08c20012,
 945                        .tv   = 1,
 946                }},                             /* radio and probably mute is missing */
 947        },
 948        [SAA7134_BOARD_CRONOS_PLUS] = {
 949                /*
 950                gpio pins:
 951                        0  .. 3   BASE_ID
 952                        4  .. 7   PROTECT_ID
 953                        8  .. 11  USER_OUT
 954                        12 .. 13  USER_IN
 955                        14 .. 15  VIDIN_SEL
 956                */
 957                .name           = "Matrox CronosPlus",
 958                .tuner_type     = TUNER_ABSENT,
 959                .radio_type     = UNSET,
 960                .tuner_addr     = ADDR_UNSET,
 961                .radio_addr     = ADDR_UNSET,
 962                .gpiomask       = 0xcf00,
 963                .inputs         = {{
 964                        .name = name_comp1,
 965                        .vmux = 0,
 966                        .gpio = 2 << 14,
 967                },{
 968                        .name = name_comp2,
 969                        .vmux = 0,
 970                        .gpio = 1 << 14,
 971                },{
 972                        .name = name_comp3,
 973                        .vmux = 0,
 974                        .gpio = 0 << 14,
 975                },{
 976                        .name = name_comp4,
 977                        .vmux = 0,
 978                        .gpio = 3 << 14,
 979                },{
 980                        .name = name_svideo,
 981                        .vmux = 8,
 982                        .gpio = 2 << 14,
 983                }},
 984        },
 985        [SAA7134_BOARD_MD2819] = {
 986                .name           = "AverMedia M156 / Medion 2819",
 987                .audio_clock    = 0x00187de7,
 988                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
 989                .radio_type     = UNSET,
 990                .tuner_addr     = ADDR_UNSET,
 991                .radio_addr     = ADDR_UNSET,
 992                .tda9887_conf   = TDA9887_PRESENT,
 993                .gpiomask       = 0x03,
 994                .inputs         = {{
 995                        .name = name_tv,
 996                        .vmux = 1,
 997                        .amux = TV,
 998                        .tv   = 1,
 999                        .gpio = 0x00,
1000                }, {
1001                        .name = name_comp1,
1002                        .vmux = 3,
1003                        .amux = LINE1,
1004                        .gpio = 0x02,
1005                }, {
1006                        .name = name_comp2,
1007                        .vmux = 0,
1008                        .amux = LINE1,
1009                        .gpio = 0x02,
1010                }, {
1011                        .name = name_svideo,
1012                        .vmux = 8,
1013                        .amux = LINE1,
1014                        .gpio = 0x02,
1015                } },
1016                .radio = {
1017                        .name = name_radio,
1018                        .amux = LINE1,
1019                        .gpio = 0x01,
1020                },
1021                .mute  = {
1022                        .name = name_mute,
1023                        .amux = TV,
1024                        .gpio = 0x00,
1025                },
1026        },
1027        [SAA7134_BOARD_BMK_MPEX_TUNER] = {
1028                /* "Greg Wickham <greg.wickham@grangenet.net> */
1029                .name           = "BMK MPEX Tuner",
1030                .audio_clock    = 0x200000,
1031                .tuner_type     = TUNER_PHILIPS_PAL,
1032                .radio_type     = UNSET,
1033                .tuner_addr     = ADDR_UNSET,
1034                .radio_addr     = ADDR_UNSET,
1035                .empress_addr   = 0x20,
1036                .inputs         = {{
1037                        .name = name_comp1,
1038                        .vmux = 1,
1039                        .amux = LINE1,
1040                },{
1041                        .name = name_svideo,
1042                        .vmux = 8,
1043                        .amux = LINE1,
1044                },{
1045                        .name = name_tv,
1046                        .vmux = 3,
1047                        .amux = TV,
1048                        .tv   = 1,
1049                }},
1050                .mpeg      = SAA7134_MPEG_EMPRESS,
1051                .video_out = CCIR656,
1052        },
1053        [SAA7134_BOARD_ASUSTEK_TVFM7133] = {
1054                .name           = "ASUS TV-FM 7133",
1055                .audio_clock    = 0x00187de7,
1056                /* probably wrong, the 7133 one is the NTSC version ...
1057                * .tuner_type  = TUNER_PHILIPS_FM1236_MK3 */
1058                .tuner_type     = TUNER_LG_NTSC_NEW_TAPC,
1059                .radio_type     = UNSET,
1060                .tuner_addr     = ADDR_UNSET,
1061                .radio_addr     = ADDR_UNSET,
1062                .tda9887_conf   = TDA9887_PRESENT,
1063                .inputs         = {{
1064                        .name = name_tv,
1065                        .vmux = 1,
1066                        .amux = TV,
1067                        .tv   = 1,
1068
1069                },{
1070                        .name = name_comp1,
1071                        .vmux = 4,
1072                        .amux = LINE2,
1073                },{
1074                        .name = name_svideo,
1075                        .vmux = 6,
1076                        .amux = LINE2,
1077                }},
1078                .radio = {
1079                        .name = name_radio,
1080                        .amux = LINE1,
1081                },
1082        },
1083        [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = {
1084                .name           = "Pinnacle PCTV Stereo (saa7134)",
1085                .audio_clock    = 0x00187de7,
1086                .tuner_type     = TUNER_MT2032,
1087                .radio_type     = UNSET,
1088                .tuner_addr     = ADDR_UNSET,
1089                .radio_addr     = ADDR_UNSET,
1090                .tda9887_conf   = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
1091                .inputs         = {{
1092                        .name = name_tv,
1093                        .vmux = 3,
1094                        .amux = TV,
1095                        .tv   = 1,
1096                },{
1097                        .name = name_comp1,
1098                        .vmux = 0,
1099                        .amux = LINE2,
1100                },{
1101                        .name = name_comp2,
1102                        .vmux = 1,
1103                        .amux = LINE2,
1104                },{
1105                        .name = name_svideo,
1106                        .vmux = 8,
1107                        .amux = LINE2,
1108                }},
1109        },
1110        [SAA7134_BOARD_MANLI_MTV002] = {
1111                /* Ognjen Nastic <ognjen@logosoft.ba> */
1112                .name           = "Manli MuchTV M-TV002",
1113                .audio_clock    = 0x00200000,
1114                .tuner_type     = TUNER_PHILIPS_PAL,
1115                .radio_type     = UNSET,
1116                .tuner_addr     = ADDR_UNSET,
1117                .radio_addr     = ADDR_UNSET,
1118                .inputs         = {{
1119                        .name = name_svideo,
1120                        .vmux = 8,
1121                        .amux = LINE1,
1122                },{
1123                        .name   = name_comp1,
1124                        .vmux   = 1,
1125                        .amux   = LINE1,
1126                },{
1127                        .name = name_tv,
1128                        .vmux = 3,
1129                        .amux = LINE2,
1130                        .tv   = 1,
1131                }},
1132                .radio = {
1133                        .name = name_radio,
1134                        .amux = LINE2,
1135                },
1136        },
1137        [SAA7134_BOARD_MANLI_MTV001] = {
1138                /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
1139                .name           = "Manli MuchTV M-TV001",
1140                .audio_clock    = 0x00200000,
1141                .tuner_type     = TUNER_PHILIPS_PAL,
1142                .radio_type     = UNSET,
1143                .tuner_addr     = ADDR_UNSET,
1144                .radio_addr     = ADDR_UNSET,
1145                .inputs         = {{
1146                        .name = name_svideo,
1147                        .vmux = 8,
1148                        .amux = LINE1,
1149                },{
1150                        .name = name_comp1,
1151                        .vmux = 1,
1152                        .amux = LINE1,
1153                },{
1154                        .name = name_tv,
1155                        .vmux = 3,
1156                        .amux = LINE2,
1157                        .tv   = 1,
1158                }},
1159                .mute = {
1160                        .name = name_mute,
1161                        .amux = LINE1,
1162                },
1163        },
1164        [SAA7134_BOARD_TG3000TV] = {
1165                /* TransGear 3000TV */
1166                .name           = "Nagase Sangyo TransGear 3000TV",
1167                .audio_clock    = 0x00187de7,
1168                .tuner_type     = TUNER_PHILIPS_NTSC_M,
1169                .radio_type     = UNSET,
1170                .tuner_addr     = ADDR_UNSET,
1171                .radio_addr     = ADDR_UNSET,
1172                .inputs         = {{
1173                        .name = name_tv,
1174                        .vmux = 1,
1175                        .amux = LINE2,
1176                        .tv   = 1,
1177                },{
1178                        .name = name_comp1,
1179                        .vmux = 3,
1180                        .amux = LINE2,
1181                },{
1182                        .name = name_svideo,
1183                        .vmux = 8,
1184                        .amux = LINE2,
1185                }},
1186        },
1187        [SAA7134_BOARD_ECS_TVP3XP] = {
1188                .name           = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
1189                .audio_clock    = 0x187de7,  /* xtal 32.1 MHz */
1190                .tuner_type     = TUNER_PHILIPS_PAL,
1191                .radio_type     = UNSET,
1192                .tuner_addr     = ADDR_UNSET,
1193                .radio_addr     = ADDR_UNSET,
1194                .inputs         = {{
1195                        .name   = name_tv,
1196                        .vmux   = 1,
1197                        .amux   = TV,
1198                        .tv     = 1,
1199                },{
1200                        .name   = name_tv_mono,
1201                        .vmux   = 1,
1202                        .amux   = LINE2,
1203                        .tv     = 1,
1204                },{
1205                        .name   = name_comp1,
1206                        .vmux   = 3,
1207                        .amux   = LINE1,
1208                },{
1209                        .name   = name_svideo,
1210                        .vmux   = 8,
1211                        .amux   = LINE1,
1212                },{
1213                        .name   = "CVid over SVid",
1214                        .vmux   = 0,
1215                        .amux   = LINE1,
1216                }},
1217                .radio = {
1218                        .name   = name_radio,
1219                        .amux   = LINE2,
1220                },
1221        },
1222        [SAA7134_BOARD_ECS_TVP3XP_4CB5] = {
1223                .name           = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
1224                .audio_clock    = 0x187de7,
1225                .tuner_type     = TUNER_PHILIPS_NTSC,
1226                .radio_type     = UNSET,
1227                .tuner_addr     = ADDR_UNSET,
1228                .radio_addr     = ADDR_UNSET,
1229                .inputs         = {{
1230                        .name   = name_tv,
1231                        .vmux   = 1,
1232                        .amux   = TV,
1233                        .tv     = 1,
1234                },{
1235                        .name   = name_tv_mono,
1236                        .vmux   = 1,
1237                        .amux   = LINE2,
1238                        .tv     = 1,
1239                },{
1240                        .name   = name_comp1,
1241                        .vmux   = 3,
1242                        .amux   = LINE1,
1243                },{
1244                        .name   = name_svideo,
1245                        .vmux   = 8,
1246                        .amux   = LINE1,
1247                },{
1248                        .name   = "CVid over SVid",
1249                        .vmux   = 0,
1250                        .amux   = LINE1,
1251                }},
1252                .radio = {
1253                        .name   = name_radio,
1254                        .amux   = LINE2,
1255                },
1256        },
1257    [SAA7134_BOARD_ECS_TVP3XP_4CB6] = {
1258                /* Barry Scott <barry.scott@onelan.co.uk> */
1259                .name           = "Elitegroup ECS TVP3XP FM1246 Tuner Card (PAL,FM)",
1260                .audio_clock    = 0x187de7,
1261                .tuner_type     = TUNER_PHILIPS_PAL_I,
1262                .radio_type     = UNSET,
1263                .tuner_addr     = ADDR_UNSET,
1264                .radio_addr     = ADDR_UNSET,
1265                .inputs         = {{
1266                        .name   = name_tv,
1267                        .vmux   = 1,
1268                        .amux   = TV,
1269                        .tv     = 1,
1270                },{
1271                        .name   = name_tv_mono,
1272                        .vmux   = 1,
1273                        .amux   = LINE2,
1274                        .tv     = 1,
1275                },{
1276                        .name   = name_comp1,
1277                        .vmux   = 3,
1278                        .amux   = LINE1,
1279                },{
1280                        .name   = name_svideo,
1281                        .vmux   = 8,
1282                        .amux   = LINE1,
1283                },{
1284                        .name   = "CVid over SVid",
1285                        .vmux   = 0,
1286                        .amux   = LINE1,
1287                }},
1288                .radio = {
1289                        .name   = name_radio,
1290                        .amux   = LINE2,
1291                },
1292        },
1293        [SAA7134_BOARD_AVACSSMARTTV] = {
1294                /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
1295                .name           = "AVACS SmartTV",
1296                .audio_clock    = 0x00187de7,
1297                .tuner_type     = TUNER_PHILIPS_PAL,
1298                .radio_type     = UNSET,
1299                .tuner_addr     = ADDR_UNSET,
1300                .radio_addr     = ADDR_UNSET,
1301                .inputs         = {{
1302                        .name = name_tv,
1303                        .vmux = 1,
1304                        .amux = TV,
1305                        .tv   = 1,
1306                },{
1307                        .name = name_tv_mono,
1308                        .vmux = 1,
1309                        .amux = LINE2,
1310                        .tv   = 1,
1311                },{
1312                        .name = name_comp1,
1313                        .vmux = 0,
1314                        .amux = LINE2,
1315                },{
1316                        .name = name_comp2,
1317                        .vmux = 3,
1318                        .amux = LINE2,
1319                },{
1320                        .name = name_svideo,
1321                        .vmux = 8,
1322                        .amux = LINE2,
1323                }},
1324                .radio = {
1325                        .name = name_radio,
1326                        .amux = LINE2,
1327                        .gpio = 0x200000,
1328                },
1329        },
1330        [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = {
1331                /* Michael Smith <msmith@cbnco.com> */
1332                .name           = "AVerMedia DVD EZMaker",
1333                .audio_clock    = 0x00187de7,
1334                .tuner_type     = TUNER_ABSENT,
1335                .radio_type     = UNSET,
1336                .tuner_addr     = ADDR_UNSET,
1337                .radio_addr     = ADDR_UNSET,
1338                .inputs         = {{
1339                        .name = name_comp1,
1340                        .vmux = 3,
1341                },{
1342                        .name = name_svideo,
1343                        .vmux = 8,
1344                }},
1345        },
1346        [SAA7134_BOARD_AVERMEDIA_M103] = {
1347                /* Massimo Piccioni <dafastidio@libero.it> */
1348                .name           = "AVerMedia MiniPCI DVB-T Hybrid M103",
1349                .audio_clock    = 0x187de7,
1350                .tuner_type     = TUNER_XC2028,
1351                .radio_type     = UNSET,
1352                .tuner_addr     = ADDR_UNSET,
1353                .radio_addr     = ADDR_UNSET,
1354                 .mpeg           = SAA7134_MPEG_DVB,
1355                 .inputs         = {{
1356                         .name = name_tv,
1357                         .vmux = 1,
1358                         .amux = TV,
1359                         .tv   = 1,
1360                 } },
1361        },
1362        [SAA7134_BOARD_NOVAC_PRIMETV7133] = {
1363                /* toshii@netbsd.org */
1364                .name           = "Noval Prime TV 7133",
1365                .audio_clock    = 0x00200000,
1366                .tuner_type     = TUNER_ALPS_TSBH1_NTSC,
1367                .radio_type     = UNSET,
1368                .tuner_addr     = ADDR_UNSET,
1369                .radio_addr     = ADDR_UNSET,
1370                .inputs         = {{
1371                        .name = name_comp1,
1372                        .vmux = 3,
1373                },{
1374                        .name = name_tv,
1375                        .vmux = 1,
1376                        .amux = TV,
1377                        .tv   = 1,
1378                },{
1379                        .name = name_svideo,
1380                        .vmux = 8,
1381                }},
1382        },
1383        [SAA7134_BOARD_AVERMEDIA_STUDIO_305] = {
1384                .name           = "AverMedia AverTV Studio 305",
1385                .audio_clock    = 0x00187de7,
1386                .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
1387                .radio_type     = UNSET,
1388                .tuner_addr     = ADDR_UNSET,
1389                .radio_addr     = ADDR_UNSET,
1390                .tda9887_conf   = TDA9887_PRESENT,
1391                .inputs         = {{
1392                        .name = name_tv,
1393                        .vmux = 1,
1394                        .amux = LINE2,
1395                        .tv   = 1,
1396                },{
1397                        .name = name_comp1,
1398                        .vmux = 0,
1399                        .amux = LINE2,
1400                },{
1401                        .name = name_comp2,
1402                        .vmux = 3,
1403                        .amux = LINE2,
1404                },{
1405                        .name = name_svideo,
1406                        .vmux = 8,
1407                        .amux = LINE2,
1408                }},
1409                .radio = {
1410                        .name = name_radio,
1411                        .amux = LINE2,
1412                },
1413                .mute = {
1414                        .name = name_mute,
1415                        .amux = LINE1,
1416                },
1417        },
1418        [SAA7134_BOARD_AVERMEDIA_STUDIO_505] = {
1419                /* Vasiliy Temnikov <vaka@newmail.ru> */
1420                .name           = "AverMedia AverTV Studio 505",
1421                .audio_clock    = 0x00187de7,
1422                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
1423                .radio_type     = UNSET,
1424                .tuner_addr     = ADDR_UNSET,
1425                .radio_addr     = ADDR_UNSET,
1426                .tda9887_conf   = TDA9887_PRESENT,
1427                .inputs         = { {
1428                        .name = name_tv,
1429                        .vmux = 1,
1430                        .amux = LINE2,
1431                        .tv   = 1,
1432                }, {
1433                        .name = name_comp1,
1434                        .vmux = 0,
1435                        .amux = LINE2,
1436                }, {
1437                        .name = name_comp2,
1438                        .vmux = 3,
1439                        .amux = LINE2,
1440                },{
1441                        .name = name_svideo,
1442                        .vmux = 8,
1443                        .amux = LINE2,
1444                } },
1445                .radio = {
1446                        .name = name_radio,
1447                        .amux = LINE2,
1448                },
1449                .mute = {
1450                        .name = name_mute,
1451                        .amux = LINE1,
1452                },
1453        },
1454        [SAA7134_BOARD_UPMOST_PURPLE_TV] = {
1455                .name           = "UPMOST PURPLE TV",
1456                .audio_clock    = 0x00187de7,
1457                .tuner_type     = TUNER_PHILIPS_FM1236_MK3,
1458                .radio_type     = UNSET,
1459                .tuner_addr     = ADDR_UNSET,
1460                .radio_addr     = ADDR_UNSET,
1461                .tda9887_conf   = TDA9887_PRESENT,
1462                .inputs         = {{
1463                        .name = name_tv,
1464                        .vmux = 7,
1465                        .amux = TV,
1466                        .tv   = 1,
1467                },{
1468                        .name = name_svideo,
1469                        .vmux = 7,
1470                        .amux = LINE1,
1471                }},
1472        },
1473        [SAA7134_BOARD_ITEMS_MTV005] = {
1474                /* Norman Jonas <normanjonas@arcor.de> */
1475                .name           = "Items MuchTV Plus / IT-005",
1476                .audio_clock    = 0x00187de7,
1477                .tuner_type     = TUNER_PHILIPS_PAL,
1478                .radio_type     = UNSET,
1479                .tuner_addr     = ADDR_UNSET,
1480                .radio_addr     = ADDR_UNSET,
1481                .inputs         = {{
1482                        .name = name_tv,
1483                        .vmux = 3,
1484                        .amux = TV,
1485                        .tv   = 1,
1486                },{
1487                        .name   = name_comp1,
1488                        .vmux   = 1,
1489                        .amux   = LINE1,
1490                },{
1491                        .name = name_svideo,
1492                        .vmux = 8,
1493                        .amux = LINE1,
1494                }},
1495                .radio = {
1496                        .name = name_radio,
1497                        .amux = LINE2,
1498                },
1499        },
1500        [SAA7134_BOARD_CINERGY200] = {
1501                .name           = "Terratec Cinergy 200 TV",
1502                .audio_clock    = 0x00200000,
1503                .tuner_type     = TUNER_PHILIPS_PAL,
1504                .radio_type     = UNSET,
1505                .tuner_addr     = ADDR_UNSET,
1506                .radio_addr     = ADDR_UNSET,
1507                .inputs         = {{
1508                        .name = name_tv,
1509                        .vmux = 1,
1510                        .amux = LINE2,
1511                        .tv   = 1,
1512                },{
1513                        .name = name_comp1,
1514                        .vmux = 4,
1515                        .amux = LINE1,
1516                },{
1517                        .name = name_svideo,
1518                        .vmux = 8,
1519                        .amux = LINE1,
1520                },{
1521                        .name = name_comp2, /* CVideo over SVideo Connector */
1522                        .vmux = 0,
1523                        .amux = LINE1,
1524                }},
1525                .mute = {
1526                        .name = name_mute,
1527                        .amux = LINE2,
1528                },
1529        },
1530        [SAA7134_BOARD_VIDEOMATE_TV_PVR] = {
1531                /* Alain St-Denis <alain@topaze.homeip.net> */
1532                .name           = "Compro VideoMate TV PVR/FM",
1533                .audio_clock    = 0x00187de7,
1534                .tuner_type     = TUNER_PHILIPS_NTSC_M,
1535                .radio_type     = UNSET,
1536                .tuner_addr     = ADDR_UNSET,
1537                .radio_addr     = ADDR_UNSET,
1538                .gpiomask       = 0x808c0080,
1539                .inputs         = {{
1540                        .name = name_svideo,
1541                        .vmux = 8,
1542                        .amux = LINE1,
1543                        .gpio = 0x00080,
1544                },{
1545                        .name = name_comp1,
1546                        .vmux = 3,
1547                        .amux = LINE1,
1548                        .gpio = 0x00080,
1549                },{
1550                        .name = name_tv,
1551                        .vmux = 1,
1552                        .amux = LINE2_LEFT,
1553                        .tv   = 1,
1554                        .gpio = 0x00080,
1555                }},
1556                .radio = {
1557                        .name = name_radio,
1558                        .amux = LINE2,
1559                        .gpio = 0x80000,
1560                },
1561                .mute = {
1562                        .name = name_mute,
1563                        .amux = LINE2,
1564                        .gpio = 0x40000,
1565                },
1566        },
1567        [SAA7134_BOARD_SABRENT_SBTTVFM] = {
1568                /* Michael Rodriguez-Torrent <mrtorrent@asu.edu> */
1569                .name           = "Sabrent SBT-TVFM (saa7130)",
1570                .audio_clock    = 0x00187de7,
1571                .tuner_type     = TUNER_PHILIPS_NTSC_M,
1572                .radio_type     = UNSET,
1573                .tuner_addr     = ADDR_UNSET,
1574                .radio_addr     = ADDR_UNSET,
1575                .inputs         = {{
1576                        .name = name_comp1,
1577                        .vmux = 1,
1578                        .amux = LINE1,
1579                },{
1580                        .name = name_tv,
1581                        .vmux = 3,
1582                        .amux = LINE2,
1583                        .tv   = 1,
1584                },{
1585                        .name = name_svideo,
1586                        .vmux = 8,
1587                        .amux = LINE1,
1588                }},
1589                .radio = {
1590                        .name   = name_radio,
1591                        .amux   = LINE2,
1592                },
1593        },
1594        [SAA7134_BOARD_ZOLID_XPERT_TV7134] = {
1595                /* Helge Jensen <helge.jensen@slog.dk> */
1596                .name           = ":Zolid Xpert TV7134",
1597                .audio_clock    = 0x00187de7,
1598                .tuner_type     = TUNER_PHILIPS_NTSC,
1599                .radio_type     = UNSET,
1600                .tuner_addr     = ADDR_UNSET,
1601                .radio_addr     = ADDR_UNSET,
1602                .inputs         = {{
1603                        .name = name_svideo,
1604                        .vmux = 8,
1605                        .amux = LINE1,
1606                },{
1607                        .name = name_comp1,
1608                        .vmux = 3,
1609                        .amux = LINE1,
1610                },{
1611                        .name = name_tv,
1612                        .vmux = 1,
1613                        .amux = LINE2,
1614                        .tv   = 1,
1615                }},
1616        },
1617        [SAA7134_BOARD_EMPIRE_PCI_TV_RADIO_LE] = {
1618                /* "Matteo Az" <matte.az@nospam.libero.it> ;-) */
1619                .name           = "Empire PCI TV-Radio LE",
1620                .audio_clock    = 0x00187de7,
1621                .tuner_type     = TUNER_PHILIPS_PAL,
1622                .radio_type     = UNSET,
1623                .tuner_addr     = ADDR_UNSET,
1624                .radio_addr     = ADDR_UNSET,
1625                .gpiomask       = 0x4000,
1626                .inputs         = {{
1627                        .name = name_tv_mono,
1628                        .vmux = 1,
1629                        .amux = LINE2,
1630                        .gpio = 0x8000,
1631                        .tv   = 1,
1632                },{
1633                        .name = name_comp1,
1634                        .vmux = 3,
1635                        .amux = LINE1,
1636                        .gpio = 0x8000,
1637                },{
1638                        .name = name_svideo,
1639                        .vmux = 6,
1640                        .amux = LINE1,
1641                        .gpio = 0x8000,
1642                }},
1643                .radio = {
1644                        .name = name_radio,
1645                        .amux = LINE1,
1646                        .gpio = 0x8000,
1647                },
1648                .mute = {
1649                        .name = name_mute,
1650                        .amux = TV,
1651                        .gpio =0x8000,
1652                }
1653        },
1654        [SAA7134_BOARD_AVERMEDIA_STUDIO_307] = {
1655                /*
1656                Nickolay V. Shmyrev <nshmyrev@yandex.ru>
1657                Lots of thanks to Andrey Zolotarev <zolotarev_andrey@mail.ru>
1658                */
1659                .name           = "Avermedia AVerTV Studio 307",
1660                .audio_clock    = 0x00187de7,
1661                .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
1662                .radio_type     = UNSET,
1663                .tuner_addr     = ADDR_UNSET,
1664                .radio_addr     = ADDR_UNSET,
1665                .tda9887_conf   = TDA9887_PRESENT,
1666                .gpiomask       = 0x03,
1667                .inputs         = {{
1668                        .name = name_tv,
1669                        .vmux = 1,
1670                        .amux = TV,
1671                        .tv   = 1,
1672                        .gpio = 0x00,
1673                },{
1674                        .name = name_comp,
1675                        .vmux = 3,
1676                        .amux = LINE1,
1677                        .gpio = 0x02,
1678                },{
1679                        .name = name_svideo,
1680                        .vmux = 8,
1681                        .amux = LINE1,
1682                        .gpio = 0x02,
1683                }},
1684                .radio = {
1685                        .name = name_radio,
1686                        .amux = LINE1,
1687                        .gpio = 0x01,
1688                },
1689                .mute  = {
1690                        .name = name_mute,
1691                        .amux = LINE1,
1692                        .gpio = 0x00,
1693                },
1694        },
1695        [SAA7134_BOARD_AVERMEDIA_GO_007_FM] = {
1696                .name           = "Avermedia AVerTV GO 007 FM",
1697                .audio_clock    = 0x00187de7,
1698                .tuner_type     = TUNER_PHILIPS_TDA8290,
1699                .radio_type     = UNSET,
1700                .tuner_addr     = ADDR_UNSET,
1701                .radio_addr     = ADDR_UNSET,
1702                .gpiomask       = 0x00300003,
1703                /* .gpiomask       = 0x8c240003, */
1704                .inputs         = {{
1705                        .name = name_tv,
1706                        .vmux = 1,
1707                        .amux = TV,
1708                        .tv   = 1,
1709                        .gpio = 0x01,
1710                },{
1711                        .name = name_comp1,
1712                        .vmux = 0,
1713                        .amux = LINE1,
1714                        .gpio = 0x02,
1715                },{
1716                        .name = name_svideo,
1717                        .vmux = 6,
1718                        .amux = LINE1,
1719                        .gpio = 0x02,
1720                }},
1721                .radio = {
1722                        .name = name_radio,
1723                        .amux = TV,
1724                        .gpio = 0x00300001,
1725                },
1726                .mute = {
1727                        .name = name_mute,
1728                        .amux = TV,
1729                        .gpio = 0x01,
1730                },
1731        },
1732        [SAA7134_BOARD_AVERMEDIA_CARDBUS] = {
1733                /* Kees.Blom@cwi.nl */
1734                .name           = "AVerMedia Cardbus TV/Radio (E500)",
1735                .audio_clock    = 0x187de7,
1736                .tuner_type     = TUNER_PHILIPS_TDA8290,
1737                .radio_type     = UNSET,
1738                .tuner_addr     = ADDR_UNSET,
1739                .radio_addr     = ADDR_UNSET,
1740                .inputs         = {{
1741                        .name = name_tv,
1742                        .vmux = 1,
1743                        .amux = TV,
1744                        .tv   = 1,
1745                },{
1746                        .name = name_comp1,
1747                        .vmux = 3,
1748                        .amux = LINE2,
1749                },{
1750                        .name = name_svideo,
1751                        .vmux = 8,
1752                        .amux = LINE1,
1753                }},
1754                .radio = {
1755                        .name = name_radio,
1756                        .amux = LINE1,
1757                },
1758        },
1759        [SAA7134_BOARD_AVERMEDIA_CARDBUS_501] = {
1760                /* Oldrich Jedlicka <oldium.pro@seznam.cz> */
1761                .name           = "AVerMedia Cardbus TV/Radio (E501R)",
1762                .audio_clock    = 0x187de7,
1763                .tuner_type     = TUNER_ALPS_TSBE5_PAL,
1764                .radio_type     = TUNER_TEA5767,
1765                .tuner_addr     = 0x61,
1766                .radio_addr     = 0x60,
1767                .tda9887_conf   = TDA9887_PRESENT,
1768                .gpiomask       = 0x08000000,
1769                .inputs         = { {
1770                        .name = name_tv,
1771                        .vmux = 1,
1772                        .amux = TV,
1773                        .tv   = 1,
1774                        .gpio = 0x08000000,
1775                }, {
1776                        .name = name_comp1,
1777                        .vmux = 3,
1778                        .amux = LINE1,
1779                        .gpio = 0x08000000,
1780                }, {
1781                        .name = name_svideo,
1782                        .vmux = 8,
1783                        .amux = LINE1,
1784                        .gpio = 0x08000000,
1785                } },
1786                .radio = {
1787                        .name = name_radio,
1788                        .amux = LINE2,
1789                        .gpio = 0x00000000,
1790                },
1791        },
1792        [SAA7134_BOARD_CINERGY400_CARDBUS] = {
1793                .name           = "Terratec Cinergy 400 mobile",
1794                .audio_clock    = 0x187de7,
1795                .tuner_type     = TUNER_ALPS_TSBE5_PAL,
1796                .radio_type     = UNSET,
1797                .tuner_addr     = ADDR_UNSET,
1798                .radio_addr     = ADDR_UNSET,
1799                .tda9887_conf   = TDA9887_PRESENT,
1800                .inputs         = {{
1801                        .name = name_tv,
1802                        .vmux = 1,
1803                        .amux = TV,
1804                        .tv   = 1,
1805                },{
1806                        .name = name_tv_mono,
1807                        .vmux = 1,
1808                        .amux = LINE2,
1809                        .tv   = 1,
1810                },{
1811                        .name = name_comp1,
1812                        .vmux = 3,
1813                        .amux = LINE1,
1814                },{
1815                        .name = name_svideo,
1816                        .vmux = 8,
1817                        .amux = LINE1,
1818                }},
1819        },
1820        [SAA7134_BOARD_CINERGY600_MK3] = {
1821                .name           = "Terratec Cinergy 600 TV MK3",
1822                .audio_clock    = 0x00200000,
1823                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
1824                .radio_type     = UNSET,
1825                .tuner_addr     = ADDR_UNSET,
1826                .radio_addr     = ADDR_UNSET,
1827                .rds_addr       = 0x10,
1828                .tda9887_conf   = TDA9887_PRESENT,
1829                .inputs         = {{
1830                        .name = name_tv,
1831                        .vmux = 1,
1832                        .amux = TV,
1833                        .tv   = 1,
1834                },{
1835                        .name = name_comp1,
1836                        .vmux = 4,
1837                        .amux = LINE1,
1838                },{
1839                        .name = name_svideo,
1840                        .vmux = 8,
1841                        .amux = LINE1,
1842                },{
1843                        .name = name_comp2, /* CVideo over SVideo Connector */
1844                        .vmux = 0,
1845                        .amux = LINE1,
1846                }},
1847                .radio = {
1848                        .name = name_radio,
1849                        .amux = LINE2,
1850                },
1851        },
1852        [SAA7134_BOARD_VIDEOMATE_GOLD_PLUS] = {
1853                /* Dylan Walkden <dylan_walkden@hotmail.com> */
1854                .name           = "Compro VideoMate Gold+ Pal",
1855                .audio_clock    = 0x00187de7,
1856                .tuner_type     = TUNER_PHILIPS_PAL,
1857                .radio_type     = UNSET,
1858                .tuner_addr     = ADDR_UNSET,
1859                .radio_addr     = ADDR_UNSET,
1860                .gpiomask       = 0x1ce780,
1861                .inputs         = {{
1862                        .name = name_svideo,
1863                        .vmux = 0,              /* CVideo over SVideo Connector - ok? */
1864                        .amux = LINE1,
1865                        .gpio = 0x008080,
1866                },{
1867                        .name = name_comp1,
1868                        .vmux = 3,
1869                        .amux = LINE1,
1870                        .gpio = 0x008080,
1871                },{
1872                        .name = name_tv,
1873                        .vmux = 1,
1874                        .amux = TV,
1875                        .tv   = 1,
1876                        .gpio = 0x008080,
1877                }},
1878                .radio = {
1879                        .name = name_radio,
1880                        .amux = LINE2,
1881                        .gpio = 0x80000,
1882                },
1883                .mute = {
1884                        .name = name_mute,
1885                        .amux = LINE2,
1886                        .gpio = 0x0c8000,
1887                },
1888        },
1889        [SAA7134_BOARD_PINNACLE_300I_DVBT_PAL] = {
1890                .name           = "Pinnacle PCTV 300i DVB-T + PAL",
1891                .audio_clock    = 0x00187de7,
1892                .tuner_type     = TUNER_MT2032,
1893                .radio_type     = UNSET,
1894                .tuner_addr     = ADDR_UNSET,
1895                .radio_addr     = ADDR_UNSET,
1896                .tda9887_conf   = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
1897                .mpeg           = SAA7134_MPEG_DVB,
1898                .inputs         = {{
1899                        .name = name_tv,
1900                        .vmux = 3,
1901                        .amux = TV,
1902                        .tv   = 1,
1903                },{
1904                        .name = name_comp1,
1905                        .vmux = 0,
1906                        .amux = LINE2,
1907                },{
1908                        .name = name_comp2,
1909                        .vmux = 1,
1910                        .amux = LINE2,
1911                },{
1912                        .name = name_svideo,
1913                        .vmux = 8,
1914                        .amux = LINE2,
1915                }},
1916        },
1917        [SAA7134_BOARD_PROVIDEO_PV952] = {
1918                /* andreas.kretschmer@web.de */
1919                .name           = "ProVideo PV952",
1920                .audio_clock    = 0x00187de7,
1921                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
1922                .radio_type     = UNSET,
1923                .tuner_addr     = ADDR_UNSET,
1924                .radio_addr     = ADDR_UNSET,
1925                .tda9887_conf   = TDA9887_PRESENT,
1926                .inputs         = {{
1927                        .name = name_comp1,
1928                        .vmux = 0,
1929                        .amux = LINE1,
1930                },{
1931                        .name = name_tv,
1932                        .vmux = 1,
1933                        .amux = TV,
1934                        .tv   = 1,
1935                },{
1936                        .name = name_tv_mono,
1937                        .vmux = 1,
1938                        .amux = LINE2,
1939                        .tv   = 1,
1940                }},
1941                .radio = {
1942                        .name = name_radio,
1943                        .amux = LINE2,
1944                },
1945        },
1946        [SAA7134_BOARD_AVERMEDIA_305] = {
1947                /* much like the "studio" version but without radio
1948                * and another tuner (sirspiritus@yandex.ru) */
1949                .name           = "AverMedia AverTV/305",
1950                .audio_clock    = 0x00187de7,
1951                .tuner_type     = TUNER_PHILIPS_FQ1216ME,
1952                .radio_type     = UNSET,
1953                .tuner_addr     = ADDR_UNSET,
1954                .radio_addr     = ADDR_UNSET,
1955                .tda9887_conf   = TDA9887_PRESENT,
1956                .inputs         = {{
1957                        .name = name_tv,
1958                        .vmux = 1,
1959                        .amux = LINE2,
1960                        .tv   = 1,
1961                },{
1962                        .name = name_comp1,
1963                        .vmux = 0,
1964                        .amux = LINE2,
1965                },{
1966                        .name = name_comp2,
1967                        .vmux = 3,
1968                        .amux = LINE2,
1969                },{
1970                        .name = name_svideo,
1971                        .vmux = 8,
1972                        .amux = LINE2,
1973                }},
1974                .mute = {
1975                        .name = name_mute,
1976                        .amux = LINE1,
1977                },
1978        },
1979        [SAA7134_BOARD_FLYDVBTDUO] = {
1980                /* LifeView FlyDVB-T DUO */
1981                /* "Nico Sabbi <nsabbi@tiscali.it>  Hartmut Hackmann hartmut.hackmann@t-online.de*/
1982                .name           = "LifeView FlyDVB-T DUO / MSI TV@nywhere Duo",
1983                .audio_clock    = 0x00200000,
1984                .tuner_type     = TUNER_PHILIPS_TDA8290,
1985                .radio_type     = UNSET,
1986                .tuner_addr     = ADDR_UNSET,
1987                .radio_addr     = ADDR_UNSET,
1988                .gpiomask       = 0x00200000,
1989                .mpeg           = SAA7134_MPEG_DVB,
1990                .inputs         = {{
1991                        .name = name_tv,
1992                        .vmux = 1,
1993                        .amux = TV,
1994                        .gpio = 0x200000,       /* GPIO21=High for TV input */
1995                        .tv   = 1,
1996                },{
1997                        .name = name_comp1,     /* Composite signal on S-Video input */
1998                        .vmux = 0,
1999                        .amux = LINE2,
2000                },{
2001                        .name = name_comp2,     /* Composite input */
2002                        .vmux = 3,
2003                        .amux = LINE2,
2004                },{
2005                        .name = name_svideo,    /* S-Video signal on S-Video input */
2006                        .vmux = 8,
2007                        .amux = LINE2,
2008                }},
2009                .radio = {
2010                        .name = name_radio,
2011                        .amux = TV,
2012                        .gpio = 0x000000,       /* GPIO21=Low for FM radio antenna */
2013                },
2014        },
2015        [SAA7134_BOARD_PHILIPS_TOUGH] = {
2016                .name           = "Philips TOUGH DVB-T reference design",
2017                .tuner_type     = TUNER_ABSENT,
2018                .audio_clock    = 0x00187de7,
2019                .radio_type     = UNSET,
2020                .tuner_addr     = ADDR_UNSET,
2021                .radio_addr     = ADDR_UNSET,
2022                .mpeg           = SAA7134_MPEG_DVB,
2023                .inputs = {{
2024                        .name   = name_comp1,
2025                        .vmux   = 0,
2026                        .amux   = LINE1,
2027                },{
2028                        .name   = name_svideo,
2029                        .vmux   = 8,
2030                        .amux   = LINE1,
2031                }},
2032        },
2033        [SAA7134_BOARD_AVERMEDIA_307] = {
2034                /*
2035                Davydov Vladimir <vladimir@iqmedia.com>
2036                */
2037                .name           = "Avermedia AVerTV 307",
2038                .audio_clock    = 0x00187de7,
2039                .tuner_type     = TUNER_PHILIPS_FQ1216ME,
2040                .radio_type     = UNSET,
2041                .tuner_addr     = ADDR_UNSET,
2042                .radio_addr     = ADDR_UNSET,
2043                .tda9887_conf   = TDA9887_PRESENT,
2044                .inputs         = {{
2045                        .name = name_tv,
2046                        .vmux = 1,
2047                        .amux = TV,
2048                        .tv   = 1,
2049                },{
2050                        .name = name_comp1,
2051                        .vmux = 0,
2052                        .amux = LINE1,
2053                },{
2054                        .name = name_comp2,
2055                        .vmux = 3,
2056                        .amux = LINE1,
2057                },{
2058                        .name = name_svideo,
2059                        .vmux = 8,
2060                        .amux = LINE1,
2061                }},
2062        },
2063        [SAA7134_BOARD_ADS_INSTANT_TV] = {
2064                .name           = "ADS Tech Instant TV (saa7135)",
2065                .audio_clock    = 0x00187de7,
2066                .tuner_type     = TUNER_PHILIPS_TDA8290,
2067                .radio_type     = UNSET,
2068                .tuner_addr     = ADDR_UNSET,
2069                .radio_addr     = ADDR_UNSET,
2070                .inputs         = {{
2071                        .name = name_tv,
2072                        .vmux = 1,
2073                        .amux = TV,
2074                        .tv   = 1,
2075                },{
2076                        .name = name_comp1,
2077                        .vmux = 3,
2078                        .amux = LINE2,
2079                },{
2080                        .name = name_svideo,
2081                        .vmux = 8,
2082                        .amux = LINE2,
2083                }},
2084        },
2085        [SAA7134_BOARD_KWORLD_VSTREAM_XPERT] = {
2086                .name           = "Kworld/Tevion V-Stream Xpert TV PVR7134",
2087                .audio_clock    = 0x00187de7,
2088                .tuner_type     = TUNER_PHILIPS_PAL_I,
2089                .radio_type     = UNSET,
2090                .tuner_addr     = ADDR_UNSET,
2091                .radio_addr     = ADDR_UNSET,
2092                .gpiomask       = 0x0700,
2093                .inputs = {{
2094                        .name   = name_tv,
2095                        .vmux   = 1,
2096                        .amux   = TV,
2097                        .tv     = 1,
2098                        .gpio   = 0x000,
2099                },{
2100                        .name   = name_comp1,
2101                        .vmux   = 3,
2102                        .amux   = LINE1,
2103                        .gpio   = 0x200,                /* gpio by DScaler */
2104                },{
2105                        .name   = name_svideo,
2106                        .vmux   = 0,
2107                        .amux   = LINE1,
2108                        .gpio   = 0x200,
2109                }},
2110                .radio = {
2111                        .name   = name_radio,
2112                        .amux   = LINE1,
2113                        .gpio   = 0x100,
2114                },
2115                .mute  = {
2116                        .name = name_mute,
2117                        .amux = TV,
2118                        .gpio = 0x000,
2119                },
2120        },
2121        [SAA7134_BOARD_FLYDVBT_DUO_CARDBUS] = {
2122                .name           = "LifeView/Typhoon/Genius FlyDVB-T Duo Cardbus",
2123                .audio_clock    = 0x00200000,
2124                .tuner_type     = TUNER_PHILIPS_TDA8290,
2125                .radio_type     = UNSET,
2126                .tuner_addr     = ADDR_UNSET,
2127                .radio_addr     = ADDR_UNSET,
2128                .mpeg           = SAA7134_MPEG_DVB,
2129                .gpiomask       = 0x00200000,
2130                .inputs         = {{
2131                        .name = name_tv,
2132                        .vmux = 1,
2133                        .amux = TV,
2134                        .gpio = 0x200000,       /* GPIO21=High for TV input */
2135                        .tv   = 1,
2136                },{
2137                        .name = name_svideo,    /* S-Video signal on S-Video input */
2138                        .vmux = 8,
2139                        .amux = LINE2,
2140                },{
2141                        .name = name_comp1,     /* Composite signal on S-Video input */
2142                        .vmux = 0,
2143                        .amux = LINE2,
2144                },{
2145                        .name = name_comp2,     /* Composite input */
2146                        .vmux = 3,
2147                        .amux = LINE2,
2148                }},
2149                .radio = {
2150                        .name = name_radio,
2151                        .amux = TV,
2152                        .gpio = 0x000000,       /* GPIO21=Low for FM radio antenna */
2153                },
2154        },
2155        [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII] = {
2156                .name           = "Compro VideoMate TV Gold+II",
2157                .audio_clock    = 0x002187de7,
2158                .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
2159                .radio_type     = TUNER_TEA5767,
2160                .tuner_addr     = 0x63,
2161                .radio_addr     = 0x60,
2162                .gpiomask       = 0x8c1880,
2163                .inputs         = {{
2164                        .name = name_svideo,
2165                        .vmux = 0,
2166                        .amux = LINE1,
2167                        .gpio = 0x800800,
2168                },{
2169                        .name = name_comp1,
2170                        .vmux = 3,
2171                        .amux = LINE1,
2172                        .gpio = 0x801000,
2173                },{
2174                        .name = name_tv,
2175                        .vmux = 1,
2176                        .amux = TV,
2177                        .tv   = 1,
2178                        .gpio = 0x800000,
2179                }},
2180                .radio = {
2181                        .name = name_radio,
2182                        .amux = TV,
2183                        .gpio = 0x880000,
2184                },
2185                .mute = {
2186                        .name = name_mute,
2187                        .amux = LINE2,
2188                        .gpio = 0x840000,
2189                },
2190        },
2191        [SAA7134_BOARD_KWORLD_XPERT] = {
2192                /*
2193                FIXME:
2194                - Remote control doesn't initialize properly.
2195                - Audio volume starts muted,
2196                then gradually increases after channel change.
2197                - Overlay scaling problems (application error?)
2198                - Composite S-Video untested.
2199                From: Konrad Rzepecki <hannibal@megapolis.pl>
2200                */
2201                .name           = "Kworld Xpert TV PVR7134",
2202                .audio_clock    = 0x00187de7,
2203                .tuner_type     = TUNER_TENA_9533_DI,
2204                .radio_type     = TUNER_TEA5767,
2205                .tuner_addr     = 0x61,
2206                .radio_addr     = 0x60,
2207                .gpiomask       = 0x0700,
2208                .inputs = {{
2209                        .name   = name_tv,
2210                        .vmux   = 1,
2211                        .amux   = TV,
2212                        .tv     = 1,
2213                        .gpio   = 0x000,
2214                },{
2215                        .name   = name_comp1,
2216                        .vmux   = 3,
2217                        .amux   = LINE1,
2218                        .gpio   = 0x200,                /* gpio by DScaler */
2219                },{
2220                        .name   = name_svideo,
2221                        .vmux   = 0,
2222                        .amux   = LINE1,
2223                        .gpio   = 0x200,
2224                }},
2225                .radio = {
2226                        .name   = name_radio,
2227                        .amux   = LINE1,
2228                        .gpio   = 0x100,
2229                },
2230                .mute = {
2231                        .name = name_mute,
2232                        .amux = TV,
2233                        .gpio = 0x000,
2234                },
2235        },
2236        [SAA7134_BOARD_FLYTV_DIGIMATRIX] = {
2237                .name           = "FlyTV mini Asus Digimatrix",
2238                .audio_clock    = 0x00200000,
2239                .tuner_type     = TUNER_LG_TALN,
2240                .radio_type     = UNSET,
2241                .tuner_addr     = ADDR_UNSET,
2242                .radio_addr     = ADDR_UNSET,
2243                .inputs         = {{
2244                        .name = name_tv,
2245                        .vmux = 1,
2246                        .amux = TV,
2247                        .tv   = 1,
2248                },{
2249                        .name = name_tv_mono,
2250                        .vmux = 1,
2251                        .amux = LINE2,
2252                        .tv   = 1,
2253                },{
2254                        .name = name_comp1,
2255                        .vmux = 0,
2256                        .amux = LINE2,
2257                },{
2258                        .name = name_comp2,
2259                        .vmux = 3,
2260                        .amux = LINE2,
2261                },{
2262                        .name = name_svideo,
2263                        .vmux = 8,
2264                        .amux = LINE2,
2265                }},
2266                .radio = {
2267                        .name = name_radio,             /* radio unconfirmed */
2268                        .amux = LINE2,
2269                },
2270        },
2271        [SAA7134_BOARD_KWORLD_TERMINATOR] = {
2272                /* Kworld V-Stream Studio TV Terminator */
2273                /* "James Webb <jrwebb@qwest.net> */
2274                .name           = "V-Stream Studio TV Terminator",
2275                .audio_clock    = 0x00187de7,
2276                .tuner_type     = TUNER_PHILIPS_TDA8290,
2277                .radio_type     = UNSET,
2278                .tuner_addr     = ADDR_UNSET,
2279                .radio_addr     = ADDR_UNSET,
2280                .gpiomask       = 1 << 21,
2281                .inputs         = {{
2282                        .name = name_tv,
2283                        .vmux = 1,
2284                        .amux = TV,
2285                        .gpio = 0x0000000,
2286                        .tv   = 1,
2287                },{
2288                        .name = name_comp1,     /* Composite input */
2289                        .vmux = 3,
2290                        .amux = LINE2,
2291                        .gpio = 0x0000000,
2292                },{
2293                        .name = name_svideo,    /* S-Video input */
2294                        .vmux = 8,
2295                        .amux = LINE2,
2296                        .gpio = 0x0000000,
2297                }},
2298                .radio = {
2299                        .name = name_radio,
2300                        .amux = TV,
2301                        .gpio = 0x0200000,
2302                },
2303        },
2304        [SAA7134_BOARD_YUAN_TUN900] = {
2305                /* FIXME:
2306                 * S-Video and composite sources untested.
2307                 * Radio not working.
2308                 * Remote control not yet implemented.
2309                 * From : codemaster@webgeeks.be */
2310                .name           = "Yuan TUN-900 (saa7135)",
2311                .audio_clock    = 0x00187de7,
2312                .tuner_type     = TUNER_PHILIPS_TDA8290,
2313                .radio_type     = UNSET,
2314                .tuner_addr= ADDR_UNSET,
2315                .radio_addr= ADDR_UNSET,
2316                .gpiomask       = 0x00010003,
2317                .inputs         = {{
2318                        .name = name_tv,
2319                        .vmux = 1,
2320                        .amux = TV,
2321                        .tv   = 1,
2322                        .gpio = 0x01,
2323                },{
2324                        .name = name_comp1,
2325                        .vmux = 0,
2326                        .amux = LINE2,
2327                        .gpio = 0x02,
2328                },{
2329                        .name = name_svideo,
2330                        .vmux = 6,
2331                        .amux = LINE2,
2332                        .gpio = 0x02,
2333                }},
2334                .radio = {
2335                        .name = name_radio,
2336                        .amux = LINE1,
2337                        .gpio = 0x00010003,
2338                },
2339                .mute = {
2340                        .name = name_mute,
2341                        .amux = TV,
2342                        .gpio = 0x01,
2343                },
2344        },
2345        [SAA7134_BOARD_BEHOLD_409FM] = {
2346                /* <http://tuner.beholder.ru>, Sergey <skiv@orel.ru> */
2347                /*       Beholder Intl. Ltd. 2008      */
2348                /*Dmitry Belimov <d.belimov@gmail.com> */
2349                .name           = "Beholder BeholdTV 409 FM",
2350                .audio_clock    = 0x00187de7,
2351                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
2352                .radio_type     = UNSET,
2353                .tuner_addr     = ADDR_UNSET,
2354                .radio_addr     = ADDR_UNSET,
2355                .tda9887_conf   = TDA9887_PRESENT,
2356                .gpiomask       = 0x00008000,
2357                .inputs         = {{
2358                          .name = name_tv,
2359                          .vmux = 3,
2360                          .amux = TV,
2361                          .tv   = 1,
2362                },{
2363                          .name = name_comp1,
2364                          .vmux = 1,
2365                          .amux = LINE1,
2366                },{
2367                          .name = name_svideo,
2368                          .vmux = 8,
2369                          .amux = LINE1,
2370                }},
2371                .radio = {
2372                          .name = name_radio,
2373                          .amux = LINE2,
2374                },
2375        },
2376        [SAA7134_BOARD_GOTVIEW_7135] = {
2377                /* Mike Baikov <mike@baikov.com> */
2378                /* Andrey Cvetcov <ays14@yandex.ru> */
2379                .name            = "GoTView 7135 PCI",
2380                .audio_clock     = 0x00187de7,
2381                .tuner_type      = TUNER_PHILIPS_FM1216ME_MK3,
2382                .radio_type      = UNSET,
2383                .tuner_addr      = ADDR_UNSET,
2384                .radio_addr      = ADDR_UNSET,
2385                .tda9887_conf    = TDA9887_PRESENT,
2386                .gpiomask        = 0x00200003,
2387                .inputs          = {{
2388                        .name = name_tv,
2389                        .vmux = 1,
2390                        .amux = TV,
2391                        .tv   = 1,
2392                        .gpio = 0x00200003,
2393                },{
2394                        .name = name_tv_mono,
2395                        .vmux = 1,
2396                        .amux = LINE2,
2397                        .gpio = 0x00200003,
2398                },{
2399                        .name = name_comp1,
2400                        .vmux = 3,
2401                        .amux = LINE1,
2402                        .gpio = 0x00200003,
2403                },{
2404                        .name = name_svideo,
2405                        .vmux = 8,
2406                        .amux = LINE1,
2407                        .gpio = 0x00200003,
2408                }},
2409                .radio = {
2410                        .name = name_radio,
2411                        .amux = LINE2,
2412                        .gpio = 0x00200003,
2413                },
2414                .mute = {
2415                        .name = name_mute,
2416                        .amux = TV,
2417                        .gpio = 0x00200003,
2418                },
2419        },
2420        [SAA7134_BOARD_PHILIPS_EUROPA] = {
2421                .name           = "Philips EUROPA V3 reference design",
2422                .audio_clock    = 0x00187de7,
2423                .tuner_type     = TUNER_PHILIPS_TD1316,
2424                .radio_type     = UNSET,
2425                .tuner_addr     = 0x61,
2426                .radio_addr     = ADDR_UNSET,
2427                .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
2428                .mpeg           = SAA7134_MPEG_DVB,
2429                .inputs = {{
2430                        .name   = name_tv,
2431                        .vmux   = 3,
2432                        .amux   = TV,
2433                        .tv     = 1,
2434                },{
2435                        .name   = name_comp1,
2436                        .vmux   = 0,
2437                        .amux   = LINE2,
2438                },{
2439                        .name   = name_svideo,
2440                        .vmux   = 8,
2441                        .amux   = LINE2,
2442                }},
2443        },
2444        [SAA7134_BOARD_VIDEOMATE_DVBT_300] = {
2445                .name           = "Compro Videomate DVB-T300",
2446                .audio_clock    = 0x00187de7,
2447                .tuner_type     = TUNER_PHILIPS_TD1316,
2448                .radio_type     = UNSET,
2449                .tuner_addr     = 0x61,
2450                .radio_addr     = ADDR_UNSET,
2451                .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
2452                .mpeg           = SAA7134_MPEG_DVB,
2453                .inputs = {{
2454                        .name   = name_tv,
2455                        .vmux   = 3,
2456                        .amux   = TV,
2457                        .tv     = 1,
2458                },{
2459                        .name   = name_comp1,
2460                        .vmux   = 1,
2461                        .amux   = LINE2,
2462                },{
2463                        .name   = name_svideo,
2464                        .vmux   = 8,
2465                        .amux   = LINE2,
2466                }},
2467        },
2468        [SAA7134_BOARD_VIDEOMATE_DVBT_200] = {
2469                .name           = "Compro Videomate DVB-T200",
2470                .tuner_type     = TUNER_ABSENT,
2471                .audio_clock    = 0x00187de7,
2472                .radio_type     = UNSET,
2473                .tuner_addr     = ADDR_UNSET,
2474                .radio_addr     = ADDR_UNSET,
2475                .mpeg           = SAA7134_MPEG_DVB,
2476                .inputs = {{
2477                        .name   = name_comp1,
2478                        .vmux   = 0,
2479                        .amux   = LINE1,
2480                },{
2481                        .name   = name_svideo,
2482                        .vmux   = 8,
2483                        .amux   = LINE1,
2484                }},
2485        },
2486        [SAA7134_BOARD_RTD_VFG7350] = {
2487                .name           = "RTD Embedded Technologies VFG7350",
2488                .audio_clock    = 0x00200000,
2489                .tuner_type     = TUNER_ABSENT,
2490                .radio_type     = UNSET,
2491                .tuner_addr     = ADDR_UNSET,
2492                .radio_addr     = ADDR_UNSET,
2493                .empress_addr   = 0x21,
2494                .inputs         = {{
2495                        .name   = "Composite 0",
2496                        .vmux   = 0,
2497                        .amux   = LINE1,
2498                },{
2499                        .name   = "Composite 1",
2500                        .vmux   = 1,
2501                        .amux   = LINE2,
2502                },{
2503                        .name   = "Composite 2",
2504                        .vmux   = 2,
2505                        .amux   = LINE1,
2506                },{
2507                        .name   = "Composite 3",
2508                        .vmux   = 3,
2509                        .amux   = LINE2,
2510                },{
2511                        .name   = "S-Video 0",
2512                        .vmux   = 8,
2513                        .amux   = LINE1,
2514                },{
2515                        .name   = "S-Video 1",
2516                        .vmux   = 9,
2517                        .amux   = LINE2,
2518                }},
2519                .mpeg           = SAA7134_MPEG_EMPRESS,
2520                .video_out      = CCIR656,
2521                .vid_port_opts  = ( SET_T_CODE_POLARITY_NON_INVERTED |
2522                                    SET_CLOCK_NOT_DELAYED |
2523                                    SET_CLOCK_INVERTED |
2524                                    SET_VSYNC_OFF ),
2525        },
2526        [SAA7134_BOARD_RTD_VFG7330] = {
2527                .name           = "RTD Embedded Technologies VFG7330",
2528                .audio_clock    = 0x00200000,
2529                .tuner_type     = TUNER_ABSENT,
2530                .radio_type     = UNSET,
2531                .tuner_addr     = ADDR_UNSET,
2532                .radio_addr     = ADDR_UNSET,
2533                .inputs         = {{
2534                        .name   = "Composite 0",
2535                        .vmux   = 0,
2536                        .amux   = LINE1,
2537                },{
2538                        .name   = "Composite 1",
2539                        .vmux   = 1,
2540                        .amux   = LINE2,
2541                },{
2542                        .name   = "Composite 2",
2543                        .vmux   = 2,
2544                        .amux   = LINE1,
2545                },{
2546                        .name   = "Composite 3",
2547                        .vmux   = 3,
2548                        .amux   = LINE2,
2549                },{
2550                        .name   = "S-Video 0",
2551                        .vmux   = 8,
2552                        .amux   = LINE1,
2553                },{
2554                        .name   = "S-Video 1",
2555                        .vmux   = 9,
2556                        .amux   = LINE2,
2557                }},
2558        },
2559        [SAA7134_BOARD_FLYTVPLATINUM_MINI2] = {
2560                .name           = "LifeView FlyTV Platinum Mini2",
2561                .audio_clock    = 0x00200000,
2562                .tuner_type     = TUNER_PHILIPS_TDA8290,
2563                .radio_type     = UNSET,
2564                .tuner_addr     = ADDR_UNSET,
2565                .radio_addr     = ADDR_UNSET,
2566
2567                .inputs         = {{
2568                        .name = name_tv,
2569                        .vmux = 1,
2570                        .amux = TV,
2571                        .tv   = 1,
2572                },{
2573                        .name = name_comp1,     /* Composite signal on S-Video input */
2574                        .vmux = 0,
2575                        .amux = LINE2,
2576                },{
2577                        .name = name_comp2,     /* Composite input */
2578                        .vmux = 3,
2579                        .amux = LINE2,
2580                },{
2581                        .name = name_svideo,
2582                        .vmux = 8,
2583                        .amux = LINE2,
2584                }},
2585        },
2586        [SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180] = {
2587                /* Michael Krufky <mkrufky@m1k.net>
2588                 * Uses Alps Electric TDHU2, containing NXT2004 ATSC Decoder
2589                 * AFAIK, there is no analog demod, thus,
2590                 * no support for analog television.
2591                 */
2592                .name           = "AVerMedia AVerTVHD MCE A180",
2593                .audio_clock    = 0x00187de7,
2594                .tuner_type     = TUNER_ABSENT,
2595                .radio_type     = UNSET,
2596                .tuner_addr     = ADDR_UNSET,
2597                .radio_addr     = ADDR_UNSET,
2598                .mpeg           = SAA7134_MPEG_DVB,
2599                .inputs         = {{
2600                        .name = name_comp1,
2601                        .vmux = 3,
2602                        .amux = LINE2,
2603                },{
2604                        .name = name_svideo,
2605                        .vmux = 8,
2606                        .amux = LINE2,
2607                }},
2608        },
2609        [SAA7134_BOARD_MONSTERTV_MOBILE] = {
2610                .name           = "SKNet MonsterTV Mobile",
2611                .audio_clock    = 0x00187de7,
2612                .tuner_type     = TUNER_PHILIPS_TDA8290,
2613                .radio_type     = UNSET,
2614                .tuner_addr     = ADDR_UNSET,
2615                .radio_addr     = ADDR_UNSET,
2616
2617                .inputs         = {{
2618                          .name = name_tv,
2619                          .vmux = 1,
2620                          .amux = TV,
2621                          .tv   = 1,
2622                },{
2623                          .name = name_comp1,
2624                          .vmux = 3,
2625                          .amux = LINE1,
2626                },{
2627                          .name = name_svideo,
2628                          .vmux = 6,
2629                          .amux = LINE1,
2630                }},
2631        },
2632        [SAA7134_BOARD_PINNACLE_PCTV_110i] = {
2633               .name           = "Pinnacle PCTV 40i/50i/110i (saa7133)",
2634                .audio_clock    = 0x00187de7,
2635                .tuner_type     = TUNER_PHILIPS_TDA8290,
2636                .radio_type     = UNSET,
2637                .tuner_addr     = ADDR_UNSET,
2638                .radio_addr     = ADDR_UNSET,
2639                .gpiomask       = 0x080200000,
2640                .inputs         = { {
2641                        .name = name_tv,
2642                        .vmux = 4,
2643                        .amux = TV,
2644                        .tv   = 1,
2645                }, {
2646                        .name = name_comp1,
2647                        .vmux = 1,
2648                        .amux = LINE2,
2649                }, {
2650                        .name = name_comp2,
2651                        .vmux = 0,
2652                        .amux = LINE2,
2653                }, {
2654                        .name = name_svideo,
2655                        .vmux = 8,
2656                        .amux = LINE2,
2657                } },
2658                .radio = {
2659                        .name = name_radio,
2660                        .amux = TV,
2661                        .gpio = 0x0200000,
2662                },
2663        },
2664        [SAA7134_BOARD_ASUSTeK_P7131_DUAL] = {
2665                .name           = "ASUSTeK P7131 Dual",
2666                .audio_clock    = 0x00187de7,
2667                .tuner_type     = TUNER_PHILIPS_TDA8290,
2668                .radio_type     = UNSET,
2669                .tuner_addr     = ADDR_UNSET,
2670                .radio_addr     = ADDR_UNSET,
2671                .gpiomask       = 1 << 21,
2672                .mpeg           = SAA7134_MPEG_DVB,
2673                .inputs         = {{
2674                        .name = name_tv,
2675                        .vmux = 1,
2676                        .amux = TV,
2677                        .tv   = 1,
2678                        .gpio = 0x0000000,
2679                },{
2680                        .name = name_comp1,
2681                        .vmux = 3,
2682                        .amux = LINE2,
2683                        .gpio = 0x0200000,
2684                },{
2685                        .name = name_comp2,
2686                        .vmux = 0,
2687                        .amux = LINE2,
2688                        .gpio = 0x0200000,
2689                },{
2690                        .name = name_svideo,
2691                        .vmux = 8,
2692                        .amux = LINE2,
2693                        .gpio = 0x0200000,
2694                }},
2695                .radio = {
2696                        .name = name_radio,
2697                        .amux = TV,
2698                        .gpio = 0x0200000,
2699                },
2700        },
2701        [SAA7134_BOARD_SEDNA_PC_TV_CARDBUS] = {
2702                /* Paul Tom Zalac <pzalac@gmail.com> */
2703                /* Pavel Mihaylov <bin@bash.info> */
2704                .name           = "Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)",
2705                                /* Sedna/MuchTV (OEM) Cardbus TV Tuner */
2706                .audio_clock    = 0x00187de7,
2707                .tuner_type     = TUNER_PHILIPS_TDA8290,
2708                .radio_type     = UNSET,
2709                .tuner_addr     = ADDR_UNSET,
2710                .radio_addr     = ADDR_UNSET,
2711                .gpiomask       = 0xe880c0,
2712                .inputs         = {{
2713                        .name = name_tv,
2714                        .vmux = 3,
2715                        .amux = TV,
2716                        .tv   = 1,
2717                },{
2718                        .name = name_comp1,
2719                        .vmux = 1,
2720                        .amux = LINE1,
2721                },{
2722                        .name = name_svideo,
2723                        .vmux = 6,
2724                        .amux = LINE1,
2725                }},
2726                .radio = {
2727                        .name = name_radio,
2728                        .amux = LINE2,
2729                },
2730        },
2731        [SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV] = {
2732                /* "Cyril Lacoux (Yack)" <clacoux@ifeelgood.org> */
2733                .name           = "ASUS Digimatrix TV",
2734                .audio_clock    = 0x00200000,
2735                .tuner_type     = TUNER_PHILIPS_FQ1216ME,
2736                .tda9887_conf   = TDA9887_PRESENT,
2737                .radio_type     = UNSET,
2738                .tuner_addr     = ADDR_UNSET,
2739                .radio_addr     = ADDR_UNSET,
2740                .inputs         = {{
2741                        .name = name_tv,
2742                        .vmux = 1,
2743                        .amux = TV,
2744                        .tv   = 1,
2745                },{
2746                        .name = name_comp1,
2747                        .vmux = 3,
2748                        .amux = LINE1,
2749                },{
2750                        .name = name_svideo,
2751                        .vmux = 8,
2752                        .amux = LINE1,
2753                }},
2754        },
2755        [SAA7134_BOARD_PHILIPS_TIGER] = {
2756                .name           = "Philips Tiger reference design",
2757                .audio_clock    = 0x00187de7,
2758                .tuner_type     = TUNER_PHILIPS_TDA8290,
2759                .radio_type     = UNSET,
2760                .tuner_addr     = ADDR_UNSET,
2761                .radio_addr     = ADDR_UNSET,
2762                .tuner_config   = 0,
2763                .mpeg           = SAA7134_MPEG_DVB,
2764                .gpiomask       = 0x0200000,
2765                .inputs = {{
2766                        .name   = name_tv,
2767                        .vmux   = 1,
2768                        .amux   = TV,
2769                        .tv     = 1,
2770                },{
2771                        .name   = name_comp1,
2772                        .vmux   = 3,
2773                        .amux   = LINE1,
2774                },{
2775                        .name   = name_svideo,
2776                        .vmux   = 8,
2777                        .amux   = LINE1,
2778                }},
2779                .radio = {
2780                        .name   = name_radio,
2781                        .amux   = TV,
2782                        .gpio   = 0x0200000,
2783                },
2784        },
2785        [SAA7134_BOARD_MSI_TVATANYWHERE_PLUS] = {
2786                .name           = "MSI TV@Anywhere plus",
2787                .audio_clock    = 0x00187de7,
2788                .tuner_type     = TUNER_PHILIPS_TDA8290,
2789                .radio_type     = UNSET,
2790                .tuner_addr     = ADDR_UNSET,
2791                .radio_addr     = ADDR_UNSET,
2792                .gpiomask       = 1 << 21,
2793                .inputs = {{
2794                        .name   = name_tv,
2795                        .vmux   = 1,
2796                        .amux   = TV,
2797                        .tv     = 1,
2798                },{
2799                        .name   = name_comp1,
2800                        .vmux   = 3,
2801                        .amux   = LINE2,        /* unconfirmed, taken from Philips driver */
2802                },{
2803                        .name   = name_comp2,
2804                        .vmux   = 0,            /* untested, Composite over S-Video */
2805                        .amux   = LINE2,
2806                },{
2807                        .name   = name_svideo,
2808                        .vmux   = 8,
2809                        .amux   = LINE2,
2810                }},
2811                .radio = {
2812                        .name   = name_radio,
2813                        .amux   = TV,
2814                        .gpio   = 0x0200000,
2815                },
2816        },
2817        [SAA7134_BOARD_CINERGY250PCI] = {
2818                /* remote-control does not work. The signal about a
2819                   key press comes in via gpio, but the key code
2820                   doesn't. Neither does it have an i2c remote control
2821                   interface. */
2822                .name           = "Terratec Cinergy 250 PCI TV",
2823                .audio_clock    = 0x00187de7,
2824                .tuner_type     = TUNER_PHILIPS_TDA8290,
2825                .radio_type     = UNSET,
2826                .tuner_addr     = ADDR_UNSET,
2827                .radio_addr     = ADDR_UNSET,
2828                .gpiomask       = 0x80200000,
2829                .inputs         = {{
2830                        .name = name_tv,
2831                        .vmux = 1,
2832                        .amux = TV,
2833                        .tv   = 1,
2834                },{
2835                        .name = name_svideo,  /* NOT tested */
2836                        .vmux = 8,
2837                        .amux = LINE1,
2838                }},
2839                .radio = {
2840                        .name   = name_radio,
2841                        .amux   = TV,
2842                        .gpio   = 0x0200000,
2843                },
2844        },
2845        [SAA7134_BOARD_FLYDVB_TRIO] = {
2846                /* LifeView LR319 FlyDVB Trio */
2847                /* Peter Missel <peter.missel@onlinehome.de> */
2848                .name           = "LifeView FlyDVB Trio",
2849                .audio_clock    = 0x00200000,
2850                .tuner_type     = TUNER_PHILIPS_TDA8290,
2851                .radio_type     = UNSET,
2852                .tuner_addr     = ADDR_UNSET,
2853                .radio_addr     = ADDR_UNSET,
2854                .gpiomask       = 0x00200000,
2855                .mpeg           = SAA7134_MPEG_DVB,
2856                .inputs         = {{
2857                        .name = name_tv,        /* Analog broadcast/cable TV */
2858                        .vmux = 1,
2859                        .amux = TV,
2860                        .gpio = 0x200000,       /* GPIO21=High for TV input */
2861                        .tv   = 1,
2862                },{
2863                        .name = name_svideo,    /* S-Video signal on S-Video input */
2864                        .vmux = 8,
2865                        .amux = LINE2,
2866                },{
2867                        .name = name_comp1,     /* Composite signal on S-Video input */
2868                        .vmux = 0,
2869                        .amux = LINE2,
2870                },{
2871                        .name = name_comp2,     /* Composite input */
2872                        .vmux = 3,
2873                        .amux = LINE2,
2874                }},
2875                .radio = {
2876                        .name = name_radio,
2877                        .amux = TV,
2878                        .gpio = 0x000000,       /* GPIO21=Low for FM radio antenna */
2879                },
2880        },
2881        [SAA7134_BOARD_AVERMEDIA_777] = {
2882                .name           = "AverTV DVB-T 777",
2883                .audio_clock    = 0x00187de7,
2884                .tuner_type     = TUNER_ABSENT,
2885                .radio_type     = UNSET,
2886                .tuner_addr     = ADDR_UNSET,
2887                .radio_addr     = ADDR_UNSET,
2888                .mpeg           = SAA7134_MPEG_DVB,
2889                .inputs = {{
2890                        .name   = name_comp1,
2891                        .vmux   = 1,
2892                        .amux   = LINE1,
2893                },{
2894                        .name   = name_svideo,
2895                        .vmux   = 8,
2896                        .amux   = LINE1,
2897                }},
2898        },
2899        [SAA7134_BOARD_FLYDVBT_LR301] = {
2900                /* LifeView FlyDVB-T */
2901                /* Giampiero Giancipoli <gianci@libero.it> */
2902                .name           = "LifeView FlyDVB-T / Genius VideoWonder DVB-T",
2903                .audio_clock    = 0x00200000,
2904                .tuner_type     = TUNER_ABSENT,
2905                .radio_type     = UNSET,
2906                .tuner_addr     = ADDR_UNSET,
2907                .radio_addr     = ADDR_UNSET,
2908                .mpeg           = SAA7134_MPEG_DVB,
2909                .inputs         = {{
2910                        .name = name_comp1,     /* Composite input */
2911                        .vmux = 3,
2912                        .amux = LINE2,
2913                },{
2914                        .name = name_svideo,    /* S-Video signal on S-Video input */
2915                        .vmux = 8,
2916                        .amux = LINE2,
2917                }},
2918        },
2919        [SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331] = {
2920                .name           = "ADS Instant TV Duo Cardbus PTV331",
2921                .audio_clock    = 0x00200000,
2922                .tuner_type     = TUNER_PHILIPS_TDA8290,
2923                .radio_type     = UNSET,
2924                .tuner_addr     = ADDR_UNSET,
2925                .radio_addr     = ADDR_UNSET,
2926                .mpeg           = SAA7134_MPEG_DVB,
2927                .gpiomask       = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
2928                .inputs = {{
2929                        .name   = name_tv,
2930                        .vmux   = 1,
2931                        .amux   = TV,
2932                        .tv     = 1,
2933                        .gpio   = 0x00200000,
2934                }},
2935        },
2936        [SAA7134_BOARD_TEVION_DVBT_220RF] = {
2937                .name           = "Tevion/KWorld DVB-T 220RF",
2938                .audio_clock    = 0x00187de7,
2939                .tuner_type     = TUNER_PHILIPS_TDA8290,
2940                .radio_type     = UNSET,
2941                .tuner_addr     = ADDR_UNSET,
2942                .radio_addr     = ADDR_UNSET,
2943                .mpeg           = SAA7134_MPEG_DVB,
2944                .gpiomask       = 1 << 21,
2945                .inputs = {{
2946                        .name   = name_tv,
2947                        .vmux   = 1,
2948                        .amux   = TV,
2949                        .tv     = 1,
2950                },{
2951                        .name   = name_comp1,
2952                        .vmux   = 3,
2953                        .amux   = LINE1,
2954                },{
2955                        .name   = name_comp2,
2956                        .vmux   = 0,
2957                        .amux   = LINE1,
2958                },{
2959                        .name   = name_svideo,
2960                        .vmux   = 8,
2961                        .amux   = LINE1,
2962                }},
2963                .radio = {
2964                        .name   = name_radio,
2965                        .amux   = TV,
2966                        .gpio   = 0x0200000,
2967                },
2968        },
2969        [SAA7134_BOARD_KWORLD_DVBT_210] = {
2970                .name           = "KWorld DVB-T 210",
2971                .audio_clock    = 0x00187de7,
2972                .tuner_type     = TUNER_PHILIPS_TDA8290,
2973                .radio_type     = UNSET,
2974                .tuner_addr     = ADDR_UNSET,
2975                .radio_addr     = ADDR_UNSET,
2976                .mpeg           = SAA7134_MPEG_DVB,
2977                .gpiomask       = 1 << 21,
2978                .inputs = {{
2979                        .name   = name_tv,
2980                        .vmux   = 1,
2981                        .amux   = TV,
2982                        .tv     = 1,
2983                },{
2984                        .name   = name_comp1,
2985                        .vmux   = 3,
2986                        .amux   = LINE1,
2987                },{
2988                        .name   = name_svideo,
2989                        .vmux   = 8,
2990                        .amux   = LINE1,
2991                }},
2992                .radio = {
2993                        .name   = name_radio,
2994                        .amux   = TV,
2995                        .gpio   = 0x0200000,
2996                },
2997        },
2998        [SAA7134_BOARD_KWORLD_ATSC110] = {
2999                .name           = "Kworld ATSC110/115",
3000                .audio_clock    = 0x00187de7,
3001                .tuner_type     = TUNER_PHILIPS_TUV1236D,
3002                .radio_type     = UNSET,
3003                .tuner_addr     = ADDR_UNSET,
3004                .radio_addr     = ADDR_UNSET,
3005                .tda9887_conf   = TDA9887_PRESENT,
3006                .mpeg           = SAA7134_MPEG_DVB,
3007                .inputs         = {{
3008                        .name = name_tv,
3009                        .vmux = 1,
3010                        .amux = TV,
3011                        .tv   = 1,
3012                },{
3013                        .name = name_comp1,
3014                        .vmux = 3,
3015                        .amux = LINE2,
3016                },{
3017                        .name = name_svideo,
3018                        .vmux = 8,
3019                        .amux = LINE2,
3020                }},
3021        },
3022        [SAA7134_BOARD_AVERMEDIA_A169_B] = {
3023                /* AVerMedia A169  */
3024                /* Rickard Osser <ricky@osser.se>  */
3025                /* This card has two saa7134 chips on it,
3026                   but only one of them is currently working. */
3027                .name           = "AVerMedia A169 B",
3028                .audio_clock    = 0x02187de7,
3029                .tuner_type     = TUNER_LG_TALN,
3030                .radio_type     = UNSET,
3031                .tuner_addr     = ADDR_UNSET,
3032                .radio_addr     = ADDR_UNSET,
3033                .tda9887_conf   = TDA9887_PRESENT,
3034                .gpiomask       = 0x0a60000,
3035        },
3036        [SAA7134_BOARD_AVERMEDIA_A169_B1] = {
3037                /* AVerMedia A169 */
3038                /* Rickard Osser <ricky@osser.se> */
3039                .name           = "AVerMedia A169 B1",
3040                .audio_clock    = 0x02187de7,
3041                .tuner_type     = TUNER_LG_TALN,
3042                .radio_type     = UNSET,
3043                .tuner_addr     = ADDR_UNSET,
3044                .radio_addr     = ADDR_UNSET,
3045                .tda9887_conf   = TDA9887_PRESENT,
3046                .gpiomask       = 0xca60000,
3047                .inputs         = {{
3048                        .name = name_tv,
3049                        .vmux = 4,
3050                        .amux = TV,
3051                        .tv   = 1,
3052                        .gpio = 0x04a61000,
3053                },{
3054                        .name = name_comp2,  /*  Composite SVIDEO (B/W if signal is carried with SVIDEO) */
3055                        .vmux = 1,
3056                        .amux = LINE2,
3057                },{
3058                        .name = name_svideo,
3059                        .vmux = 9,           /* 9 is correct as S-VIDEO1 according to a169.inf! */
3060                        .amux = LINE1,
3061                }},
3062        },
3063        [SAA7134_BOARD_MD7134_BRIDGE_2] = {
3064                /* The second saa7134 on this card only serves as DVB-S host bridge */
3065                .name           = "Medion 7134 Bridge #2",
3066                .audio_clock    = 0x00187de7,
3067                .radio_type     = UNSET,
3068                .tuner_addr     = ADDR_UNSET,
3069                .radio_addr     = ADDR_UNSET,
3070                .mpeg           = SAA7134_MPEG_DVB,
3071        },
3072        [SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS] = {
3073                .name           = "LifeView FlyDVB-T Hybrid Cardbus/MSI TV @nywhere A/D NB",
3074                .audio_clock    = 0x00200000,
3075                .tuner_type     = TUNER_PHILIPS_TDA8290,
3076                .radio_type     = UNSET,
3077                .tuner_addr     = ADDR_UNSET,
3078                .radio_addr     = ADDR_UNSET,
3079                .mpeg           = SAA7134_MPEG_DVB,
3080                .gpiomask       = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
3081                .inputs         = {{
3082                        .name = name_tv,
3083                        .vmux = 1,
3084                        .amux = TV,
3085                        .gpio = 0x200000,       /* GPIO21=High for TV input */
3086                        .tv   = 1,
3087                },{
3088                        .name = name_svideo,    /* S-Video signal on S-Video input */
3089                        .vmux = 8,
3090                        .amux = LINE2,
3091                },{
3092                        .name = name_comp1,     /* Composite signal on S-Video input */
3093                        .vmux = 0,
3094                        .amux = LINE2,
3095                },{
3096                        .name = name_comp2,     /* Composite input */
3097                        .vmux = 3,
3098                        .amux = LINE2,
3099                }},
3100                .radio = {
3101                        .name = name_radio,
3102                        .amux = TV,
3103                        .gpio = 0x000000,       /* GPIO21=Low for FM radio antenna */
3104                },
3105        },
3106        [SAA7134_BOARD_FLYVIDEO3000_NTSC] = {
3107                /* "Zac Bowling" <zac@zacbowling.com> */
3108                .name           = "LifeView FlyVIDEO3000 (NTSC)",
3109                .audio_clock    = 0x00200000,
3110                .tuner_type     = TUNER_PHILIPS_NTSC,
3111                .radio_type     = UNSET,
3112                .tuner_addr     = ADDR_UNSET,
3113                .radio_addr     = ADDR_UNSET,
3114
3115                .gpiomask       = 0xe000,
3116                .inputs         = {{
3117                        .name = name_tv,
3118                        .vmux = 1,
3119                        .amux = TV,
3120                        .gpio = 0x8000,
3121                        .tv   = 1,
3122                },{
3123                        .name = name_tv_mono,
3124                        .vmux = 1,
3125                        .amux = LINE2,
3126                        .gpio = 0x0000,
3127                        .tv   = 1,
3128                },{
3129                        .name = name_comp1,
3130                        .vmux = 0,
3131                        .amux = LINE2,
3132                        .gpio = 0x4000,
3133                },{
3134                        .name = name_comp2,
3135                        .vmux = 3,
3136                        .amux = LINE2,
3137                        .gpio = 0x4000,
3138                },{
3139                        .name = name_svideo,
3140                        .vmux = 8,
3141                        .amux = LINE2,
3142                        .gpio = 0x4000,
3143                }},
3144                .radio = {
3145                        .name = name_radio,
3146                        .amux = LINE2,
3147                        .gpio = 0x2000,
3148                },
3149                        .mute = {
3150                        .name = name_mute,
3151                        .amux = TV,
3152                        .gpio = 0x8000,
3153                },
3154        },
3155        [SAA7134_BOARD_MEDION_MD8800_QUADRO] = {
3156                .name           = "Medion Md8800 Quadro",
3157                .audio_clock    = 0x00187de7,
3158                .tuner_type     = TUNER_PHILIPS_TDA8290,
3159                .radio_type     = UNSET,
3160                .tuner_addr     = ADDR_UNSET,
3161                .radio_addr     = ADDR_UNSET,
3162                .mpeg           = SAA7134_MPEG_DVB,
3163                .inputs = {{
3164                        .name   = name_tv,
3165                        .vmux   = 1,
3166                        .amux   = TV,
3167                        .tv     = 1,
3168                },{
3169                        .name   = name_comp1,
3170                        .vmux   = 0,
3171                        .amux   = LINE1,
3172                },{
3173                        .name   = name_svideo,
3174                        .vmux   = 8,
3175                        .amux   = LINE1,
3176                }},
3177        },
3178        [SAA7134_BOARD_FLYDVBS_LR300] = {
3179                /* LifeView FlyDVB-s */
3180                /* Igor M. Liplianin <liplianin@tut.by> */
3181                .name           = "LifeView FlyDVB-S /Acorp TV134DS",
3182                .audio_clock    = 0x00200000,
3183                .tuner_type     = TUNER_ABSENT,
3184                .radio_type     = UNSET,
3185                .tuner_addr     = ADDR_UNSET,
3186                .radio_addr     = ADDR_UNSET,
3187                .mpeg           = SAA7134_MPEG_DVB,
3188                .inputs         = {{
3189                        .name = name_comp1,     /* Composite input */
3190                        .vmux = 3,
3191                        .amux = LINE1,
3192                },{
3193                        .name = name_svideo,    /* S-Video signal on S-Video input */
3194                        .vmux = 8,
3195                        .amux = LINE1,
3196                }},
3197        },
3198        [SAA7134_BOARD_PROTEUS_2309] = {
3199                .name           = "Proteus Pro 2309",
3200                .audio_clock    = 0x00187de7,
3201                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
3202                .radio_type     = UNSET,
3203                .tuner_addr     = ADDR_UNSET,
3204                .radio_addr     = ADDR_UNSET,
3205                .tda9887_conf   = TDA9887_PRESENT,
3206                .inputs         = {{
3207                        .name = name_tv,
3208                        .vmux = 1,
3209                        .amux = LINE2,
3210                        .tv   = 1,
3211                },{
3212                        .name = name_comp1,
3213                        .vmux = 0,
3214                        .amux = LINE2,
3215                },{
3216                        .name = name_comp2,
3217                        .vmux = 3,
3218                        .amux = LINE2,
3219                },{
3220                        .name = name_svideo,
3221                        .vmux = 8,
3222                        .amux = LINE2,
3223                }},
3224                .mute = {
3225                        .name = name_mute,
3226                        .amux = LINE1,
3227                },
3228        },
3229        [SAA7134_BOARD_AVERMEDIA_A16AR] = {
3230                /* Petr Baudis <pasky@ucw.cz> */
3231                .name           = "AVerMedia TV Hybrid A16AR",
3232                .audio_clock    = 0x187de7,
3233                .tuner_type     = TUNER_PHILIPS_TD1316, /* untested */
3234                .radio_type     = TUNER_TEA5767, /* untested */
3235                .tuner_addr     = ADDR_UNSET,
3236                .radio_addr     = 0x60,
3237                .tda9887_conf   = TDA9887_PRESENT,
3238                .mpeg           = SAA7134_MPEG_DVB,
3239                .inputs         = {{
3240                        .name = name_tv,
3241                        .vmux = 1,
3242                        .amux = TV,
3243                        .tv   = 1,
3244                },{
3245                        .name = name_comp1,
3246                        .vmux = 3,
3247                        .amux = LINE2,
3248                },{
3249                        .name = name_svideo,
3250                        .vmux = 8,
3251                        .amux = LINE1,
3252                }},
3253                .radio = {
3254                        .name = name_radio,
3255                        .amux = LINE1,
3256                },
3257        },
3258        [SAA7134_BOARD_ASUS_EUROPA2_HYBRID] = {
3259                .name           = "Asus Europa2 OEM",
3260                .audio_clock    = 0x00187de7,
3261                .tuner_type     = TUNER_PHILIPS_FMD1216ME_MK3,
3262                .radio_type     = UNSET,
3263                .tuner_addr     = ADDR_UNSET,
3264                .radio_addr     = ADDR_UNSET,
3265                .tda9887_conf   = TDA9887_PRESENT| TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE,
3266                .mpeg           = SAA7134_MPEG_DVB,
3267                .inputs = {{
3268                        .name   = name_tv,
3269                        .vmux   = 3,
3270                        .amux   = TV,
3271                        .tv     = 1,
3272                },{
3273                        .name   = name_comp1,
3274                        .vmux   = 4,
3275                        .amux   = LINE2,
3276                },{
3277                        .name   = name_svideo,
3278                        .vmux   = 8,
3279                        .amux   = LINE2,
3280                }},
3281                .radio = {
3282                        .name   = name_radio,
3283                        .amux   = LINE1,
3284                },
3285        },
3286        [SAA7134_BOARD_PINNACLE_PCTV_310i] = {
3287                .name           = "Pinnacle PCTV 310i",
3288                .audio_clock    = 0x00187de7,
3289                .tuner_type     = TUNER_PHILIPS_TDA8290,
3290                .radio_type     = UNSET,
3291                .tuner_addr     = ADDR_UNSET,
3292                .radio_addr     = ADDR_UNSET,
3293                .tuner_config   = 1,
3294                .mpeg           = SAA7134_MPEG_DVB,
3295                .gpiomask       = 0x000200000,
3296                .inputs         = {{
3297                        .name = name_tv,
3298                        .vmux = 4,
3299                        .amux = TV,
3300                        .tv   = 1,
3301                },{
3302                        .name = name_comp1,
3303                        .vmux = 1,
3304                        .amux = LINE2,
3305                },{
3306                        .name = name_comp2,
3307                        .vmux = 0,
3308                        .amux = LINE2,
3309                },{
3310                        .name = name_svideo,
3311                        .vmux = 8,
3312                        .amux = LINE2,
3313                }},
3314                .radio = {
3315                        .name = name_radio,
3316                        .amux   = TV,
3317                        .gpio   = 0x0200000,
3318                },
3319        },
3320        [SAA7134_BOARD_AVERMEDIA_STUDIO_507] = {
3321                /* Mikhail Fedotov <mo_fedotov@mail.ru> */
3322                .name           = "Avermedia AVerTV Studio 507",
3323                .audio_clock    = 0x00187de7,
3324                .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
3325                .radio_type     = UNSET,
3326                .tuner_addr     = ADDR_UNSET,
3327                .radio_addr     = ADDR_UNSET,
3328                .tda9887_conf   = TDA9887_PRESENT,
3329                .gpiomask       = 0x03,
3330                .inputs         = {{
3331                        .name = name_tv,
3332                        .vmux = 1,
3333                        .amux = TV,
3334                        .tv   = 1,
3335                        .gpio = 0x00,
3336                },{
3337                        .name = name_comp1,
3338                        .vmux = 0,
3339                        .amux = LINE2,
3340                        .gpio = 0x00,
3341                },{
3342                        .name = name_comp2,
3343                        .vmux = 3,
3344                        .amux = LINE2,
3345                        .gpio = 0x00,
3346                },{
3347                        .name = name_svideo,
3348                        .vmux = 8,
3349                        .amux = LINE2,
3350                        .gpio = 0x00,
3351                }},
3352                .radio = {
3353                        .name = name_radio,
3354                        .amux = LINE2,
3355                        .gpio = 0x01,
3356                },
3357                .mute  = {
3358                        .name = name_mute,
3359                        .amux = LINE1,
3360                        .gpio = 0x00,
3361                },
3362        },
3363        [SAA7134_BOARD_VIDEOMATE_DVBT_200A] = {
3364                /* Francis Barber <fedora@barber-family.id.au> */
3365                .name           = "Compro Videomate DVB-T200A",
3366                .audio_clock    = 0x00187de7,
3367                .tuner_type     = TUNER_ABSENT,
3368                .radio_type     = UNSET,
3369                .tuner_addr     = ADDR_UNSET,
3370                .radio_addr     = ADDR_UNSET,
3371                .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
3372                .mpeg           = SAA7134_MPEG_DVB,
3373                .inputs = {{
3374                        .name   = name_tv,
3375                        .vmux   = 3,
3376                        .amux   = TV,
3377                        .tv     = 1,
3378                },{
3379                        .name   = name_comp1,
3380                        .vmux   = 1,
3381                        .amux   = LINE2,
3382                },{
3383                        .name   = name_svideo,
3384                        .vmux   = 8,
3385                        .amux   = LINE2,
3386                }},
3387        },
3388        [SAA7134_BOARD_HAUPPAUGE_HVR1110] = {
3389                /* Thomas Genty <tomlohave@gmail.com> */
3390                /* David Bentham <db260179@hotmail.com> */
3391                .name           = "Hauppauge WinTV-HVR1110 DVB-T/Hybrid",
3392                .audio_clock    = 0x00187de7,
3393                .tuner_type     = TUNER_PHILIPS_TDA8290,
3394                .radio_type     = UNSET,
3395                .tuner_addr     = ADDR_UNSET,
3396                .radio_addr     = ADDR_UNSET,
3397                .tuner_config   = 1,
3398                .mpeg           = SAA7134_MPEG_DVB,
3399                .gpiomask       = 0x0200100,
3400                .inputs         = {{
3401                        .name = name_tv,
3402                        .vmux = 1,
3403                        .amux = TV,
3404                        .tv   = 1,
3405                        .gpio = 0x0000100,
3406                }, {
3407                        .name = name_comp1,
3408                        .vmux = 3,
3409                        .amux = LINE1,
3410                }, {
3411                        .name = name_svideo,
3412                        .vmux = 8,
3413                        .amux = LINE1,
3414                } },
3415                .radio = {
3416                        .name = name_radio,
3417                        .amux = TV,
3418                        .gpio = 0x0200100,
3419                },
3420        },
3421        [SAA7134_BOARD_HAUPPAUGE_HVR1150] = {
3422                .name           = "Hauppauge WinTV-HVR1150 ATSC/QAM-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   = 3,
3429                .mpeg           = SAA7134_MPEG_DVB,
3430                .ts_type        = SAA7134_MPEG_TS_SERIAL,
3431                .ts_force_val   = 1,
3432                .gpiomask       = 0x0800100, /* GPIO 21 is an INPUT */
3433                .inputs         = {{
3434                        .name = name_tv,
3435                        .vmux = 1,
3436                        .amux = TV,
3437                        .tv   = 1,
3438                        .gpio = 0x0000100,
3439                }, {
3440                        .name = name_comp1,
3441                        .vmux = 3,
3442                        .amux = LINE1,
3443                }, {
3444                        .name = name_svideo,
3445                        .vmux = 8,
3446                        .amux = LINE1,
3447                } },
3448                .radio = {
3449                        .name = name_radio,
3450                        .amux = TV,
3451                        .gpio = 0x0800100, /* GPIO 23 HI for FM */
3452                },
3453        },
3454        [SAA7134_BOARD_HAUPPAUGE_HVR1120] = {
3455                .name           = "Hauppauge WinTV-HVR1120 DVB-T/Hybrid",
3456                .audio_clock    = 0x00187de7,
3457                .tuner_type     = TUNER_PHILIPS_TDA8290,
3458                .radio_type     = UNSET,
3459                .tuner_addr     = ADDR_UNSET,
3460                .radio_addr     = ADDR_UNSET,
3461                .tuner_config   = 3,
3462                .mpeg           = SAA7134_MPEG_DVB,
3463                .ts_type        = SAA7134_MPEG_TS_SERIAL,
3464                .gpiomask       = 0x0800100, /* GPIO 21 is an INPUT */
3465                .inputs         = {{
3466                        .name = name_tv,
3467                        .vmux = 1,
3468                        .amux = TV,
3469                        .tv   = 1,
3470                        .gpio = 0x0000100,
3471                }, {
3472                        .name = name_comp1,
3473                        .vmux = 3,
3474                        .amux = LINE1,
3475                }, {
3476                        .name = name_svideo,
3477                        .vmux = 8,
3478                        .amux = LINE1,
3479                } },
3480                .radio = {
3481                        .name = name_radio,
3482                        .amux = TV,
3483                        .gpio = 0x0800100, /* GPIO 23 HI for FM */
3484                },
3485        },
3486        [SAA7134_BOARD_CINERGY_HT_PCMCIA] = {
3487                .name           = "Terratec Cinergy HT PCMCIA",
3488                .audio_clock    = 0x00187de7,
3489                .tuner_type     = TUNER_PHILIPS_TDA8290,
3490                .radio_type     = UNSET,
3491                .tuner_addr     = ADDR_UNSET,
3492                .radio_addr     = ADDR_UNSET,
3493                .mpeg           = SAA7134_MPEG_DVB,
3494                .inputs = {{
3495                        .name   = name_tv,
3496                        .vmux   = 1,
3497                        .amux   = TV,
3498                        .tv     = 1,
3499                },{
3500                        .name   = name_comp1,
3501                        .vmux   = 0,
3502                        .amux   = LINE1,
3503                },{
3504                        .name   = name_svideo,
3505                        .vmux   = 6,
3506                        .amux   = LINE1,
3507                }},
3508        },
3509        [SAA7134_BOARD_ENCORE_ENLTV] = {
3510        /* Steven Walter <stevenrwalter@gmail.com>
3511           Juan Pablo Sormani <sorman@gmail.com> */
3512                .name           = "Encore ENLTV",
3513                .audio_clock    = 0x00200000,
3514                .tuner_type     = TUNER_TNF_5335MF,
3515                .radio_type     = UNSET,
3516                .tuner_addr     = ADDR_UNSET,
3517                .radio_addr     = ADDR_UNSET,
3518                .inputs         = {{
3519                        .name = name_tv,
3520                        .vmux = 1,
3521                        .amux = 3,
3522                        .tv   = 1,
3523                },{
3524                        .name = name_tv_mono,
3525                        .vmux = 7,
3526                        .amux = 4,
3527                        .tv   = 1,
3528                },{
3529                        .name = name_comp1,
3530                        .vmux = 3,
3531                        .amux = 2,
3532                },{
3533                        .name = name_svideo,
3534                        .vmux = 0,
3535                        .amux = 2,
3536                }},
3537                .radio = {
3538                        .name = name_radio,
3539                        .amux = LINE2,
3540/*                      .gpio = 0x00300001,*/
3541                        .gpio = 0x20000,
3542
3543                },
3544                .mute = {
3545                        .name = name_mute,
3546                        .amux = 0,
3547                },
3548        },
3549        [SAA7134_BOARD_ENCORE_ENLTV_FM] = {
3550  /*    Juan Pablo Sormani <sorman@gmail.com> */
3551                .name           = "Encore ENLTV-FM",
3552                .audio_clock    = 0x00200000,
3553                .tuner_type     = TUNER_PHILIPS_FCV1236D,
3554                .radio_type     = UNSET,
3555                .tuner_addr     = ADDR_UNSET,
3556                .radio_addr     = ADDR_UNSET,
3557                .inputs         = {{
3558                        .name = name_tv,
3559                        .vmux = 1,
3560                        .amux = 3,
3561                        .tv   = 1,
3562                },{
3563                        .name = name_tv_mono,
3564                        .vmux = 7,
3565                        .amux = 4,
3566                        .tv   = 1,
3567                },{
3568                        .name = name_comp1,
3569                        .vmux = 3,
3570                        .amux = 2,
3571                },{
3572                        .name = name_svideo,
3573                        .vmux = 0,
3574                        .amux = 2,
3575                }},
3576                .radio = {
3577                        .name = name_radio,
3578                        .amux = LINE2,
3579                        .gpio = 0x20000,
3580
3581                },
3582                .mute = {
3583                        .name = name_mute,
3584                        .amux = 0,
3585                },
3586        },
3587        [SAA7134_BOARD_ENCORE_ENLTV_FM53] = {
3588                .name           = "Encore ENLTV-FM v5.3",
3589                .audio_clock    = 0x00200000,
3590                .tuner_type     = TUNER_TNF_5335MF,
3591                .radio_type     = UNSET,
3592                .tuner_addr     = ADDR_UNSET,
3593                .radio_addr     = ADDR_UNSET,
3594                .gpiomask       = 0x7000,
3595                .inputs         = { {
3596                        .name = name_tv,
3597                        .vmux = 1,
3598                        .amux = 1,
3599                        .tv   = 1,
3600                        .gpio = 0x50000,
3601                }, {
3602                        .name = name_comp1,
3603                        .vmux = 3,
3604                        .amux = 2,
3605                        .gpio = 0x2000,
3606                }, {
3607                        .name = name_svideo,
3608                        .vmux = 8,
3609                        .amux = 2,
3610                        .gpio = 0x2000,
3611                } },
3612                .radio = {
3613                        .name = name_radio,
3614                        .vmux = 1,
3615                        .amux = 1,
3616                },
3617                .mute = {
3618                        .name = name_mute,
3619                        .gpio = 0xf000,
3620                        .amux = 0,
3621                },
3622        },
3623        [SAA7134_BOARD_CINERGY_HT_PCI] = {
3624                .name           = "Terratec Cinergy HT PCI",
3625                .audio_clock    = 0x00187de7,
3626                .tuner_type     = TUNER_PHILIPS_TDA8290,
3627                .radio_type     = UNSET,
3628                .tuner_addr     = ADDR_UNSET,
3629                .radio_addr     = ADDR_UNSET,
3630                .mpeg           = SAA7134_MPEG_DVB,
3631                .inputs = {{
3632                        .name   = name_tv,
3633                        .vmux   = 1,
3634                        .amux   = TV,
3635                        .tv     = 1,
3636                },{
3637                        .name   = name_comp1,
3638                        .vmux   = 0,
3639                        .amux   = LINE1,
3640                },{
3641                        .name   = name_svideo,
3642                        .vmux   = 6,
3643                        .amux   = LINE1,
3644                }},
3645        },
3646        [SAA7134_BOARD_PHILIPS_TIGER_S] = {
3647                .name           = "Philips Tiger - S Reference design",
3648                .audio_clock    = 0x00187de7,
3649                .tuner_type     = TUNER_PHILIPS_TDA8290,
3650                .radio_type     = UNSET,
3651                .tuner_addr     = ADDR_UNSET,
3652                .radio_addr     = ADDR_UNSET,
3653                .tuner_config   = 2,
3654                .mpeg           = SAA7134_MPEG_DVB,
3655                .gpiomask       = 0x0200000,
3656                .inputs = {{
3657                        .name   = name_tv,
3658                        .vmux   = 1,
3659                        .amux   = TV,
3660                        .tv     = 1,
3661                },{
3662                        .name   = name_comp1,
3663                        .vmux   = 3,
3664                        .amux   = LINE1,
3665                },{
3666                        .name   = name_svideo,
3667                        .vmux   = 8,
3668                        .amux   = LINE1,
3669                }},
3670                .radio = {
3671                        .name   = name_radio,
3672                        .amux   = TV,
3673                        .gpio   = 0x0200000,
3674                },
3675        },
3676        [SAA7134_BOARD_AVERMEDIA_M102] = {
3677                .name           = "Avermedia M102",
3678                .audio_clock    = 0x00187de7,
3679                .tuner_type     = TUNER_PHILIPS_TDA8290,
3680                .radio_type     = UNSET,
3681                .tuner_addr     = ADDR_UNSET,
3682                .radio_addr     = ADDR_UNSET,
3683                .gpiomask       = 1<<21,
3684                .inputs         = {{
3685                        .name = name_tv,
3686                        .vmux = 1,
3687                        .amux = TV,
3688                        .tv   = 1,
3689                },{
3690                        .name = name_comp1,
3691                        .vmux = 0,
3692                        .amux = LINE2,
3693                },{
3694                        .name = name_svideo,
3695                        .vmux = 6,
3696                        .amux = LINE2,
3697                }},
3698        },
3699        [SAA7134_BOARD_ASUS_P7131_4871] = {
3700                .name           = "ASUS P7131 4871",
3701                .audio_clock    = 0x00187de7,
3702                .tuner_type     = TUNER_PHILIPS_TDA8290,
3703                .radio_type     = UNSET,
3704                .tuner_addr     = ADDR_UNSET,
3705                .radio_addr     = ADDR_UNSET,
3706                .tuner_config   = 2,
3707                .mpeg           = SAA7134_MPEG_DVB,
3708                .gpiomask       = 0x0200000,
3709                .inputs = {{
3710                        .name   = name_tv,
3711                        .vmux   = 1,
3712                        .amux   = TV,
3713                        .tv     = 1,
3714                        .gpio   = 0x0200000,
3715                }},
3716        },
3717        [SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA] = {
3718                .name           = "ASUSTeK P7131 Hybrid",
3719                .audio_clock    = 0x00187de7,
3720                .tuner_type     = TUNER_PHILIPS_TDA8290,
3721                .radio_type     = UNSET,
3722                .tuner_addr     = ADDR_UNSET,
3723                .radio_addr     = ADDR_UNSET,
3724                .tuner_config   = 2,
3725                .gpiomask       = 1 << 21,
3726                .mpeg           = SAA7134_MPEG_DVB,
3727                .inputs         = {{
3728                        .name = name_tv,
3729                        .vmux = 1,
3730                        .amux = TV,
3731                        .tv   = 1,
3732                        .gpio = 0x0000000,
3733                },{
3734                        .name = name_comp1,
3735                        .vmux = 3,
3736                        .amux = LINE2,
3737                        .gpio = 0x0200000,
3738                },{
3739                        .name = name_comp2,
3740                        .vmux = 0,
3741                        .amux = LINE2,
3742                        .gpio = 0x0200000,
3743                },{
3744                        .name = name_svideo,
3745                        .vmux = 8,
3746                        .amux = LINE2,
3747                        .gpio = 0x0200000,
3748                }},
3749                .radio = {
3750                        .name = name_radio,
3751                        .amux = TV,
3752                        .gpio = 0x0200000,
3753                },
3754        },
3755        [SAA7134_BOARD_ASUSTeK_P7131_ANALOG] = {
3756               .name           = "ASUSTeK P7131 Analog",
3757               .audio_clock    = 0x00187de7,
3758               .tuner_type     = TUNER_PHILIPS_TDA8290,
3759               .radio_type     = UNSET,
3760               .tuner_addr     = ADDR_UNSET,
3761               .radio_addr     = ADDR_UNSET,
3762               .gpiomask       = 1 << 21,
3763               .inputs         = {{
3764                       .name = name_tv,
3765                       .vmux = 1,
3766                       .amux = TV,
3767                       .tv   = 1,
3768                       .gpio = 0x0000000,
3769               }, {
3770                       .name = name_comp1,
3771                       .vmux = 3,
3772                       .amux = LINE2,
3773               }, {
3774                       .name = name_comp2,
3775                       .vmux = 0,
3776                       .amux = LINE2,
3777               }, {
3778                       .name = name_svideo,
3779                       .vmux = 8,
3780                       .amux = LINE2,
3781               } },
3782               .radio = {
3783                       .name = name_radio,
3784                       .amux = TV,
3785                       .gpio = 0x0200000,
3786               },
3787        },
3788        [SAA7134_BOARD_SABRENT_TV_PCB05] = {
3789                .name           = "Sabrent PCMCIA TV-PCB05",
3790                .audio_clock    = 0x00187de7,
3791                .tuner_type     = TUNER_PHILIPS_TDA8290,
3792                .radio_type     = UNSET,
3793                .tuner_addr     = ADDR_UNSET,
3794                .radio_addr     = ADDR_UNSET,
3795                .inputs         = {{
3796                        .name = name_tv,
3797                        .vmux = 1,
3798                        .amux = TV,
3799                        .tv   = 1,
3800                },{
3801                        .name = name_comp1,
3802                        .vmux = 3,
3803                        .amux = LINE1,
3804                },{
3805                        .name = name_comp2,
3806                        .vmux = 0,
3807                        .amux = LINE1,
3808                },{
3809                        .name = name_svideo,
3810                        .vmux = 8,
3811                        .amux = LINE1,
3812                }},
3813                .mute = {
3814                        .name = name_mute,
3815                        .amux = TV,
3816                },
3817        },
3818        [SAA7134_BOARD_10MOONSTVMASTER3] = {
3819                /* Tony Wan <aloha_cn@hotmail.com> */
3820                .name           = "10MOONS TM300 TV Card",
3821                .audio_clock    = 0x00200000,
3822                .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
3823                .radio_type     = UNSET,
3824                .tuner_addr     = ADDR_UNSET,
3825                .radio_addr     = ADDR_UNSET,
3826                .gpiomask       = 0x7000,
3827                .inputs         = {{
3828                        .name = name_tv,
3829                        .vmux = 1,
3830                        .amux = LINE2,
3831                        .gpio = 0x0000,
3832                        .tv   = 1,
3833                },{
3834                        .name = name_comp1,
3835                        .vmux = 3,
3836                        .amux = LINE1,
3837                        .gpio = 0x2000,
3838                },{
3839                        .name = name_svideo,
3840                        .vmux = 8,
3841                        .amux = LINE1,
3842                        .gpio = 0x2000,
3843                }},
3844                .mute = {
3845                        .name = name_mute,
3846                        .amux = LINE2,
3847                        .gpio = 0x3000,
3848                },
3849        },
3850        [SAA7134_BOARD_AVERMEDIA_SUPER_007] = {
3851                .name           = "Avermedia Super 007",
3852                .audio_clock    = 0x00187de7,
3853                .tuner_type     = TUNER_PHILIPS_TDA8290,
3854                .radio_type     = UNSET,
3855                .tuner_addr     = ADDR_UNSET,
3856                .radio_addr     = ADDR_UNSET,
3857                .tuner_config   = 0,
3858                .mpeg           = SAA7134_MPEG_DVB,
3859                .inputs = {{
3860                        .name   = name_tv, /* FIXME: analog tv untested */
3861                        .vmux   = 1,
3862                        .amux   = TV,
3863                        .tv     = 1,
3864                }},
3865        },
3866        [SAA7134_BOARD_AVERMEDIA_M135A] = {
3867                .name           = "Avermedia PCI pure analog (M135A)",
3868                .audio_clock    = 0x00187de7,
3869                .tuner_type     = TUNER_PHILIPS_TDA8290,
3870                .radio_type     = UNSET,
3871                .tuner_addr     = ADDR_UNSET,
3872                .radio_addr     = ADDR_UNSET,
3873                .tuner_config   = 2,
3874                .gpiomask       = 0x020200000,
3875                .inputs         = {{
3876                        .name = name_tv,
3877                        .vmux = 1,
3878                        .amux = TV,
3879                        .tv   = 1,
3880                }, {
3881                        .name = name_comp1,
3882                        .vmux = 3,
3883                        .amux = LINE1,
3884                }, {
3885                        .name = name_svideo,
3886                        .vmux = 8,
3887                        .amux = LINE1,
3888                } },
3889                .radio = {
3890                        .name = name_radio,
3891                        .amux = TV,
3892                        .gpio = 0x00200000,
3893                },
3894                .mute = {
3895                        .name = name_mute,
3896                        .amux = TV,
3897                        .gpio = 0x01,
3898                },
3899        },
3900        [SAA7134_BOARD_BEHOLD_401] = {
3901                /*       Beholder Intl. Ltd. 2008      */
3902                /*Dmitry Belimov <d.belimov@gmail.com> */
3903                .name           = "Beholder BeholdTV 401",
3904                .audio_clock    = 0x00187de7,
3905                .tuner_type     = TUNER_PHILIPS_FQ1216ME,
3906                .radio_type     = UNSET,
3907                .tuner_addr     = ADDR_UNSET,
3908                .radio_addr     = ADDR_UNSET,
3909                .gpiomask       = 0x00008000,
3910                .inputs         = {{
3911                        .name = name_svideo,
3912                        .vmux = 8,
3913                        .amux = LINE1,
3914                },{
3915                        .name = name_comp1,
3916                        .vmux = 1,
3917                        .amux = LINE1,
3918                },{
3919                        .name = name_tv,
3920                        .vmux = 3,
3921                        .amux = LINE2,
3922                        .tv   = 1,
3923                }},
3924                .mute = {
3925                        .name = name_mute,
3926                        .amux = LINE1,
3927                },
3928        },
3929        [SAA7134_BOARD_BEHOLD_403] = {
3930                /*       Beholder Intl. Ltd. 2008      */
3931                /*Dmitry Belimov <d.belimov@gmail.com> */
3932                .name           = "Beholder BeholdTV 403",
3933                .audio_clock    = 0x00187de7,
3934                .tuner_type     = TUNER_PHILIPS_FQ1216ME,
3935                .radio_type     = UNSET,
3936                .tuner_addr     = ADDR_UNSET,
3937                .radio_addr     = ADDR_UNSET,
3938                .gpiomask       = 0x00008000,
3939                .inputs         = {{
3940                        .name = name_svideo,
3941                        .vmux = 8,
3942                        .amux = LINE1,
3943                },{
3944                        .name   = name_comp1,
3945                        .vmux   = 1,
3946                        .amux   = LINE1,
3947                },{
3948                        .name = name_tv,
3949                        .vmux = 3,
3950                        .amux = LINE2,
3951                        .tv   = 1,
3952                }},
3953        },
3954        [SAA7134_BOARD_BEHOLD_403FM] = {
3955                /*       Beholder Intl. Ltd. 2008      */
3956                /*Dmitry Belimov <d.belimov@gmail.com> */
3957                .name           = "Beholder BeholdTV 403 FM",
3958                .audio_clock    = 0x00187de7,
3959                .tuner_type     = TUNER_PHILIPS_FQ1216ME,
3960                .radio_type     = UNSET,
3961                .tuner_addr     = ADDR_UNSET,
3962                .radio_addr     = ADDR_UNSET,
3963                .gpiomask       = 0x00008000,
3964                .inputs         = {{
3965                        .name = name_svideo,
3966                        .vmux = 8,
3967                        .amux = LINE1,
3968                },{
3969                        .name   = name_comp1,
3970                        .vmux   = 1,
3971                        .amux   = LINE1,
3972                },{
3973                        .name = name_tv,
3974                        .vmux = 3,
3975                        .amux = LINE2,
3976                        .tv   = 1,
3977                }},
3978                .radio = {
3979                        .name = name_radio,
3980                        .amux = LINE2,
3981                },
3982        },
3983        [SAA7134_BOARD_BEHOLD_405] = {
3984                /*       Beholder Intl. Ltd. 2008      */
3985                /*Dmitry Belimov <d.belimov@gmail.com> */
3986                .name           = "Beholder BeholdTV 405",
3987                .audio_clock    = 0x00187de7,
3988                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
3989                .radio_type     = UNSET,
3990                .tuner_addr     = ADDR_UNSET,
3991                .radio_addr     = ADDR_UNSET,
3992                .tda9887_conf   = TDA9887_PRESENT,
3993                .gpiomask       = 0x00008000,
3994                .inputs         = {{
3995                        .name = name_svideo,
3996                        .vmux = 8,
3997                        .amux = LINE1,
3998                },{
3999                        .name = name_comp1,
4000                        .vmux = 3,
4001                        .amux = LINE1,
4002                },{
4003                        .name = name_tv,
4004                        .vmux = 3,
4005                        .amux = LINE2,
4006                        .tv   = 1,
4007                }},
4008        },
4009        [SAA7134_BOARD_BEHOLD_405FM] = {
4010                /* Sergey <skiv@orel.ru> */
4011                /*       Beholder Intl. Ltd. 2008      */
4012                /*Dmitry Belimov <d.belimov@gmail.com> */
4013                .name           = "Beholder BeholdTV 405 FM",
4014                .audio_clock    = 0x00187de7,
4015                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4016                .radio_type     = UNSET,
4017                .tuner_addr     = ADDR_UNSET,
4018                .radio_addr     = ADDR_UNSET,
4019                .tda9887_conf   = TDA9887_PRESENT,
4020                .gpiomask       = 0x00008000,
4021                .inputs         = {{
4022                        .name = name_svideo,
4023                        .vmux = 8,
4024                        .amux = LINE1,
4025                },{
4026                        .name = name_comp1,
4027                        .vmux = 3,
4028                        .amux = LINE1,
4029                },{
4030                        .name = name_tv,
4031                        .vmux = 3,
4032                        .amux = LINE2,
4033                        .tv   = 1,
4034                }},
4035                .radio = {
4036                        .name = name_radio,
4037                        .amux = LINE2,
4038                },
4039        },
4040        [SAA7134_BOARD_BEHOLD_407] = {
4041                /*       Beholder Intl. Ltd. 2008      */
4042                /*Dmitry Belimov <d.belimov@gmail.com> */
4043                .name           = "Beholder BeholdTV 407",
4044                .audio_clock    = 0x00187de7,
4045                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4046                .radio_type     = UNSET,
4047                .tuner_addr     = ADDR_UNSET,
4048                .radio_addr     = ADDR_UNSET,
4049                .tda9887_conf   = TDA9887_PRESENT,
4050                .gpiomask       = 0x00008000,
4051                .inputs = {{
4052                        .name = name_svideo,
4053                        .vmux = 8,
4054                        .amux = LINE1,
4055                        .gpio = 0xc0c000,
4056                },{
4057                        .name = name_comp1,
4058                        .vmux = 1,
4059                        .amux = LINE1,
4060                        .gpio = 0xc0c000,
4061                },{
4062                        .name = name_tv,
4063                        .vmux = 3,
4064                        .amux = TV,
4065                        .tv = 1,
4066                        .gpio = 0xc0c000,
4067                }},
4068        },
4069        [SAA7134_BOARD_BEHOLD_407FM] = {
4070                /*       Beholder Intl. Ltd. 2008      */
4071                /*Dmitry Belimov <d.belimov@gmail.com> */
4072                .name           = "Beholder BeholdTV 407 FM",
4073                .audio_clock    = 0x00187de7,
4074                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4075                .radio_type     = UNSET,
4076                .tuner_addr     = ADDR_UNSET,
4077                .radio_addr     = ADDR_UNSET,
4078                .tda9887_conf   = TDA9887_PRESENT,
4079                .gpiomask       = 0x00008000,
4080                .inputs = {{
4081                        .name = name_svideo,
4082                        .vmux = 8,
4083                        .amux = LINE1,
4084                        .gpio = 0xc0c000,
4085                },{
4086                        .name = name_comp1,
4087                        .vmux = 1,
4088                        .amux = LINE1,
4089                        .gpio = 0xc0c000,
4090                },{
4091                        .name = name_tv,
4092                        .vmux = 3,
4093                        .amux = TV,
4094                        .tv = 1,
4095                        .gpio = 0xc0c000,
4096                }},
4097                .radio = {
4098                        .name = name_radio,
4099                        .amux = LINE2,
4100                        .gpio = 0xc0c000,
4101                },
4102        },
4103        [SAA7134_BOARD_BEHOLD_409] = {
4104                /*       Beholder Intl. Ltd. 2008      */
4105                /*Dmitry Belimov <d.belimov@gmail.com> */
4106                .name           = "Beholder BeholdTV 409",
4107                .audio_clock    = 0x00187de7,
4108                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4109                .radio_type     = UNSET,
4110                .tuner_addr     = ADDR_UNSET,
4111                .radio_addr     = ADDR_UNSET,
4112                .tda9887_conf   = TDA9887_PRESENT,
4113                .gpiomask       = 0x00008000,
4114                .inputs         = {{
4115                        .name = name_tv,
4116                        .vmux = 3,
4117                        .amux = TV,
4118                        .tv   = 1,
4119                },{
4120                        .name = name_comp1,
4121                        .vmux = 1,
4122                        .amux = LINE1,
4123                },{
4124                        .name = name_svideo,
4125                        .vmux = 8,
4126                        .amux = LINE1,
4127                }},
4128        },
4129        [SAA7134_BOARD_BEHOLD_505FM] = {
4130                /*       Beholder Intl. Ltd. 2008      */
4131                /*Dmitry Belimov <d.belimov@gmail.com> */
4132                .name           = "Beholder BeholdTV 505 FM",
4133                .audio_clock    = 0x00200000,
4134                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4135                .radio_type     = UNSET,
4136                .tuner_addr     = ADDR_UNSET,
4137                .radio_addr     = ADDR_UNSET,
4138                .tda9887_conf   = TDA9887_PRESENT,
4139                .gpiomask       = 0x00008000,
4140                .inputs         = {{
4141                        .name = name_tv,
4142                        .vmux = 3,
4143                        .amux = LINE2,
4144                        .tv   = 1,
4145                }, {
4146                        .name = name_comp1,
4147                        .vmux = 1,
4148                        .amux = LINE1,
4149                }, {
4150                        .name = name_svideo,
4151                        .vmux = 8,
4152                        .amux = LINE1,
4153                } },
4154                .mute = {
4155                        .name = name_mute,
4156                        .amux = LINE1,
4157                },
4158                .radio = {
4159                        .name = name_radio,
4160                        .amux = LINE2,
4161                },
4162        },
4163        [SAA7134_BOARD_BEHOLD_505RDS] = {
4164                /*       Beholder Intl. Ltd. 2008      */
4165                /*Dmitry Belimov <d.belimov@gmail.com> */
4166                .name           = "Beholder BeholdTV 505 RDS",
4167                .audio_clock    = 0x00200000,
4168                .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4169                .radio_type     = UNSET,
4170                .tuner_addr     = ADDR_UNSET,
4171                .radio_addr     = ADDR_UNSET,
4172                .rds_addr       = 0x10,
4173                .tda9887_conf   = TDA9887_PRESENT,
4174                .gpiomask       = 0x00008000,
4175                .inputs         = {{
4176                        .name = name_tv,
4177                        .vmux = 3,
4178                        .amux = LINE2,
4179                        .tv   = 1,
4180                },{
4181                        .name = name_comp1,
4182                        .vmux = 1,
4183                        .amux = LINE1,
4184                },{
4185                        .name = name_svideo,
4186                        .vmux = 8,
4187                        .amux = LINE1,
4188                }},
4189                .mute = {
4190                        .name = name_mute,
4191                        .amux = LINE1,
4192                },
4193                .radio = {
4194                        .name = name_radio,
4195                        .amux = LINE2,
4196                },
4197        },
4198        [SAA7134_BOARD_BEHOLD_507_9FM] = {
4199                /*       Beholder Intl. Ltd. 2008      */
4200                /*Dmitry Belimov <d.belimov@gmail.com> */
4201                .name           = "Beholder BeholdTV 507 FM / BeholdTV 509 FM",
4202                .audio_clock    = 0x00187de7,
4203                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4204                .radio_type     = UNSET,
4205                .tuner_addr     = ADDR_UNSET,
4206                .radio_addr     = ADDR_UNSET,
4207                .tda9887_conf   = TDA9887_PRESENT,
4208                .gpiomask       = 0x00008000,
4209                .inputs         = {{
4210                        .name = name_tv,
4211                        .vmux = 3,
4212                        .amux = TV,
4213                        .tv   = 1,
4214                },{
4215                        .name = name_comp1,
4216                        .vmux = 1,
4217                        .amux = LINE1,
4218                },{
4219                        .name = name_svideo,
4220                        .vmux = 8,
4221                        .amux = LINE1,
4222                }},
4223                        .radio = {
4224                        .name = name_radio,
4225                        .amux = LINE2,
4226                },
4227        },
4228        [SAA7134_BOARD_BEHOLD_507RDS_MK5] = {
4229                /*       Beholder Intl. Ltd. 2008      */
4230                /*Dmitry Belimov <d.belimov@gmail.com> */
4231                .name           = "Beholder BeholdTV 507 RDS",
4232                .audio_clock    = 0x00187de7,
4233                .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4234                .radio_type     = UNSET,
4235                .tuner_addr     = ADDR_UNSET,
4236                .radio_addr     = ADDR_UNSET,
4237                .rds_addr       = 0x10,
4238                .tda9887_conf   = TDA9887_PRESENT,
4239                .gpiomask       = 0x00008000,
4240                .inputs         = {{
4241                        .name = name_tv,
4242                        .vmux = 3,
4243                        .amux = TV,
4244                        .tv   = 1,
4245                }, {
4246                        .name = name_comp1,
4247                        .vmux = 1,
4248                        .amux = LINE1,
4249                }, {
4250                        .name = name_svideo,
4251                        .vmux = 8,
4252                        .amux = LINE1,
4253                } },
4254                        .radio = {
4255                        .name = name_radio,
4256                        .amux = LINE2,
4257                },
4258        },
4259        [SAA7134_BOARD_BEHOLD_507RDS_MK3] = {
4260                /*       Beholder Intl. Ltd. 2008      */
4261                /*Dmitry Belimov <d.belimov@gmail.com> */
4262                .name           = "Beholder BeholdTV 507 RDS",
4263                .audio_clock    = 0x00187de7,
4264                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4265                .radio_type     = UNSET,
4266                .tuner_addr     = ADDR_UNSET,
4267                .radio_addr     = ADDR_UNSET,
4268                .rds_addr       = 0x10,
4269                .tda9887_conf   = TDA9887_PRESENT,
4270                .gpiomask       = 0x00008000,
4271                .inputs         = {{
4272                        .name = name_tv,
4273                        .vmux = 3,
4274                        .amux = TV,
4275                        .tv   = 1,
4276                }, {
4277                        .name = name_comp1,
4278                        .vmux = 1,
4279                        .amux = LINE1,
4280                }, {
4281                        .name = name_svideo,
4282                        .vmux = 8,
4283                        .amux = LINE1,
4284                } },
4285                        .radio = {
4286                        .name = name_radio,
4287                        .amux = LINE2,
4288                },
4289        },
4290        [SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM] = {
4291                /*       Beholder Intl. Ltd. 2008      */
4292                /*Dmitry Belimov <d.belimov@gmail.com> */
4293                .name           = "Beholder BeholdTV Columbus TVFM",
4294                .audio_clock    = 0x00187de7,
4295                .tuner_type     = TUNER_ALPS_TSBE5_PAL,
4296                .radio_type     = UNSET,
4297                .tuner_addr     = ADDR_UNSET,
4298                .radio_addr     = ADDR_UNSET,
4299                .tda9887_conf   = TDA9887_PRESENT,
4300                .gpiomask       = 0x000A8004,
4301                .inputs         = {{
4302                        .name = name_tv,
4303                        .vmux = 3,
4304                        .amux = TV,
4305                        .tv   = 1,
4306                        .gpio = 0x000A8004,
4307                }, {
4308                        .name = name_comp1,
4309                        .vmux = 1,
4310                        .amux = LINE1,
4311                        .gpio = 0x000A8000,
4312                }, {
4313                        .name = name_svideo,
4314                        .vmux = 8,
4315                        .amux = LINE1,
4316                        .gpio = 0x000A8000,
4317                } },
4318                .radio = {
4319                        .name = name_radio,
4320                        .amux = LINE2,
4321                        .gpio = 0x000A8000,
4322                },
4323        },
4324        [SAA7134_BOARD_BEHOLD_607FM_MK3] = {
4325                /* Andrey Melnikoff <temnota@kmv.ru> */
4326                .name           = "Beholder BeholdTV 607 FM",
4327                .audio_clock    = 0x00187de7,
4328                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4329                .radio_type     = UNSET,
4330                .tuner_addr     = ADDR_UNSET,
4331                .radio_addr     = ADDR_UNSET,
4332                .tda9887_conf   = TDA9887_PRESENT,
4333                .inputs         = {{
4334                        .name = name_tv,
4335                        .vmux = 3,
4336                        .amux = TV,
4337                        .tv   = 1,
4338                }, {
4339                        .name = name_comp1,
4340                        .vmux = 1,
4341                        .amux = LINE1,
4342                }, {
4343                        .name = name_svideo,
4344                        .vmux = 8,
4345                        .amux = LINE1,
4346                } },
4347                .radio = {
4348                        .name = name_radio,
4349                        .amux = LINE2,
4350                },
4351        },
4352        [SAA7134_BOARD_BEHOLD_609FM_MK3] = {
4353                /* Andrey Melnikoff <temnota@kmv.ru> */
4354                .name           = "Beholder BeholdTV 609 FM",
4355                .audio_clock    = 0x00187de7,
4356                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4357                .radio_type     = UNSET,
4358                .tuner_addr     = ADDR_UNSET,
4359                .radio_addr     = ADDR_UNSET,
4360                .tda9887_conf   = TDA9887_PRESENT,
4361                .inputs         = {{
4362                        .name = name_tv,
4363                        .vmux = 3,
4364                        .amux = TV,
4365                        .tv   = 1,
4366                }, {
4367                        .name = name_comp1,
4368                        .vmux = 1,
4369                        .amux = LINE1,
4370                }, {
4371                        .name = name_svideo,
4372                        .vmux = 8,
4373                        .amux = LINE1,
4374                } },
4375                .radio = {
4376                        .name = name_radio,
4377                        .amux = LINE2,
4378                },
4379        },
4380        [SAA7134_BOARD_BEHOLD_607FM_MK5] = {
4381                /* Andrey Melnikoff <temnota@kmv.ru> */
4382                .name           = "Beholder BeholdTV 607 FM",
4383                .audio_clock    = 0x00187de7,
4384                .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4385                .radio_type     = UNSET,
4386                .tuner_addr     = ADDR_UNSET,
4387                .radio_addr     = ADDR_UNSET,
4388                .tda9887_conf   = TDA9887_PRESENT,
4389                .inputs         = {{
4390                        .name = name_tv,
4391                        .vmux = 3,
4392                        .amux = TV,
4393                        .tv   = 1,
4394                }, {
4395                        .name = name_comp1,
4396                        .vmux = 1,
4397                        .amux = LINE1,
4398                }, {
4399                        .name = name_svideo,
4400                        .vmux = 8,
4401                        .amux = LINE1,
4402                } },
4403                .radio = {
4404                        .name = name_radio,
4405                        .amux = LINE2,
4406                },
4407        },
4408        [SAA7134_BOARD_BEHOLD_609FM_MK5] = {
4409                /* Andrey Melnikoff <temnota@kmv.ru> */
4410                .name           = "Beholder BeholdTV 609 FM",
4411                .audio_clock    = 0x00187de7,
4412                .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4413                .radio_type     = UNSET,
4414                .tuner_addr     = ADDR_UNSET,
4415                .radio_addr     = ADDR_UNSET,
4416                .tda9887_conf   = TDA9887_PRESENT,
4417                .inputs         = {{
4418                        .name = name_tv,
4419                        .vmux = 3,
4420                        .amux = TV,
4421                        .tv   = 1,
4422                }, {
4423                        .name = name_comp1,
4424                        .vmux = 1,
4425                        .amux = LINE1,
4426                }, {
4427                        .name = name_svideo,
4428                        .vmux = 8,
4429                        .amux = LINE1,
4430                } },
4431                .radio = {
4432                        .name = name_radio,
4433                        .amux = LINE2,
4434                },
4435        },
4436        [SAA7134_BOARD_BEHOLD_607RDS_MK3] = {
4437                /* Andrey Melnikoff <temnota@kmv.ru> */
4438                .name           = "Beholder BeholdTV 607 RDS",
4439                .audio_clock    = 0x00187de7,
4440                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4441                .radio_type     = UNSET,
4442                .tuner_addr     = ADDR_UNSET,
4443                .radio_addr     = ADDR_UNSET,
4444                .rds_addr       = 0x10,
4445                .tda9887_conf   = TDA9887_PRESENT,
4446                .inputs         = {{
4447                        .name = name_tv,
4448                        .vmux = 3,
4449                        .amux = TV,
4450                        .tv   = 1,
4451                }, {
4452                        .name = name_comp1,
4453                        .vmux = 1,
4454                        .amux = LINE1,
4455                }, {
4456                        .name = name_svideo,
4457                        .vmux = 8,
4458                        .amux = LINE1,
4459                } },
4460                .radio = {
4461                        .name = name_radio,
4462                        .amux = LINE2,
4463                },
4464        },
4465        [SAA7134_BOARD_BEHOLD_609RDS_MK3] = {
4466                /* Andrey Melnikoff <temnota@kmv.ru> */
4467                .name           = "Beholder BeholdTV 609 RDS",
4468                .audio_clock    = 0x00187de7,
4469                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4470                .radio_type     = UNSET,
4471                .tuner_addr     = ADDR_UNSET,
4472                .radio_addr     = ADDR_UNSET,
4473                .rds_addr       = 0x10,
4474                .tda9887_conf   = TDA9887_PRESENT,
4475                .inputs         = {{
4476                        .name = name_tv,
4477                        .vmux = 3,
4478                        .amux = TV,
4479                        .tv   = 1,
4480                }, {
4481                        .name = name_comp1,
4482                        .vmux = 1,
4483                        .amux = LINE1,
4484                }, {
4485                        .name = name_svideo,
4486                        .vmux = 8,
4487                        .amux = LINE1,
4488                } },
4489                .radio = {
4490                        .name = name_radio,
4491                        .amux = LINE2,
4492                },
4493        },
4494        [SAA7134_BOARD_BEHOLD_607RDS_MK5] = {
4495                /* Andrey Melnikoff <temnota@kmv.ru> */
4496                .name           = "Beholder BeholdTV 607 RDS",
4497                .audio_clock    = 0x00187de7,
4498                .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4499                .radio_type     = UNSET,
4500                .tuner_addr     = ADDR_UNSET,
4501                .radio_addr     = ADDR_UNSET,
4502                .rds_addr       = 0x10,
4503                .tda9887_conf   = TDA9887_PRESENT,
4504                .inputs         = {{
4505                        .name = name_tv,
4506                        .vmux = 3,
4507                        .amux = TV,
4508                        .tv   = 1,
4509                }, {
4510                        .name = name_comp1,
4511                        .vmux = 1,
4512                        .amux = LINE1,
4513                }, {
4514                        .name = name_svideo,
4515                        .vmux = 8,
4516                        .amux = LINE1,
4517                } },
4518                .radio = {
4519                        .name = name_radio,
4520                        .amux = LINE2,
4521                },
4522        },
4523        [SAA7134_BOARD_BEHOLD_609RDS_MK5] = {
4524                /* Andrey Melnikoff <temnota@kmv.ru> */
4525                .name           = "Beholder BeholdTV 609 RDS",
4526                .audio_clock    = 0x00187de7,
4527                .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4528                .radio_type     = UNSET,
4529                .tuner_addr     = ADDR_UNSET,
4530                .radio_addr     = ADDR_UNSET,
4531                .rds_addr       = 0x10,
4532                .tda9887_conf   = TDA9887_PRESENT,
4533                .inputs         = {{
4534                        .name = name_tv,
4535                        .vmux = 3,
4536                        .amux = TV,
4537                        .tv   = 1,
4538                },{
4539                        .name = name_comp1,
4540                        .vmux = 1,
4541                        .amux = LINE1,
4542                },{
4543                        .name = name_svideo,
4544                        .vmux = 8,
4545                        .amux = LINE1,
4546                }},
4547                .radio = {
4548                        .name = name_radio,
4549                        .amux = LINE2,
4550                },
4551        },
4552        [SAA7134_BOARD_BEHOLD_M6] = {
4553                /* Igor Kuznetsov <igk@igk.ru> */
4554                /* Andrey Melnikoff <temnota@kmv.ru> */
4555                /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
4556                /* Alexey Osipov <lion-simba@pridelands.ru> */
4557                .name           = "Beholder BeholdTV M6",
4558                .audio_clock    = 0x00187de7,
4559                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4560                .radio_type     = UNSET,
4561                .tuner_addr     = ADDR_UNSET,
4562                .radio_addr     = ADDR_UNSET,
4563                .empress_addr   = 0x20,
4564                .tda9887_conf   = TDA9887_PRESENT,
4565                .inputs         = { {
4566                        .name = name_tv,
4567                        .vmux = 3,
4568                        .amux = TV,
4569                        .tv   = 1,
4570                }, {
4571                        .name = name_comp1,
4572                        .vmux = 1,
4573                        .amux = LINE1,
4574                }, {
4575                        .name = name_svideo,
4576                        .vmux = 8,
4577                        .amux = LINE1,
4578                } },
4579                .radio = {
4580                        .name = name_radio,
4581                        .amux = LINE2,
4582                },
4583                .mpeg  = SAA7134_MPEG_EMPRESS,
4584                .video_out = CCIR656,
4585                .vid_port_opts  = (SET_T_CODE_POLARITY_NON_INVERTED |
4586                                        SET_CLOCK_NOT_DELAYED |
4587                                        SET_CLOCK_INVERTED |
4588                                        SET_VSYNC_OFF),
4589        },
4590        [SAA7134_BOARD_BEHOLD_M63] = {
4591                /* Igor Kuznetsov <igk@igk.ru> */
4592                /* Andrey Melnikoff <temnota@kmv.ru> */
4593                /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
4594                .name           = "Beholder BeholdTV M63",
4595                .audio_clock    = 0x00187de7,
4596                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4597                .radio_type     = UNSET,
4598                .tuner_addr     = ADDR_UNSET,
4599                .radio_addr     = ADDR_UNSET,
4600                .empress_addr   = 0x20,
4601                .tda9887_conf   = TDA9887_PRESENT,
4602                .inputs         = { {
4603                        .name = name_tv,
4604                        .vmux = 3,
4605                        .amux = TV,
4606                        .tv   = 1,
4607                }, {
4608                        .name = name_comp1,
4609                        .vmux = 1,
4610                        .amux = LINE1,
4611                }, {
4612                        .name = name_svideo,
4613                        .vmux = 8,
4614                        .amux = LINE1,
4615                } },
4616                .radio = {
4617                        .name = name_radio,
4618                        .amux = LINE2,
4619                },
4620                .mpeg  = SAA7134_MPEG_EMPRESS,
4621                .video_out = CCIR656,
4622                .vid_port_opts  = (SET_T_CODE_POLARITY_NON_INVERTED |
4623                                        SET_CLOCK_NOT_DELAYED |
4624                                        SET_CLOCK_INVERTED |
4625                                        SET_VSYNC_OFF),
4626        },
4627        [SAA7134_BOARD_BEHOLD_M6_EXTRA] = {
4628                /* Igor Kuznetsov <igk@igk.ru> */
4629                /* Andrey Melnikoff <temnota@kmv.ru> */
4630                /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
4631                /* Alexey Osipov <lion-simba@pridelands.ru> */
4632                .name           = "Beholder BeholdTV M6 Extra",
4633                .audio_clock    = 0x00187de7,
4634                .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4635                .radio_type     = UNSET,
4636                .tuner_addr     = ADDR_UNSET,
4637                .radio_addr     = ADDR_UNSET,
4638                .rds_addr       = 0x10,
4639                .empress_addr   = 0x20,
4640                .tda9887_conf   = TDA9887_PRESENT,
4641                .inputs         = { {
4642                        .name = name_tv,
4643                        .vmux = 3,
4644                        .amux = TV,
4645                        .tv   = 1,
4646                }, {
4647                        .name = name_comp1,
4648                        .vmux = 1,
4649                        .amux = LINE1,
4650                }, {
4651                        .name = name_svideo,
4652                        .vmux = 8,
4653                        .amux = LINE1,
4654                } },
4655                .radio = {
4656                        .name = name_radio,
4657                        .amux = LINE2,
4658                },
4659                .mpeg  = SAA7134_MPEG_EMPRESS,
4660                .video_out = CCIR656,
4661                .vid_port_opts  = (SET_T_CODE_POLARITY_NON_INVERTED |
4662                                        SET_CLOCK_NOT_DELAYED |
4663                                        SET_CLOCK_INVERTED |
4664                                        SET_VSYNC_OFF),
4665        },
4666        [SAA7134_BOARD_TWINHAN_DTV_DVB_3056] = {
4667                .name           = "Twinhan Hybrid DTV-DVB 3056 PCI",
4668                .audio_clock    = 0x00187de7,
4669                .tuner_type     = TUNER_PHILIPS_TDA8290,
4670                .radio_type     = UNSET,
4671                .tuner_addr     = ADDR_UNSET,
4672                .radio_addr     = ADDR_UNSET,
4673                .tuner_config   = 2,
4674                .mpeg           = SAA7134_MPEG_DVB,
4675                .gpiomask       = 0x0200000,
4676                .inputs = {{
4677                        .name   = name_tv,
4678                        .vmux   = 1,
4679                        .amux   = TV,
4680                        .tv     = 1,
4681                }, {
4682                        .name   = name_comp1,
4683                        .vmux   = 3,
4684                        .amux   = LINE1,
4685                }, {
4686                        .name   = name_svideo,
4687                        .vmux   = 8,            /* untested */
4688                        .amux   = LINE1,
4689                } },
4690                .radio = {
4691                        .name   = name_radio,
4692                        .amux   = TV,
4693                        .gpio   = 0x0200000,
4694                },
4695        },
4696        [SAA7134_BOARD_GENIUS_TVGO_A11MCE] = {
4697                /* Adrian Pardini <pardo.bsso@gmail.com> */
4698                .name           = "Genius TVGO AM11MCE",
4699                .audio_clock    = 0x00200000,
4700                .tuner_type     = TUNER_TNF_5335MF,
4701                .radio_type     = UNSET,
4702                .tuner_addr     = ADDR_UNSET,
4703                .radio_addr     = ADDR_UNSET,
4704                .gpiomask       = 0xf000,
4705                .inputs         = {{
4706                        .name = name_tv_mono,
4707                        .vmux = 1,
4708                        .amux = LINE2,
4709                        .gpio = 0x0000,
4710                        .tv   = 1,
4711                }, {
4712                        .name = name_comp1,
4713                        .vmux = 3,
4714                        .amux = LINE1,
4715                        .gpio = 0x2000,
4716                        .tv = 1
4717                }, {
4718                        .name = name_svideo,
4719                        .vmux = 8,
4720                        .amux = LINE1,
4721                        .gpio = 0x2000,
4722        } },
4723                .radio = {
4724                        .name = name_radio,
4725                        .amux = LINE2,
4726                        .gpio = 0x1000,
4727                },
4728                .mute = {
4729                        .name = name_mute,
4730                        .amux = LINE2,
4731                        .gpio = 0x6000,
4732                },
4733        },
4734        [SAA7134_BOARD_PHILIPS_SNAKE] = {
4735                .name           = "NXP Snake DVB-S reference design",
4736                .audio_clock    = 0x00200000,
4737                .tuner_type     = TUNER_ABSENT,
4738                .radio_type     = UNSET,
4739                .tuner_addr     = ADDR_UNSET,
4740                .radio_addr     = ADDR_UNSET,
4741                .mpeg           = SAA7134_MPEG_DVB,
4742                .inputs = {{
4743                        .name   = name_comp1,
4744                        .vmux   = 3,
4745                        .amux   = LINE1,
4746                }, {
4747                        .name   = name_svideo,
4748                        .vmux   = 8,
4749                        .amux   = LINE1,
4750                } },
4751        },
4752        [SAA7134_BOARD_CREATIX_CTX953] = {
4753                .name         = "Medion/Creatix CTX953 Hybrid",
4754                .audio_clock  = 0x00187de7,
4755                .tuner_type   = TUNER_PHILIPS_TDA8290,
4756                .radio_type   = UNSET,
4757                .tuner_addr   = ADDR_UNSET,
4758                .radio_addr   = ADDR_UNSET,
4759                .tuner_config = 0,
4760                .mpeg         = SAA7134_MPEG_DVB,
4761                .inputs       = {{
4762                        .name = name_tv,
4763                        .vmux = 1,
4764                        .amux = TV,
4765                        .tv   = 1,
4766                }, {
4767                        .name = name_comp1,
4768                        .vmux = 0,
4769                        .amux = LINE1,
4770                }, {
4771                        .name = name_svideo,
4772                        .vmux = 8,
4773                        .amux = LINE1,
4774                } },
4775        },
4776        [SAA7134_BOARD_MSI_TVANYWHERE_AD11] = {
4777                .name           = "MSI TV@nywhere A/D v1.1",
4778                .audio_clock    = 0x00187de7,
4779                .tuner_type     = TUNER_PHILIPS_TDA8290,
4780                .radio_type     = UNSET,
4781                .tuner_addr     = ADDR_UNSET,
4782                .radio_addr     = ADDR_UNSET,
4783                .tuner_config   = 2,
4784                .mpeg           = SAA7134_MPEG_DVB,
4785                .gpiomask       = 0x0200000,
4786                .inputs = { {
4787                        .name   = name_tv,
4788                        .vmux   = 1,
4789                        .amux   = TV,
4790                        .tv     = 1,
4791                }, {
4792                        .name   = name_comp1,
4793                        .vmux   = 3,
4794                        .amux   = LINE1,
4795                }, {
4796                        .name   = name_svideo,
4797                        .vmux   = 8,
4798                        .amux   = LINE1,
4799                } },
4800                .radio = {
4801                        .name   = name_radio,
4802                        .amux   = TV,
4803                        .gpio   = 0x0200000,
4804                },
4805        },
4806        [SAA7134_BOARD_AVERMEDIA_CARDBUS_506] = {
4807                .name           = "AVerMedia Cardbus TV/Radio (E506R)",
4808                .audio_clock    = 0x187de7,
4809                .tuner_type     = TUNER_XC2028,
4810                .radio_type     = UNSET,
4811                .tuner_addr     = ADDR_UNSET,
4812                .radio_addr     = ADDR_UNSET,
4813                 .mpeg           = SAA7134_MPEG_DVB,
4814                 .inputs         = {{
4815                         .name = name_tv,
4816                         .vmux = 1,
4817                         .amux = TV,
4818                         .tv   = 1,
4819                 }, {
4820                         .name = name_comp1,
4821                         .vmux = 3,
4822                         .amux = LINE1,
4823                 }, {
4824                         .name = name_svideo,
4825                         .vmux = 8,
4826                         .amux = LINE2,
4827                 } },
4828                 .radio = {
4829                         .name = name_radio,
4830                         .amux = TV,
4831                 },
4832        },
4833        [SAA7134_BOARD_AVERMEDIA_A16D] = {
4834                .name           = "AVerMedia Hybrid TV/Radio (A16D)",
4835                .audio_clock    = 0x187de7,
4836                .tuner_type     = TUNER_XC2028,
4837                .radio_type     = UNSET,
4838                .tuner_addr     = ADDR_UNSET,
4839                .radio_addr     = ADDR_UNSET,
4840                .mpeg           = SAA7134_MPEG_DVB,
4841                .inputs         = {{
4842                        .name = name_tv,
4843                        .vmux = 1,
4844                        .amux = TV,
4845                        .tv   = 1,
4846                }, {
4847                        .name = name_svideo,
4848                        .vmux = 8,
4849                        .amux = LINE1,
4850                }, {
4851                        .name = name_comp,
4852                        .vmux = 0,
4853                        .amux = LINE1,
4854                } },
4855                .radio = {
4856                        .name = name_radio,
4857                        .amux = TV,
4858                },
4859        },
4860        [SAA7134_BOARD_AVERMEDIA_M115] = {
4861                .name           = "Avermedia M115",
4862                .audio_clock    = 0x187de7,
4863                .tuner_type     = TUNER_XC2028,
4864                .radio_type     = UNSET,
4865                .tuner_addr     = ADDR_UNSET,
4866                .radio_addr     = ADDR_UNSET,
4867                .inputs         = {{
4868                        .name = name_tv,
4869                        .vmux = 1,
4870                        .amux = TV,
4871                        .tv   = 1,
4872                }, {
4873                        .name = name_comp1,
4874                        .vmux = 3,
4875                        .amux = LINE1,
4876                }, {
4877                        .name = name_svideo,
4878                        .vmux = 8,
4879                        .amux = LINE2,
4880                } },
4881        },
4882        [SAA7134_BOARD_VIDEOMATE_T750] = {
4883                /* John Newbigin <jn@it.swin.edu.au> */
4884                .name           = "Compro VideoMate T750",
4885                .audio_clock    = 0x00187de7,
4886                .tuner_type     = TUNER_XC2028,
4887                .radio_type     = UNSET,
4888                .tuner_addr     = ADDR_UNSET,
4889                .radio_addr     = ADDR_UNSET,
4890                .inputs = {{
4891                        .name   = name_tv,
4892                        .vmux   = 3,
4893                        .amux   = TV,
4894                        .tv     = 1,
4895                }, {
4896                        .name   = name_comp1,
4897                        .vmux   = 1,
4898                        .amux   = LINE2,
4899                }, {
4900                        .name   = name_svideo,
4901                        .vmux   = 8,
4902                        .amux   = LINE2,
4903                } },
4904                .radio = {
4905                        .name = name_radio,
4906                        .amux = TV,
4907                }
4908        },
4909        [SAA7134_BOARD_AVERMEDIA_A700_PRO] = {
4910                /* Matthias Schwarzott <zzam@gentoo.org> */
4911                .name           = "Avermedia DVB-S Pro A700",
4912                .audio_clock    = 0x00187de7,
4913                .tuner_type     = TUNER_ABSENT,
4914                .radio_type     = UNSET,
4915                .tuner_addr     = ADDR_UNSET,
4916                .radio_addr     = ADDR_UNSET,
4917                .mpeg           = SAA7134_MPEG_DVB,
4918                .inputs         = { {
4919                        .name = name_comp,
4920                        .vmux = 1,
4921                        .amux = LINE1,
4922                }, {
4923                        .name = name_svideo,
4924                        .vmux = 6,
4925                        .amux = LINE1,
4926                } },
4927        },
4928        [SAA7134_BOARD_AVERMEDIA_A700_HYBRID] = {
4929                /* Matthias Schwarzott <zzam@gentoo.org> */
4930                .name           = "Avermedia DVB-S Hybrid+FM A700",
4931                .audio_clock    = 0x00187de7,
4932                .tuner_type     = TUNER_XC2028,
4933                .radio_type     = UNSET,
4934                .tuner_addr     = ADDR_UNSET,
4935                .radio_addr     = ADDR_UNSET,
4936                .mpeg           = SAA7134_MPEG_DVB,
4937                .inputs         = { {
4938                        .name   = name_tv,
4939                        .vmux   = 4,
4940                        .amux   = TV,
4941                        .tv     = 1,
4942                }, {
4943                        .name = name_comp,
4944                        .vmux = 1,
4945                        .amux = LINE1,
4946                }, {
4947                        .name = name_svideo,
4948                        .vmux = 6,
4949                        .amux = LINE1,
4950                } },
4951                .radio = {
4952                        .name = name_radio,
4953                        .amux = TV,
4954                },
4955        },
4956        [SAA7134_BOARD_BEHOLD_H6] = {
4957                /* Igor Kuznetsov <igk@igk.ru> */
4958                .name           = "Beholder BeholdTV H6",
4959                .audio_clock    = 0x00187de7,
4960                .tuner_type     = TUNER_PHILIPS_FMD1216MEX_MK3,
4961                .radio_type     = UNSET,
4962                .tuner_addr     = ADDR_UNSET,
4963                .radio_addr     = ADDR_UNSET,
4964                .tda9887_conf   = TDA9887_PRESENT,
4965                .mpeg           = SAA7134_MPEG_DVB,
4966                .inputs         = {{
4967                        .name = name_tv,
4968                        .vmux = 3,
4969                        .amux = TV,
4970                        .tv   = 1,
4971                }, {
4972                        .name = name_comp1,
4973                        .vmux = 1,
4974                        .amux = LINE1,
4975                }, {
4976                        .name = name_svideo,
4977                        .vmux = 8,
4978                        .amux = LINE1,
4979                } },
4980                .radio = {
4981                        .name = name_radio,
4982                        .amux = LINE2,
4983                },
4984        },
4985        [SAA7134_BOARD_ASUSTeK_TIGER_3IN1] = {
4986                .name           = "Asus Tiger 3in1",
4987                .audio_clock    = 0x00187de7,
4988                .tuner_type     = TUNER_PHILIPS_TDA8290,
4989                .radio_type     = UNSET,
4990                .tuner_addr     = ADDR_UNSET,
4991                .radio_addr     = ADDR_UNSET,
4992                .tuner_config   = 2,
4993                .gpiomask       = 1 << 21,
4994                .mpeg           = SAA7134_MPEG_DVB,
4995                .inputs         = {{
4996                        .name = name_tv,
4997                        .vmux = 1,
4998                        .amux = TV,
4999                        .tv   = 1,
5000                }, {
5001                        .name = name_comp,
5002                        .vmux = 0,
5003                        .amux = LINE2,
5004                }, {
5005                        .name = name_svideo,
5006                        .vmux = 8,
5007                        .amux = LINE2,
5008                } },
5009                .radio = {
5010                        .name = name_radio,
5011                        .amux = TV,
5012                        .gpio = 0x0200000,
5013                },
5014        },
5015        [SAA7134_BOARD_REAL_ANGEL_220] = {
5016                .name           = "Zogis Real Angel 220",
5017                .audio_clock    = 0x00187de7,
5018                .tuner_type     = TUNER_TNF_5335MF,
5019                .radio_type     = UNSET,
5020                .tuner_addr     = ADDR_UNSET,
5021                .radio_addr     = ADDR_UNSET,
5022                .gpiomask       = 0x801a8087,
5023                .inputs = { {
5024                        .name   = name_tv,
5025                        .vmux   = 3,
5026                        .amux   = LINE2,
5027                        .tv     = 1,
5028                        .gpio   = 0x624000,
5029                }, {
5030                        .name   = name_comp1,
5031                        .vmux   = 1,
5032                        .amux   = LINE1,
5033                        .gpio   = 0x624000,
5034                }, {
5035                        .name   = name_svideo,
5036                        .vmux   = 1,
5037                        .amux   = LINE1,
5038                        .gpio   = 0x624000,
5039                } },
5040                .radio = {
5041                        .name   = name_radio,
5042                        .amux   = LINE2,
5043                        .gpio   = 0x624001,
5044                },
5045                .mute = {
5046                        .name = name_mute,
5047                        .amux = TV,
5048                },
5049        },
5050        [SAA7134_BOARD_ADS_INSTANT_HDTV_PCI] = {
5051                .name           = "ADS Tech Instant HDTV",
5052                .audio_clock    = 0x00187de7,
5053                .tuner_type     = TUNER_PHILIPS_TUV1236D,
5054                .radio_type     = UNSET,
5055                .tuner_addr     = ADDR_UNSET,
5056                .radio_addr     = ADDR_UNSET,
5057                .tda9887_conf   = TDA9887_PRESENT,
5058                .mpeg           = SAA7134_MPEG_DVB,
5059                .inputs         = { {
5060                        .name = name_tv,
5061                        .vmux = 1,
5062                        .amux = TV,
5063                        .tv   = 1,
5064                }, {
5065                        .name = name_comp,
5066                        .vmux = 4,
5067                        .amux = LINE1,
5068                }, {
5069                        .name = name_svideo,
5070                        .vmux = 8,
5071                        .amux = LINE1,
5072                } },
5073        },
5074        [SAA7134_BOARD_ASUSTeK_TIGER] = {
5075                .name           = "Asus Tiger Rev:1.00",
5076                .audio_clock    = 0x00187de7,
5077                .tuner_type     = TUNER_PHILIPS_TDA8290,
5078                .radio_type     = UNSET,
5079                .tuner_addr     = ADDR_UNSET,
5080                .radio_addr     = ADDR_UNSET,
5081                .tuner_config   = 0,
5082                .mpeg           = SAA7134_MPEG_DVB,
5083                .gpiomask       = 0x0200000,
5084                .inputs = { {
5085                        .name   = name_tv,
5086                        .vmux   = 1,
5087                        .amux   = TV,
5088                        .tv     = 1,
5089                }, {
5090                        .name   = name_comp1,
5091                        .vmux   = 3,
5092                        .amux   = LINE2,
5093                }, {
5094                        .name   = name_comp2,
5095                        .vmux   = 0,
5096                        .amux   = LINE2,
5097                }, {
5098                        .name   = name_svideo,
5099                        .vmux   = 8,
5100                        .amux   = LINE2,
5101                } },
5102                .radio = {
5103                        .name   = name_radio,
5104                        .amux   = TV,
5105                        .gpio   = 0x0200000,
5106                },
5107        },
5108        [SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG] = {
5109                .name           = "Kworld Plus TV Analog Lite PCI",
5110                .audio_clock    = 0x00187de7,
5111                .tuner_type     = TUNER_YMEC_TVF_5533MF,
5112                .radio_type     = TUNER_TEA5767,
5113                .tuner_addr     = ADDR_UNSET,
5114                .radio_addr     = 0x60,
5115                .gpiomask       = 0x80000700,
5116                .inputs = { {
5117                        .name   = name_tv,
5118                        .vmux   = 1,
5119                        .amux   = LINE2,
5120                        .tv     = 1,
5121                        .gpio   = 0x100,
5122                }, {
5123                        .name   = name_comp1,
5124                        .vmux   = 3,
5125                        .amux   = LINE1,
5126                        .gpio   = 0x200,
5127                }, {
5128                        .name   = name_svideo,
5129                        .vmux   = 8,
5130                        .amux   = LINE1,
5131                        .gpio   = 0x200,
5132                } },
5133                .radio = {
5134                        .name   = name_radio,
5135                        .vmux   = 1,
5136                        .amux   = LINE1,
5137                        .gpio   = 0x100,
5138                },
5139                .mute = {
5140                        .name = name_mute,
5141                        .vmux = 8,
5142                        .amux = 2,
5143                },
5144        },
5145        [SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS] = {
5146                .name           = "Avermedia AVerTV GO 007 FM Plus",
5147                .audio_clock    = 0x00187de7,
5148                .tuner_type     = TUNER_PHILIPS_TDA8290,
5149                .radio_type     = UNSET,
5150                .tuner_addr     = ADDR_UNSET,
5151                .radio_addr     = ADDR_UNSET,
5152                .gpiomask       = 0x00300003,
5153                /* .gpiomask       = 0x8c240003, */
5154                .inputs         = { {
5155                        .name = name_tv,
5156                        .vmux = 1,
5157                        .amux = TV,
5158                        .tv   = 1,
5159                        .gpio = 0x01,
5160                }, {
5161                        .name = name_svideo,
5162                        .vmux = 6,
5163                        .amux = LINE1,
5164                        .gpio = 0x02,
5165                } },
5166                .radio = {
5167                        .name = name_radio,
5168                        .amux = TV,
5169                        .gpio = 0x00300001,
5170                },
5171                .mute = {
5172                        .name = name_mute,
5173                        .amux = TV,
5174                        .gpio = 0x01,
5175                },
5176        },
5177        [SAA7134_BOARD_AVERMEDIA_STUDIO_507UA] = {
5178                /* Andy Shevchenko <andy@smile.org.ua> */
5179                .name           = "Avermedia AVerTV Studio 507UA",
5180                .audio_clock    = 0x00187de7,
5181                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3, /* Should be MK5 */
5182                .radio_type     = UNSET,
5183                .tuner_addr     = ADDR_UNSET,
5184                .radio_addr     = ADDR_UNSET,
5185                .tda9887_conf   = TDA9887_PRESENT,
5186                .gpiomask       = 0x03,
5187                .inputs         = { {
5188                        .name = name_tv,
5189                        .vmux = 1,
5190                        .amux = TV,
5191                        .tv   = 1,
5192                        .gpio = 0x00,
5193                }, {
5194                        .name = name_comp1,
5195                        .vmux = 3,
5196                        .amux = LINE1,
5197                        .gpio = 0x00,
5198                }, {
5199                        .name = name_svideo,
5200                        .vmux = 8,
5201                        .amux = LINE1,
5202                        .gpio = 0x00,
5203                } },
5204                .radio = {
5205                        .name = name_radio,
5206                        .amux = LINE2,
5207                        .gpio = 0x01,
5208                },
5209                .mute  = {
5210                        .name = name_mute,
5211                        .amux = LINE1,
5212                        .gpio = 0x00,
5213                },
5214        },
5215        [SAA7134_BOARD_VIDEOMATE_S350] = {
5216                /* Jan D. Louw <jd.louw@mweb.co.za */
5217                .name           = "Compro VideoMate S350/S300",
5218                .audio_clock    = 0x00187de7,
5219                .tuner_type     = TUNER_ABSENT,
5220                .radio_type     = UNSET,
5221                .tuner_addr     = ADDR_UNSET,
5222                .radio_addr     = ADDR_UNSET,
5223                .mpeg           = SAA7134_MPEG_DVB,
5224                .inputs = { {
5225                        .name   = name_comp1,
5226                        .vmux   = 0,
5227                        .amux   = LINE1,
5228                }, {
5229                        .name   = name_svideo,
5230                        .vmux   = 8, /* Not tested */
5231                        .amux   = LINE1
5232                } },
5233        },
5234        [SAA7134_BOARD_BEHOLD_X7] = {
5235                /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
5236                .name           = "Beholder BeholdTV X7",
5237                .audio_clock    = 0x00187de7,
5238                .tuner_type     = TUNER_XC5000,
5239                .radio_type     = UNSET,
5240                .tuner_addr     = ADDR_UNSET,
5241                .radio_addr     = ADDR_UNSET,
5242                .inputs         = { {
5243                        .name = name_tv,
5244                        .vmux = 2,
5245                        .amux = TV,
5246                        .tv   = 1,
5247                }, {
5248                        .name = name_comp1,
5249                        .vmux = 0,
5250                        .amux = LINE1,
5251                }, {
5252                        .name = name_svideo,
5253                        .vmux = 9,
5254                        .amux = LINE1,
5255                } },
5256                .radio = {
5257                        .name = name_radio,
5258                        .amux = TV,
5259                },
5260        },
5261        [SAA7134_BOARD_ZOLID_HYBRID_PCI] = {
5262                .name           = "Zolid Hybrid TV Tuner PCI",
5263                .audio_clock    = 0x00187de7,
5264                .tuner_type     = TUNER_PHILIPS_TDA8290,
5265                .radio_type     = UNSET,
5266                .tuner_addr     = ADDR_UNSET,
5267                .radio_addr     = ADDR_UNSET,
5268                .tuner_config   = 0,
5269                .mpeg           = SAA7134_MPEG_DVB,
5270                .ts_type        = SAA7134_MPEG_TS_PARALLEL,
5271                .inputs         = {{
5272                        .name = name_tv,
5273                        .vmux = 1,
5274                        .amux = TV,
5275                        .tv   = 1,
5276                } },
5277                .radio = {      /* untested */
5278                        .name = name_radio,
5279                        .amux = TV,
5280                },
5281        },
5282
5283};
5284
5285const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
5286
5287/* ------------------------------------------------------------------ */
5288/* PCI ids + subsystem IDs                                            */
5289
5290struct pci_device_id saa7134_pci_tbl[] = {
5291        {
5292                .vendor       = PCI_VENDOR_ID_PHILIPS,
5293                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5294                .subvendor    = PCI_VENDOR_ID_PHILIPS,
5295                .subdevice    = 0x2001,
5296                .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
5297        },{
5298                .vendor       = PCI_VENDOR_ID_PHILIPS,
5299                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5300                .subvendor    = PCI_VENDOR_ID_PHILIPS,
5301                .subdevice    = 0x2001,
5302                .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
5303        },{
5304                .vendor       = PCI_VENDOR_ID_PHILIPS,
5305                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5306                .subvendor    = PCI_VENDOR_ID_PHILIPS,
5307                .subdevice    = 0x6752,
5308                .driver_data  = SAA7134_BOARD_EMPRESS,
5309        },{
5310                .vendor       = PCI_VENDOR_ID_PHILIPS,
5311                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5312                .subvendor    = 0x1131,
5313                .subdevice    = 0x4e85,
5314                .driver_data  = SAA7134_BOARD_MONSTERTV,
5315        },{
5316                .vendor       = PCI_VENDOR_ID_PHILIPS,
5317                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5318                .subvendor    = 0x153b,
5319                .subdevice    = 0x1142,
5320                .driver_data  = SAA7134_BOARD_CINERGY400,
5321        },{
5322                .vendor       = PCI_VENDOR_ID_PHILIPS,
5323                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5324                .subvendor    = 0x153b,
5325                .subdevice    = 0x1143,
5326                .driver_data  = SAA7134_BOARD_CINERGY600,
5327        },{
5328                .vendor       = PCI_VENDOR_ID_PHILIPS,
5329                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5330                .subvendor    = 0x153b,
5331                .subdevice    = 0x1158,
5332                .driver_data  = SAA7134_BOARD_CINERGY600_MK3,
5333        },{
5334                .vendor       = PCI_VENDOR_ID_PHILIPS,
5335                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5336                .subvendor    = 0x153b,
5337                .subdevice    = 0x1162,
5338                .driver_data  = SAA7134_BOARD_CINERGY400_CARDBUS,
5339        },{
5340                .vendor       = PCI_VENDOR_ID_PHILIPS,
5341                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5342                .subvendor    = 0x5169,
5343                .subdevice    = 0x0138,
5344                .driver_data  = SAA7134_BOARD_FLYVIDEO3000_NTSC,
5345        },{
5346                .vendor       = PCI_VENDOR_ID_PHILIPS,
5347                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5348                .subvendor    = 0x5168,
5349                .subdevice    = 0x0138,
5350                .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
5351        },{
5352                .vendor       = PCI_VENDOR_ID_PHILIPS,
5353                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5354                .subvendor    = 0x4e42,                         /* "Typhoon PCI Capture TV Card" Art.No. 50673 */
5355                .subdevice    = 0x0138,
5356                .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
5357        },{
5358                .vendor       = PCI_VENDOR_ID_PHILIPS,
5359                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5360                .subvendor    = 0x5168,
5361                .subdevice    = 0x0138,
5362                .driver_data  = SAA7134_BOARD_FLYVIDEO2000,
5363        },{
5364                .vendor       = PCI_VENDOR_ID_PHILIPS,
5365                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5366                .subvendor    = 0x4e42,         /* Typhoon */
5367                .subdevice    = 0x0138,         /* LifeView FlyTV Prime30 OEM */
5368                .driver_data  = SAA7134_BOARD_FLYVIDEO2000,
5369        },{
5370                .vendor       = PCI_VENDOR_ID_PHILIPS,
5371                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5372                .subvendor    = 0x5168,
5373                .subdevice    = 0x0212, /* minipci, LR212 */
5374                .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
5375        },{
5376                .vendor       = PCI_VENDOR_ID_PHILIPS,
5377                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5378                .subvendor    = 0x14c0,
5379                .subdevice    = 0x1212, /* minipci, LR1212 */
5380                .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI2,
5381        },{
5382                .vendor       = PCI_VENDOR_ID_PHILIPS,
5383                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5384                .subvendor    = 0x4e42,
5385                .subdevice    = 0x0212, /* OEM minipci, LR212 */
5386                .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
5387        },{
5388                .vendor       = PCI_VENDOR_ID_PHILIPS,
5389                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5390                .subvendor    = 0x5168, /* Animation Technologies (LifeView) */
5391                .subdevice    = 0x0214, /* Standard PCI, LR214 Rev E and earlier (SAA7135) */
5392                .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM,
5393        },{
5394                .vendor       = PCI_VENDOR_ID_PHILIPS,
5395                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5396                .subvendor    = 0x5168, /* Animation Technologies (LifeView) */
5397                .subdevice    = 0x5214, /* Standard PCI, LR214 Rev F onwards (SAA7131) */
5398                .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM,
5399        },{
5400                .vendor       = PCI_VENDOR_ID_PHILIPS,
5401                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5402                .subvendor    = 0x1489, /* KYE */
5403                .subdevice    = 0x0214, /* Genius VideoWonder ProTV */
5404                .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM, /* is an LR214WF actually */
5405        },{
5406                .vendor       = PCI_VENDOR_ID_PHILIPS,
5407                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5408                .subvendor    = 0x16be,
5409                .subdevice    = 0x0003,
5410                .driver_data  = SAA7134_BOARD_MD7134,
5411        },{
5412                .vendor       = PCI_VENDOR_ID_PHILIPS,
5413                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5414                .subvendor    = 0x16be, /* CTX946 analog TV, HW mpeg, DVB-T */
5415                .subdevice    = 0x5000, /* only analog TV and DVB-T for now */
5416                .driver_data  = SAA7134_BOARD_MD7134,
5417        }, {
5418                .vendor       = PCI_VENDOR_ID_PHILIPS,
5419                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5420                .subvendor    = 0x1048,
5421                .subdevice    = 0x226b,
5422                .driver_data  = SAA7134_BOARD_ELSA,
5423        },{
5424                .vendor       = PCI_VENDOR_ID_PHILIPS,
5425                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5426                .subvendor    = 0x1048,
5427                .subdevice    = 0x226a,
5428                .driver_data  = SAA7134_BOARD_ELSA_500TV,
5429        },{
5430                .vendor       = PCI_VENDOR_ID_PHILIPS,
5431                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5432                .subvendor    = 0x1048,
5433                .subdevice    = 0x226c,
5434                .driver_data  = SAA7134_BOARD_ELSA_700TV,
5435        },{
5436                .vendor       = PCI_VENDOR_ID_PHILIPS,
5437                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5438                .subvendor    = PCI_VENDOR_ID_ASUSTEK,
5439                .subdevice    = 0x4842,
5440                .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
5441        },{
5442                .vendor       = PCI_VENDOR_ID_PHILIPS,
5443                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5444                .subvendor    = PCI_VENDOR_ID_ASUSTEK,
5445                .subdevice    = 0x4845,
5446                .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7135,
5447        },{
5448                .vendor       = PCI_VENDOR_ID_PHILIPS,
5449                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5450                .subvendor    = PCI_VENDOR_ID_ASUSTEK,
5451                .subdevice    = 0x4830,
5452                .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
5453        },{
5454                .vendor       = PCI_VENDOR_ID_PHILIPS,
5455                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5456                .subvendor    = PCI_VENDOR_ID_ASUSTEK,
5457                .subdevice    = 0x4843,
5458                .driver_data  = SAA7134_BOARD_ASUSTEK_TVFM7133,
5459        },{
5460                .vendor       = PCI_VENDOR_ID_PHILIPS,
5461                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5462                .subvendor    = PCI_VENDOR_ID_ASUSTEK,
5463                .subdevice    = 0x4840,
5464                .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
5465        },{
5466                .vendor       = PCI_VENDOR_ID_PHILIPS,
5467                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5468                .subvendor    = PCI_VENDOR_ID_PHILIPS,
5469                .subdevice    = 0xfe01,
5470                .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
5471        },{
5472                .vendor       = PCI_VENDOR_ID_PHILIPS,
5473                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5474                .subvendor    = 0x1894,
5475                .subdevice    = 0xfe01,
5476                .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
5477        },{
5478                .vendor       = PCI_VENDOR_ID_PHILIPS,
5479                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5480                .subvendor    = 0x1894,
5481                .subdevice    = 0xa006,
5482                .driver_data  = SAA7134_BOARD_TVSTATION_DVR,
5483        },{
5484                .vendor       = PCI_VENDOR_ID_PHILIPS,
5485                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5486                .subvendor    = 0x1131,
5487                .subdevice    = 0x7133,
5488                .driver_data  = SAA7134_BOARD_VA1000POWER,
5489        },{
5490                .vendor       = PCI_VENDOR_ID_PHILIPS,
5491                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5492                .subvendor    = PCI_VENDOR_ID_PHILIPS,
5493                .subdevice    = 0x2001,
5494                .driver_data  = SAA7134_BOARD_10MOONSTVMASTER,
5495        },{
5496                .vendor       = PCI_VENDOR_ID_PHILIPS,
5497                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5498                .subvendor    = 0x185b,
5499                .subdevice    = 0xc100,
5500                .driver_data  = SAA7134_BOARD_VIDEOMATE_TV,
5501        },{
5502                .vendor       = PCI_VENDOR_ID_PHILIPS,
5503                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5504                .subvendor    = 0x185b,
5505                .subdevice    = 0xc100,
5506                .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS,
5507        },{
5508                .vendor       = PCI_VENDOR_ID_PHILIPS,
5509                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5510                .subvendor    = PCI_VENDOR_ID_MATROX,
5511                .subdevice    = 0x48d0,
5512                .driver_data  = SAA7134_BOARD_CRONOS_PLUS,
5513        },{
5514                .vendor       = PCI_VENDOR_ID_PHILIPS,
5515                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5516                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5517                .subdevice    = 0xa70b,
5518                .driver_data  = SAA7134_BOARD_MD2819,
5519        },{
5520                .vendor       = PCI_VENDOR_ID_PHILIPS,
5521                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5522                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5523                .subdevice    = 0xa7a1,
5524                .driver_data  = SAA7134_BOARD_AVERMEDIA_A700_PRO,
5525        }, {
5526                .vendor       = PCI_VENDOR_ID_PHILIPS,
5527                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5528                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5529                .subdevice    = 0xa7a2,
5530                .driver_data  = SAA7134_BOARD_AVERMEDIA_A700_HYBRID,
5531        }, {
5532                .vendor       = PCI_VENDOR_ID_PHILIPS,
5533                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5534                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5535                .subdevice    = 0x2115,
5536                .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_305,
5537        },{
5538                .vendor       = PCI_VENDOR_ID_PHILIPS,
5539                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5540                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5541                .subdevice    = 0xa115,
5542                .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_505,
5543        }, {
5544                .vendor       = PCI_VENDOR_ID_PHILIPS,
5545                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5546                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5547                .subdevice    = 0x2108,
5548                .driver_data  = SAA7134_BOARD_AVERMEDIA_305,
5549        },{
5550                .vendor       = PCI_VENDOR_ID_PHILIPS,
5551                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5552                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5553                .subdevice    = 0x10ff,
5554                .driver_data  = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
5555        },{
5556                /* AVerMedia CardBus */
5557                .vendor       = PCI_VENDOR_ID_PHILIPS,
5558                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5559                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5560                .subdevice    = 0xd6ee,
5561                .driver_data  = SAA7134_BOARD_AVERMEDIA_CARDBUS,
5562        },{
5563                /* AVerMedia CardBus */
5564                .vendor       = PCI_VENDOR_ID_PHILIPS,
5565                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5566                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5567                .subdevice    = 0xb7e9,
5568                .driver_data  = SAA7134_BOARD_AVERMEDIA_CARDBUS_501,
5569        }, {
5570                /* TransGear 3000TV */
5571                .vendor       = PCI_VENDOR_ID_PHILIPS,
5572                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5573                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5574                .subdevice    = 0x050c,
5575                .driver_data  = SAA7134_BOARD_TG3000TV,
5576        },{
5577                .vendor       = PCI_VENDOR_ID_PHILIPS,
5578                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5579                .subvendor    = 0x11bd,
5580                .subdevice    = 0x002b,
5581                .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
5582        },{
5583                .vendor       = PCI_VENDOR_ID_PHILIPS,
5584                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5585                .subvendor    = 0x11bd,
5586                .subdevice    = 0x002d,
5587                .driver_data  = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL,
5588        },{
5589                .vendor       = PCI_VENDOR_ID_PHILIPS,
5590                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5591                .subvendor    = 0x1019,
5592                .subdevice    = 0x4cb4,
5593                .driver_data  = SAA7134_BOARD_ECS_TVP3XP,
5594        },{
5595                .vendor       = PCI_VENDOR_ID_PHILIPS,
5596                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5597                .subvendor    = 0x1019,
5598                .subdevice    = 0x4cb5,
5599                .driver_data  = SAA7134_BOARD_ECS_TVP3XP_4CB5,
5600        },{
5601                .vendor       = PCI_VENDOR_ID_PHILIPS,
5602                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5603                .subvendor    = 0x1019,
5604                .subdevice    = 0x4cb6,
5605                .driver_data  = SAA7134_BOARD_ECS_TVP3XP_4CB6,
5606        },{
5607                .vendor       = PCI_VENDOR_ID_PHILIPS,
5608                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5609                .subvendor    = 0x12ab,
5610                .subdevice    = 0x0800,
5611                .driver_data  = SAA7134_BOARD_UPMOST_PURPLE_TV,
5612        },{
5613                .vendor       = PCI_VENDOR_ID_PHILIPS,
5614                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5615                .subvendor    = 0x153b,
5616                .subdevice    = 0x1152,
5617                .driver_data  = SAA7134_BOARD_CINERGY200,
5618        },{
5619                .vendor       = PCI_VENDOR_ID_PHILIPS,
5620                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5621                .subvendor    = 0x185b,
5622                .subdevice    = 0xc100,
5623                .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_PVR,
5624        },{
5625                .vendor       = PCI_VENDOR_ID_PHILIPS,
5626                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5627                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5628                .subdevice    = 0x9715,
5629                .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_307,
5630        },{
5631                .vendor       = PCI_VENDOR_ID_PHILIPS,
5632                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5633                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5634                .subdevice    = 0xa70a,
5635                .driver_data  = SAA7134_BOARD_AVERMEDIA_307,
5636        },{
5637                .vendor       = PCI_VENDOR_ID_PHILIPS,
5638                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5639                .subvendor    = 0x185b,
5640                .subdevice    = 0xc200,
5641                .driver_data  = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS,
5642        },{
5643                .vendor       = PCI_VENDOR_ID_PHILIPS,
5644                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5645                .subvendor    = 0x1540,
5646                .subdevice    = 0x9524,
5647                .driver_data  = SAA7134_BOARD_PROVIDEO_PV952,
5648
5649        },{
5650                .vendor       = PCI_VENDOR_ID_PHILIPS,
5651                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5652                .subvendor    = 0x5168,
5653                .subdevice    = 0x0502,                /* Cardbus version */
5654                .driver_data  = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
5655        },{
5656                .vendor       = PCI_VENDOR_ID_PHILIPS,
5657                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5658                .subvendor    = 0x5168,
5659                .subdevice    = 0x0306,                /* PCI version */
5660                .driver_data  = SAA7134_BOARD_FLYDVBTDUO,
5661        },{
5662                .vendor       = PCI_VENDOR_ID_PHILIPS,
5663                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5664                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5665                .subdevice    = 0xf31f,
5666                .driver_data  = SAA7134_BOARD_AVERMEDIA_GO_007_FM,
5667
5668        },{
5669                .vendor       = PCI_VENDOR_ID_PHILIPS,
5670                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5671                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5672                .subdevice    = 0xf11d,
5673                .driver_data  = SAA7134_BOARD_AVERMEDIA_M135A,
5674        }, {
5675                .vendor       = PCI_VENDOR_ID_PHILIPS,
5676                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5677                .subvendor    = PCI_VENDOR_ID_PHILIPS,
5678                .subdevice    = 0x2004,
5679                .driver_data  = SAA7134_BOARD_PHILIPS_TOUGH,
5680        },{
5681                .vendor       = PCI_VENDOR_ID_PHILIPS,
5682                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5683                .subvendor    = 0x1421,
5684                .subdevice    = 0x0350,         /* PCI version */
5685                .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
5686        },{
5687                .vendor       = PCI_VENDOR_ID_PHILIPS,
5688                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5689                .subvendor    = 0x1421,
5690                .subdevice    = 0x0351,         /* PCI version, new revision */
5691                .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
5692        },{
5693                .vendor       = PCI_VENDOR_ID_PHILIPS,
5694                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5695                .subvendor    = 0x1421,
5696                .subdevice    = 0x0370,         /* cardbus version */
5697                .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
5698        },{
5699                .vendor       = PCI_VENDOR_ID_PHILIPS,
5700                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5701                .subvendor    = 0x1421,
5702                .subdevice    = 0x1370,        /* cardbus version */
5703                .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
5704
5705        },{
5706                .vendor       = PCI_VENDOR_ID_PHILIPS,
5707                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5708                .subvendor    = 0x4e42,         /* Typhoon */
5709                .subdevice    = 0x0502,         /* LifeView LR502 OEM */
5710                .driver_data  = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
5711        },{
5712                .vendor       = PCI_VENDOR_ID_PHILIPS,
5713                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5714                .subvendor    = 0x1043,
5715                .subdevice    = 0x0210,         /* mini pci NTSC version */
5716                .driver_data  = SAA7134_BOARD_FLYTV_DIGIMATRIX,
5717        },{
5718                .vendor       = PCI_VENDOR_ID_PHILIPS,
5719                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5720                .subvendor    = 0x1043,
5721                .subdevice    = 0x0210,         /* mini pci PAL/SECAM version */
5722                .driver_data  = SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV,
5723
5724        },{
5725                .vendor       = PCI_VENDOR_ID_PHILIPS,
5726                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5727                .subvendor    = 0x0000, /* It shouldn't break anything, since subdevice id seems unique */
5728                .subdevice    = 0x4091,
5729                .driver_data  = SAA7134_BOARD_BEHOLD_409FM,
5730        },{
5731                .vendor       = PCI_VENDOR_ID_PHILIPS,
5732                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5733                .subvendor    = 0x5456, /* GoTView */
5734                .subdevice    = 0x7135,
5735                .driver_data  = SAA7134_BOARD_GOTVIEW_7135,
5736        },{
5737                .vendor       = PCI_VENDOR_ID_PHILIPS,
5738                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5739                .subvendor    = PCI_VENDOR_ID_PHILIPS,
5740                .subdevice    = 0x2004,
5741                .driver_data  = SAA7134_BOARD_PHILIPS_EUROPA,
5742        },{
5743                .vendor       = PCI_VENDOR_ID_PHILIPS,
5744                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5745                .subvendor    = 0x185b,
5746                .subdevice    = 0xc900,
5747                .driver_data  = SAA7134_BOARD_VIDEOMATE_DVBT_300,
5748        },{
5749                .vendor       = PCI_VENDOR_ID_PHILIPS,
5750                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5751                .subvendor    = 0x185b,
5752                .subdevice    = 0xc901,
5753                .driver_data  = SAA7134_BOARD_VIDEOMATE_DVBT_200,
5754        },{
5755                .vendor       = PCI_VENDOR_ID_PHILIPS,
5756                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5757                .subvendor    = 0x1435,
5758                .subdevice    = 0x7350,
5759                .driver_data  = SAA7134_BOARD_RTD_VFG7350,
5760        },{
5761                .vendor       = PCI_VENDOR_ID_PHILIPS,
5762                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5763                .subvendor    = 0x1435,
5764                .subdevice    = 0x7330,
5765                .driver_data  = SAA7134_BOARD_RTD_VFG7330,
5766        },{
5767                .vendor       = PCI_VENDOR_ID_PHILIPS,
5768                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5769                .subvendor    = 0x1461,
5770                .subdevice    = 0x1044,
5771                .driver_data  = SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180,
5772        },{
5773                .vendor       = PCI_VENDOR_ID_PHILIPS,
5774                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5775                .subvendor    = 0x1131,
5776                .subdevice    = 0x4ee9,
5777                .driver_data  = SAA7134_BOARD_MONSTERTV_MOBILE,
5778        },{
5779                .vendor       = PCI_VENDOR_ID_PHILIPS,
5780                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5781                .subvendor    = 0x11bd,
5782                .subdevice    = 0x002e,
5783                .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_110i,
5784        },{
5785                .vendor       = PCI_VENDOR_ID_PHILIPS,
5786                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5787                .subvendor    = 0x1043,
5788                .subdevice    = 0x4862,
5789                .driver_data  = SAA7134_BOARD_ASUSTeK_P7131_DUAL,
5790        },{
5791                .vendor       = PCI_VENDOR_ID_PHILIPS,
5792                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5793                .subvendor    = PCI_VENDOR_ID_PHILIPS,
5794                .subdevice    = 0x2018,
5795                .driver_data  = SAA7134_BOARD_PHILIPS_TIGER,
5796        },{
5797                .vendor       = PCI_VENDOR_ID_PHILIPS,
5798                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5799                .subvendor    = 0x1462,
5800                .subdevice    = 0x6231, /* tda8275a, ks003 IR */
5801                .driver_data  = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS,
5802        },{
5803                .vendor       = PCI_VENDOR_ID_PHILIPS,
5804                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5805                .subvendor    = 0x1462,
5806                .subdevice    = 0x8624, /* tda8275, ks003 IR */
5807                .driver_data  = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS,
5808        },{
5809                .vendor       = PCI_VENDOR_ID_PHILIPS,
5810                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5811                .subvendor    = 0x153b,
5812                .subdevice    = 0x1160,
5813                .driver_data  = SAA7134_BOARD_CINERGY250PCI,
5814        },{
5815                .vendor       = PCI_VENDOR_ID_PHILIPS,
5816                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,  /* SAA 7131E */
5817                .subvendor    = 0x5168,
5818                .subdevice    = 0x0319,
5819                .driver_data  = SAA7134_BOARD_FLYDVB_TRIO,
5820        },{
5821                .vendor       = PCI_VENDOR_ID_PHILIPS,
5822                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5823                .subvendor    = 0x1461,
5824                .subdevice    = 0x2c05,
5825                .driver_data  = SAA7134_BOARD_AVERMEDIA_777,
5826        },{
5827                .vendor       = PCI_VENDOR_ID_PHILIPS,
5828                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5829                .subvendor    = 0x5168,
5830                .subdevice    = 0x0301,
5831                .driver_data  = SAA7134_BOARD_FLYDVBT_LR301,
5832        },{
5833                .vendor       = PCI_VENDOR_ID_PHILIPS,
5834                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5835                .subvendor    = 0x0331,
5836                .subdevice    = 0x1421,
5837                .driver_data  = SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331,
5838        },{
5839                .vendor       = PCI_VENDOR_ID_PHILIPS,
5840                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5841                .subvendor    = 0x17de,
5842                .subdevice    = 0x7201,
5843                .driver_data  = SAA7134_BOARD_TEVION_DVBT_220RF,
5844        },{
5845                .vendor       = PCI_VENDOR_ID_PHILIPS,
5846                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5847                .subvendor    = 0x17de,
5848                .subdevice    = 0x7250,
5849                .driver_data  = SAA7134_BOARD_KWORLD_DVBT_210,
5850        },{
5851                .vendor       = PCI_VENDOR_ID_PHILIPS,
5852                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
5853                .subvendor    = 0x17de,
5854                .subdevice    = 0x7350,
5855                .driver_data  = SAA7134_BOARD_KWORLD_ATSC110,
5856        },{
5857                .vendor       = PCI_VENDOR_ID_PHILIPS,
5858                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
5859                .subvendor    = 0x17de,
5860                .subdevice    = 0x7352,
5861                .driver_data  = SAA7134_BOARD_KWORLD_ATSC110, /* ATSC 115 */
5862        },{
5863                .vendor       = PCI_VENDOR_ID_PHILIPS,
5864                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5865                .subvendor    = 0x1461,
5866                .subdevice    = 0x7360,
5867                .driver_data  = SAA7134_BOARD_AVERMEDIA_A169_B,
5868        },{
5869                .vendor       = PCI_VENDOR_ID_PHILIPS,
5870                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5871                .subvendor    = 0x1461,
5872                .subdevice    = 0x6360,
5873                .driver_data  = SAA7134_BOARD_AVERMEDIA_A169_B1,
5874        },{
5875                .vendor       = PCI_VENDOR_ID_PHILIPS,
5876                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5877                .subvendor    = 0x16be,
5878                .subdevice    = 0x0005,
5879                .driver_data  = SAA7134_BOARD_MD7134_BRIDGE_2,
5880        },{
5881                .vendor       = PCI_VENDOR_ID_PHILIPS,
5882                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5883                .subvendor    = 0x5168,
5884                .subdevice    = 0x0300,
5885                .driver_data  = SAA7134_BOARD_FLYDVBS_LR300,
5886        },{
5887                .vendor       = PCI_VENDOR_ID_PHILIPS,
5888                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5889                .subvendor    = 0x4e42,
5890                .subdevice    = 0x0300,/* LR300 */
5891                .driver_data  = SAA7134_BOARD_FLYDVBS_LR300,
5892        },{
5893                .vendor = PCI_VENDOR_ID_PHILIPS,
5894                .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
5895                .subvendor = 0x1489,
5896                .subdevice = 0x0301,
5897                .driver_data = SAA7134_BOARD_FLYDVBT_LR301,
5898        },{
5899                .vendor = PCI_VENDOR_ID_PHILIPS,
5900                .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
5901                .subvendor = 0x5168, /* Animation Technologies (LifeView) */
5902                .subdevice = 0x0304,
5903                .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
5904        },{
5905                .vendor       = PCI_VENDOR_ID_PHILIPS,
5906                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5907                .subvendor    = 0x5168,
5908                .subdevice    = 0x3306,
5909                .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
5910        },{
5911                .vendor       = PCI_VENDOR_ID_PHILIPS,
5912                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5913                .subvendor    = 0x5168,
5914                .subdevice    = 0x3502,  /* whats the difference to 0x3306 ?*/
5915                .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
5916        },{
5917                .vendor       = PCI_VENDOR_ID_PHILIPS,
5918                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5919                .subvendor    = 0x5168,
5920                .subdevice    = 0x3307, /* FlyDVB-T Hybrid Mini PCI */
5921                .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
5922        }, {
5923                .vendor       = PCI_VENDOR_ID_PHILIPS,
5924                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5925                .subvendor    = 0x16be,
5926                .subdevice    = 0x0007,
5927                .driver_data  = SAA7134_BOARD_MEDION_MD8800_QUADRO,
5928        },{
5929                .vendor       = PCI_VENDOR_ID_PHILIPS,
5930                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5931                .subvendor    = 0x16be,
5932                .subdevice    = 0x0008,
5933                .driver_data  = SAA7134_BOARD_MEDION_MD8800_QUADRO,
5934        },{
5935                .vendor       = PCI_VENDOR_ID_PHILIPS,
5936                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5937                .subvendor    = 0x16be,
5938                .subdevice    = 0x000d, /* triple CTX948_V1.1.1 */
5939                .driver_data  = SAA7134_BOARD_MEDION_MD8800_QUADRO,
5940        }, {
5941                .vendor       = PCI_VENDOR_ID_PHILIPS,
5942                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5943                .subvendor    = 0x1461,
5944                .subdevice    = 0x2c05,
5945                .driver_data  = SAA7134_BOARD_AVERMEDIA_777,
5946        },{
5947                .vendor       = PCI_VENDOR_ID_PHILIPS,
5948                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5949                .subvendor    = 0x1489,
5950                .subdevice    = 0x0502,                /* Cardbus version */
5951                .driver_data  = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
5952        },{
5953                .vendor       = PCI_VENDOR_ID_PHILIPS,
5954                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5955                .subvendor    = 0x0919, /* Philips Proteus PRO 2309 */
5956                .subdevice    = 0x2003,
5957                .driver_data  = SAA7134_BOARD_PROTEUS_2309,
5958        },{
5959                .vendor       = PCI_VENDOR_ID_PHILIPS,
5960                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5961                .subvendor    = 0x1461,
5962                .subdevice    = 0x2c00,
5963                .driver_data  = SAA7134_BOARD_AVERMEDIA_A16AR,
5964        },{
5965                .vendor       = PCI_VENDOR_ID_PHILIPS,
5966                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5967                .subvendor    = 0x1043,
5968                .subdevice    = 0x4860,
5969                .driver_data  = SAA7134_BOARD_ASUS_EUROPA2_HYBRID,
5970        },{
5971                .vendor       = PCI_VENDOR_ID_PHILIPS,
5972                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5973                .subvendor    = 0x11bd,
5974                .subdevice    = 0x002f,
5975                .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_310i,
5976        },{
5977                .vendor       = PCI_VENDOR_ID_PHILIPS,
5978                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5979                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5980                .subdevice    = 0x9715,
5981                .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_507,
5982        },{
5983                .vendor       = PCI_VENDOR_ID_PHILIPS,
5984                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5985                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
5986                .subdevice    = 0xa11b,
5987                .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_507UA,
5988        }, {
5989                .vendor       = PCI_VENDOR_ID_PHILIPS,
5990                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5991                .subvendor    = 0x1043,
5992                .subdevice    = 0x4876,
5993                .driver_data  = SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA,
5994        },{
5995                .vendor       = PCI_VENDOR_ID_PHILIPS,
5996                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5997                .subvendor    = 0x0070,
5998                .subdevice    = 0x6700,
5999                .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6000        },{
6001                .vendor       = PCI_VENDOR_ID_PHILIPS,
6002                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6003                .subvendor    = 0x0070,
6004                .subdevice    = 0x6701,
6005                .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6006        },{
6007                .vendor       = PCI_VENDOR_ID_PHILIPS,
6008                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6009                .subvendor    = 0x0070,
6010                .subdevice    = 0x6702,
6011                .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6012        },{
6013                .vendor       = PCI_VENDOR_ID_PHILIPS,
6014                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6015                .subvendor    = 0x0070,
6016                .subdevice    = 0x6703,
6017                .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6018        },{
6019                .vendor       = PCI_VENDOR_ID_PHILIPS,
6020                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6021                .subvendor    = 0x0070,
6022                .subdevice    = 0x6704,
6023                .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6024        },{
6025                .vendor       = PCI_VENDOR_ID_PHILIPS,
6026                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6027                .subvendor    = 0x0070,
6028                .subdevice    = 0x6705,
6029                .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6030        },{
6031                .vendor       = PCI_VENDOR_ID_PHILIPS,
6032                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6033                .subvendor    = 0x0070,
6034                .subdevice    = 0x6706,
6035                .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1150,
6036        },{
6037                .vendor       = PCI_VENDOR_ID_PHILIPS,
6038                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6039                .subvendor    = 0x0070,
6040                .subdevice    = 0x6707,
6041                .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1120,
6042        },{
6043                .vendor       = PCI_VENDOR_ID_PHILIPS,
6044                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6045                .subvendor    = 0x0070,
6046                .subdevice    = 0x6708,
6047                .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1150,
6048        },{
6049                .vendor       = PCI_VENDOR_ID_PHILIPS,
6050                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6051                .subvendor    = 0x0070,
6052                .subdevice    = 0x6709,
6053                .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1120,
6054        },{
6055                .vendor       = PCI_VENDOR_ID_PHILIPS,
6056                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6057                .subvendor    = 0x0070,
6058                .subdevice    = 0x670a,
6059                .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1120,
6060        },{
6061                .vendor       = PCI_VENDOR_ID_PHILIPS,
6062                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6063                .subvendor    = 0x153b,
6064                .subdevice    = 0x1172,
6065                .driver_data  = SAA7134_BOARD_CINERGY_HT_PCMCIA,
6066        },{
6067                .vendor       = PCI_VENDOR_ID_PHILIPS,
6068                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6069                .subvendor    = PCI_VENDOR_ID_PHILIPS,
6070                .subdevice    = 0x2342,
6071                .driver_data  = SAA7134_BOARD_ENCORE_ENLTV,
6072        },{
6073                .vendor       = PCI_VENDOR_ID_PHILIPS,
6074                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6075                .subvendor    = 0x1131,
6076                .subdevice    = 0x2341,
6077                .driver_data  = SAA7134_BOARD_ENCORE_ENLTV,
6078        },{
6079                .vendor       = PCI_VENDOR_ID_PHILIPS,
6080                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6081                .subvendor    = 0x3016,
6082                .subdevice    = 0x2344,
6083                .driver_data  = SAA7134_BOARD_ENCORE_ENLTV,
6084        },{
6085                .vendor       = PCI_VENDOR_ID_PHILIPS,
6086                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6087                .subvendor    = 0x1131,
6088                .subdevice    = 0x230f,
6089                .driver_data  = SAA7134_BOARD_ENCORE_ENLTV_FM,
6090        },{
6091                .vendor       = PCI_VENDOR_ID_PHILIPS,
6092                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6093                .subvendor    = 0x1a7f,
6094                .subdevice    = 0x2008,
6095                .driver_data  = SAA7134_BOARD_ENCORE_ENLTV_FM53,
6096        }, {
6097                .vendor       = PCI_VENDOR_ID_PHILIPS,
6098                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6099                .subvendor    = 0x153b,
6100                .subdevice    = 0x1175,
6101                .driver_data  = SAA7134_BOARD_CINERGY_HT_PCI,
6102        },{
6103                .vendor       = PCI_VENDOR_ID_PHILIPS,
6104                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6105                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6106                .subdevice    = 0xf31e,
6107                .driver_data  = SAA7134_BOARD_AVERMEDIA_M102,
6108        },{
6109                .vendor       = PCI_VENDOR_ID_PHILIPS,
6110                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6111                .subvendor    = 0x4E42,         /* MSI */
6112                .subdevice    = 0x0306,         /* TV@nywhere DUO */
6113                .driver_data  = SAA7134_BOARD_FLYDVBTDUO,
6114        },{
6115                .vendor       = PCI_VENDOR_ID_PHILIPS,
6116                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6117                .subvendor    = 0x1043,
6118                .subdevice    = 0x4871,
6119                .driver_data  = SAA7134_BOARD_ASUS_P7131_4871,
6120        },{
6121                .vendor       = PCI_VENDOR_ID_PHILIPS,
6122                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6123                .subvendor    = 0x1043,
6124                .subdevice    = 0x4857,         /* REV:1.00 */
6125                .driver_data  = SAA7134_BOARD_ASUSTeK_TIGER,
6126        },{
6127                .vendor       = PCI_VENDOR_ID_PHILIPS,
6128                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6129                .subvendor    = 0x0919, /* SinoVideo PCI 2309 Proteus (7134) */
6130                .subdevice    = 0x2003, /* OEM cardbus */
6131                .driver_data  = SAA7134_BOARD_SABRENT_TV_PCB05,
6132        },{
6133                .vendor       = PCI_VENDOR_ID_PHILIPS,
6134                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6135                .subvendor    = PCI_VENDOR_ID_PHILIPS,
6136                .subdevice    = 0x2304,
6137                .driver_data  = SAA7134_BOARD_10MOONSTVMASTER3,
6138        },{
6139                .vendor       = PCI_VENDOR_ID_PHILIPS,
6140                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6141                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6142                .subdevice    = 0xf01d, /* AVerTV DVB-T Super 007 */
6143                .driver_data  = SAA7134_BOARD_AVERMEDIA_SUPER_007,
6144        },{
6145                .vendor       = PCI_VENDOR_ID_PHILIPS,
6146                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6147                .subvendor    = 0x0000,
6148                .subdevice    = 0x4016,
6149                .driver_data  = SAA7134_BOARD_BEHOLD_401,
6150        },{
6151                .vendor       = PCI_VENDOR_ID_PHILIPS,
6152                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6153                .subvendor    = 0x0000,
6154                .subdevice    = 0x4036,
6155                .driver_data  = SAA7134_BOARD_BEHOLD_403,
6156        },{
6157                .vendor       = PCI_VENDOR_ID_PHILIPS,
6158                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6159                .subvendor    = 0x0000,
6160                .subdevice    = 0x4037,
6161                .driver_data  = SAA7134_BOARD_BEHOLD_403FM,
6162        },{
6163                .vendor       = PCI_VENDOR_ID_PHILIPS,
6164                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6165                .subvendor    = 0x0000,
6166                .subdevice    = 0x4050,
6167                .driver_data  = SAA7134_BOARD_BEHOLD_405,
6168        },{
6169                .vendor       = PCI_VENDOR_ID_PHILIPS,
6170                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6171                .subvendor    = 0x0000,
6172                .subdevice    = 0x4051,
6173                .driver_data  = SAA7134_BOARD_BEHOLD_405FM,
6174        },{
6175                .vendor       = PCI_VENDOR_ID_PHILIPS,
6176                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6177                .subvendor    = 0x0000,
6178                .subdevice    = 0x4070,
6179                .driver_data  = SAA7134_BOARD_BEHOLD_407,
6180        },{
6181                .vendor       = PCI_VENDOR_ID_PHILIPS,
6182                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6183                .subvendor    = 0x0000,
6184                .subdevice    = 0x4071,
6185                .driver_data  = SAA7134_BOARD_BEHOLD_407FM,
6186        },{
6187                .vendor       = PCI_VENDOR_ID_PHILIPS,
6188                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6189                .subvendor    = 0x0000,
6190                .subdevice    = 0x4090,
6191                .driver_data  = SAA7134_BOARD_BEHOLD_409,
6192        },{
6193                .vendor       = PCI_VENDOR_ID_PHILIPS,
6194                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6195                .subvendor    = 0x0000,
6196                .subdevice    = 0x505B,
6197                .driver_data  = SAA7134_BOARD_BEHOLD_505RDS,
6198        },{
6199                .vendor       = PCI_VENDOR_ID_PHILIPS,
6200                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6201                .subvendor    = 0x5ace,
6202                .subdevice    = 0x5050,
6203                .driver_data  = SAA7134_BOARD_BEHOLD_505FM,
6204        },{
6205                .vendor       = PCI_VENDOR_ID_PHILIPS,
6206                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6207                .subvendor    = 0x0000,
6208                .subdevice    = 0x5071,
6209                .driver_data  = SAA7134_BOARD_BEHOLD_507RDS_MK3,
6210        },{
6211                .vendor       = PCI_VENDOR_ID_PHILIPS,
6212                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6213                .subvendor    = 0x0000,
6214                .subdevice    = 0x507B,
6215                .driver_data  = SAA7134_BOARD_BEHOLD_507RDS_MK5,
6216        },{
6217                .vendor       = PCI_VENDOR_ID_PHILIPS,
6218                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6219                .subvendor    = 0x5ace,
6220                .subdevice    = 0x5070,
6221                .driver_data  = SAA7134_BOARD_BEHOLD_507_9FM,
6222        },{
6223                .vendor       = PCI_VENDOR_ID_PHILIPS,
6224                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6225                .subvendor    = 0x5ace,
6226                .subdevice    = 0x5090,
6227                .driver_data  = SAA7134_BOARD_BEHOLD_507_9FM,
6228        },{
6229                .vendor       = PCI_VENDOR_ID_PHILIPS,
6230                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6231                .subvendor    = 0x0000,
6232                .subdevice    = 0x5201,
6233                .driver_data  = SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM,
6234        },{
6235                .vendor       = PCI_VENDOR_ID_PHILIPS,
6236                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6237                .subvendor    = 0x5ace,
6238                .subdevice    = 0x6070,
6239                .driver_data  = SAA7134_BOARD_BEHOLD_607FM_MK3,
6240        },{
6241                .vendor       = PCI_VENDOR_ID_PHILIPS,
6242                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6243                .subvendor    = 0x5ace,
6244                .subdevice    = 0x6071,
6245                .driver_data  = SAA7134_BOARD_BEHOLD_607FM_MK5,
6246        },{
6247                .vendor       = PCI_VENDOR_ID_PHILIPS,
6248                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6249                .subvendor    = 0x5ace,
6250                .subdevice    = 0x6072,
6251                .driver_data  = SAA7134_BOARD_BEHOLD_607RDS_MK3,
6252        },{
6253                .vendor       = PCI_VENDOR_ID_PHILIPS,
6254                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6255                .subvendor    = 0x5ace,
6256                .subdevice    = 0x6073,
6257                .driver_data  = SAA7134_BOARD_BEHOLD_607RDS_MK5,
6258        },{
6259                .vendor       = PCI_VENDOR_ID_PHILIPS,
6260                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6261                .subvendor    = 0x5ace,
6262                .subdevice    = 0x6090,
6263                .driver_data  = SAA7134_BOARD_BEHOLD_609FM_MK3,
6264        },{
6265                .vendor       = PCI_VENDOR_ID_PHILIPS,
6266                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6267                .subvendor    = 0x5ace,
6268                .subdevice    = 0x6091,
6269                .driver_data  = SAA7134_BOARD_BEHOLD_609FM_MK5,
6270        },{
6271                .vendor       = PCI_VENDOR_ID_PHILIPS,
6272                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6273                .subvendor    = 0x5ace,
6274                .subdevice    = 0x6092,
6275                .driver_data  = SAA7134_BOARD_BEHOLD_609RDS_MK3,
6276        },{
6277                .vendor       = PCI_VENDOR_ID_PHILIPS,
6278                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6279                .subvendor    = 0x5ace,
6280                .subdevice    = 0x6093,
6281                .driver_data  = SAA7134_BOARD_BEHOLD_609RDS_MK5,
6282        },{
6283                .vendor       = PCI_VENDOR_ID_PHILIPS,
6284                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6285                .subvendor    = 0x5ace,
6286                .subdevice    = 0x6190,
6287                .driver_data  = SAA7134_BOARD_BEHOLD_M6,
6288        },{
6289                .vendor       = PCI_VENDOR_ID_PHILIPS,
6290                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6291                .subvendor    = 0x5ace,
6292                .subdevice    = 0x6193,
6293                .driver_data  = SAA7134_BOARD_BEHOLD_M6_EXTRA,
6294        }, {
6295                .vendor       = PCI_VENDOR_ID_PHILIPS,
6296                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6297                .subvendor    = 0x5ace,
6298                .subdevice    = 0x6191,
6299                .driver_data  = SAA7134_BOARD_BEHOLD_M63,
6300        },{
6301                .vendor       = PCI_VENDOR_ID_PHILIPS,
6302                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6303                .subvendor    = 0x4e42,
6304                .subdevice    = 0x3502,
6305                .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
6306        }, {
6307                .vendor       = PCI_VENDOR_ID_PHILIPS,
6308                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6309                .subvendor    = 0x1822, /*Twinhan Technology Co. Ltd*/
6310                .subdevice    = 0x0022,
6311                .driver_data  = SAA7134_BOARD_TWINHAN_DTV_DVB_3056,
6312        }, {
6313                .vendor       = PCI_VENDOR_ID_PHILIPS,
6314                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6315                .subvendor    = 0x16be,
6316                .subdevice    = 0x0010, /* Medion version CTX953_V.1.4.3 */
6317                .driver_data  = SAA7134_BOARD_CREATIX_CTX953,
6318        }, {
6319                .vendor       = PCI_VENDOR_ID_PHILIPS,
6320                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6321                .subvendor    = 0x1462, /* MSI */
6322                .subdevice    = 0x8625, /* TV@nywhere A/D v1.1 */
6323                .driver_data  = SAA7134_BOARD_MSI_TVANYWHERE_AD11,
6324        },{
6325                .vendor       = PCI_VENDOR_ID_PHILIPS,
6326                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6327                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6328                .subdevice    = 0xf436,
6329                .driver_data  = SAA7134_BOARD_AVERMEDIA_CARDBUS_506,
6330        }, {
6331                .vendor       = PCI_VENDOR_ID_PHILIPS,
6332                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6333                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6334                .subdevice    = 0xf936,
6335                .driver_data  = SAA7134_BOARD_AVERMEDIA_A16D,
6336        }, {
6337                .vendor       = PCI_VENDOR_ID_PHILIPS,
6338                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6339                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6340                .subdevice    = 0xa836,
6341                .driver_data  = SAA7134_BOARD_AVERMEDIA_M115,
6342        }, {
6343                .vendor       = PCI_VENDOR_ID_PHILIPS,
6344                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6345                .subvendor    = 0x185b,
6346                .subdevice    = 0xc900,
6347                .driver_data  = SAA7134_BOARD_VIDEOMATE_T750,
6348        }, {
6349                .vendor       = PCI_VENDOR_ID_PHILIPS,
6350                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
6351                .subvendor    = 0x1421,
6352                .subdevice    = 0x0380,
6353                .driver_data  = SAA7134_BOARD_ADS_INSTANT_HDTV_PCI,
6354        }, {
6355                .vendor       = PCI_VENDOR_ID_PHILIPS,
6356                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6357                .subvendor    = 0x5169,
6358                .subdevice    = 0x1502,
6359                .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
6360        }, {
6361                .vendor       = PCI_VENDOR_ID_PHILIPS,
6362                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6363                .subvendor    = 0x5ace,
6364                .subdevice    = 0x6290,
6365                .driver_data  = SAA7134_BOARD_BEHOLD_H6,
6366        }, {
6367                .vendor       = PCI_VENDOR_ID_PHILIPS,
6368                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6369                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6370                .subdevice    = 0xf636,
6371                .driver_data  = SAA7134_BOARD_AVERMEDIA_M103,
6372        }, {
6373                .vendor       = PCI_VENDOR_ID_PHILIPS,
6374                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6375                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6376                .subdevice    = 0xf736,
6377                .driver_data  = SAA7134_BOARD_AVERMEDIA_M103,
6378        }, {
6379                .vendor       = PCI_VENDOR_ID_PHILIPS,
6380                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6381                .subvendor    = 0x1043,
6382                .subdevice    = 0x4878, /* REV:1.02G */
6383                .driver_data  = SAA7134_BOARD_ASUSTeK_TIGER_3IN1,
6384        }, {
6385                .vendor       = PCI_VENDOR_ID_PHILIPS,
6386                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6387                .subvendor    = 0x17de,
6388                .subdevice    = 0x7128,
6389                .driver_data  = SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG,
6390        }, {
6391                .vendor       = PCI_VENDOR_ID_PHILIPS,
6392                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6393                .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6394                .subdevice    = 0xf31d,
6395                .driver_data  = SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS,
6396        }, {
6397                .vendor       = PCI_VENDOR_ID_PHILIPS,
6398                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6399                .subvendor    = 0x185b,
6400                .subdevice    = 0xc900,
6401                .driver_data  = SAA7134_BOARD_VIDEOMATE_S350,
6402        }, {
6403                .vendor       = PCI_VENDOR_ID_PHILIPS,
6404                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6405                .subvendor    = 0x5ace, /* Beholder Intl. Ltd. */
6406                .subdevice    = 0x7595,
6407                .driver_data  = SAA7134_BOARD_BEHOLD_X7,
6408        }, {
6409                .vendor       = PCI_VENDOR_ID_PHILIPS,
6410                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6411                .subvendor    = 0x19d1, /* RoverMedia */
6412                .subdevice    = 0x0138, /* LifeView FlyTV Prime30 OEM */
6413                .driver_data  = SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM,
6414        }, {
6415                .vendor       = PCI_VENDOR_ID_PHILIPS,
6416                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6417                .subvendor    = PCI_VENDOR_ID_PHILIPS,
6418                .subdevice    = 0x2004,
6419                .driver_data  = SAA7134_BOARD_ZOLID_HYBRID_PCI,
6420        }, {
6421                /* --- boards without eeprom + subsystem ID --- */
6422                .vendor       = PCI_VENDOR_ID_PHILIPS,
6423                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6424                .subvendor    = PCI_VENDOR_ID_PHILIPS,
6425                .subdevice    = 0,
6426                .driver_data  = SAA7134_BOARD_NOAUTO,
6427        },{
6428                .vendor       = PCI_VENDOR_ID_PHILIPS,
6429                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6430                .subvendor    = PCI_VENDOR_ID_PHILIPS,
6431                .subdevice    = 0,
6432                .driver_data  = SAA7134_BOARD_NOAUTO,
6433        },{
6434                /* --- default catch --- */
6435                .vendor       = PCI_VENDOR_ID_PHILIPS,
6436                .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6437                .subvendor    = PCI_ANY_ID,
6438                .subdevice    = PCI_ANY_ID,
6439                .driver_data  = SAA7134_BOARD_UNKNOWN,
6440        },{
6441                .vendor       = PCI_VENDOR_ID_PHILIPS,
6442                .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6443                .subvendor    = PCI_ANY_ID,
6444                .subdevice    = PCI_ANY_ID,
6445                .driver_data  = SAA7134_BOARD_UNKNOWN,
6446        },{
6447                .vendor       = PCI_VENDOR_ID_PHILIPS,
6448                .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6449                .subvendor    = PCI_ANY_ID,
6450                .subdevice    = PCI_ANY_ID,
6451                .driver_data  = SAA7134_BOARD_UNKNOWN,
6452        },{
6453                .vendor       = PCI_VENDOR_ID_PHILIPS,
6454                .device       = PCI_DEVICE_ID_PHILIPS_SAA7135,
6455                .subvendor    = PCI_ANY_ID,
6456                .subdevice    = PCI_ANY_ID,
6457                .driver_data  = SAA7134_BOARD_UNKNOWN,
6458        },{
6459                /* --- end of list --- */
6460        }
6461};
6462MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
6463
6464/* ----------------------------------------------------------- */
6465/* flyvideo tweaks                                             */
6466
6467
6468static void board_flyvideo(struct saa7134_dev *dev)
6469{
6470        printk("%s: there are different flyvideo cards with different tuners\n"
6471               "%s: out there, you might have to use the tuner=<nr> insmod\n"
6472               "%s: option to override the default value.\n",
6473               dev->name, dev->name, dev->name);
6474}
6475
6476static int saa7134_xc2028_callback(struct saa7134_dev *dev,
6477                                   int command, int arg)
6478{
6479        switch (command) {
6480        case XC2028_TUNER_RESET:
6481                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00000000);
6482                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00008000);
6483                switch (dev->board) {
6484                case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
6485                case SAA7134_BOARD_AVERMEDIA_M103:
6486                        saa7134_set_gpio(dev, 23, 0);
6487                        msleep(10);
6488                        saa7134_set_gpio(dev, 23, 1);
6489                break;
6490                case SAA7134_BOARD_AVERMEDIA_A16D:
6491                        saa7134_set_gpio(dev, 21, 0);
6492                        msleep(10);
6493                        saa7134_set_gpio(dev, 21, 1);
6494                break;
6495                case SAA7134_BOARD_AVERMEDIA_A700_HYBRID:
6496                        saa7134_set_gpio(dev, 18, 0);
6497                        msleep(10);
6498                        saa7134_set_gpio(dev, 18, 1);
6499                break;
6500                }
6501        return 0;
6502        }
6503        return -EINVAL;
6504}
6505
6506static int saa7134_xc5000_callback(struct saa7134_dev *dev,
6507                                   int command, int arg)
6508{
6509        switch (dev->board) {
6510        case SAA7134_BOARD_BEHOLD_X7:
6511                if (command == XC5000_TUNER_RESET) {
6512                /* Down and UP pheripherial RESET pin for reset all chips */
6513                        saa_writeb(SAA7134_SPECIAL_MODE, 0x00);
6514                        msleep(10);
6515                        saa_writeb(SAA7134_SPECIAL_MODE, 0x01);
6516                        msleep(10);
6517                }
6518                break;
6519        default:
6520                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x06e20000, 0x06e20000);
6521                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x06a20000, 0x06a20000);
6522                saa_andorl(SAA7133_ANALOG_IO_SELECT >> 2, 0x02, 0x02);
6523                saa_andorl(SAA7134_ANALOG_IN_CTRL1 >> 2, 0x81, 0x81);
6524                saa_andorl(SAA7134_AUDIO_CLOCK0 >> 2, 0x03187de7, 0x03187de7);
6525                saa_andorl(SAA7134_AUDIO_PLL_CTRL >> 2, 0x03, 0x03);
6526                saa_andorl(SAA7134_AUDIO_CLOCKS_PER_FIELD0 >> 2,
6527                           0x0001e000, 0x0001e000);
6528                break;
6529        }
6530        return 0;
6531}
6532
6533static int saa7134_tda8290_827x_callback(struct saa7134_dev *dev,
6534                                         int command, int arg)
6535{
6536        u8 sync_control;
6537
6538        switch (command) {
6539        case 0: /* switch LNA gain through GPIO 22*/
6540                saa7134_set_gpio(dev, 22, arg) ;
6541                break;
6542        case 1: /* vsync output at GPIO22. 50 / 60Hz */
6543                saa_andorb(SAA7134_VIDEO_PORT_CTRL3, 0x80, 0x80);
6544                saa_andorb(SAA7134_VIDEO_PORT_CTRL6, 0x0f, 0x03);
6545                if (arg == 1)
6546                        sync_control = 11;
6547                else
6548                        sync_control = 17;
6549                saa_writeb(SAA7134_VGATE_START, sync_control);
6550                saa_writeb(SAA7134_VGATE_STOP, sync_control + 1);
6551                saa_andorb(SAA7134_MISC_VGATE_MSB, 0x03, 0x00);
6552                break;
6553        default:
6554                return -EINVAL;
6555        }
6556
6557        return 0;
6558}
6559
6560static inline int saa7134_tda18271_hvr11x0_toggle_agc(struct saa7134_dev *dev,
6561                                                      enum tda18271_mode mode)
6562{
6563        /* toggle AGC switch through GPIO 26 */
6564        switch (mode) {
6565        case TDA18271_ANALOG:
6566                saa7134_set_gpio(dev, 26, 0);
6567                break;
6568        case TDA18271_DIGITAL:
6569                saa7134_set_gpio(dev, 26, 1);
6570                break;
6571        default:
6572                return -EINVAL;
6573        }
6574        return 0;
6575}
6576
6577static int saa7134_tda8290_18271_callback(struct saa7134_dev *dev,
6578                                          int command, int arg)
6579{
6580        int ret = 0;
6581
6582        switch (command) {
6583        case TDA18271_CALLBACK_CMD_AGC_ENABLE: /* 0 */
6584                switch (dev->board) {
6585                case SAA7134_BOARD_HAUPPAUGE_HVR1150:
6586                case SAA7134_BOARD_HAUPPAUGE_HVR1120:
6587                        ret = saa7134_tda18271_hvr11x0_toggle_agc(dev, arg);
6588                        break;
6589                default:
6590                        break;
6591                }
6592                break;
6593        default:
6594                ret = -EINVAL;
6595                break;
6596        }
6597        return ret;
6598}
6599
6600static int saa7134_tda8290_callback(struct saa7134_dev *dev,
6601                                    int command, int arg)
6602{
6603        int ret;
6604
6605        switch (dev->board) {
6606        case SAA7134_BOARD_HAUPPAUGE_HVR1150:
6607        case SAA7134_BOARD_HAUPPAUGE_HVR1120:
6608                /* tda8290 + tda18271 */
6609                ret = saa7134_tda8290_18271_callback(dev, command, arg);
6610                break;
6611        default:
6612                /* tda8290 + tda827x */
6613                ret = saa7134_tda8290_827x_callback(dev, command, arg);
6614                break;
6615        }
6616        return ret;
6617}
6618
6619int saa7134_tuner_callback(void *priv, int component, int command, int arg)
6620{
6621        struct saa7134_dev *dev = priv;
6622        if (dev != NULL) {
6623                switch (dev->tuner_type) {
6624                case TUNER_PHILIPS_TDA8290:
6625                        return saa7134_tda8290_callback(dev, command, arg);
6626                case TUNER_XC2028:
6627                        return saa7134_xc2028_callback(dev, command, arg);
6628                case TUNER_XC5000:
6629                        return saa7134_xc5000_callback(dev, command, arg);
6630                }
6631        } else {
6632                printk(KERN_ERR "saa7134: Error - device struct undefined.\n");
6633                return -EINVAL;
6634        }
6635        return -EINVAL;
6636}
6637EXPORT_SYMBOL(saa7134_tuner_callback);
6638
6639/* ----------------------------------------------------------- */
6640
6641static void hauppauge_eeprom(struct saa7134_dev *dev, u8 *eeprom_data)
6642{
6643        struct tveeprom tv;
6644
6645        tveeprom_hauppauge_analog(&dev->i2c_client, &tv, eeprom_data);
6646
6647        /* Make sure we support the board model */
6648        switch (tv.model) {
6649        case 67019: /* WinTV-HVR1110 (Retail, IR Blaster, hybrid, FM, SVid/Comp, 3.5mm audio in) */
6650        case 67109: /* WinTV-HVR1000 (Retail, IR Receive, analog, no FM, SVid/Comp, 3.5mm audio in) */
6651        case 67201: /* WinTV-HVR1150 (Retail, IR Receive, hybrid, FM, SVid/Comp, 3.5mm audio in) */
6652        case 67301: /* WinTV-HVR1000 (Retail, IR Receive, analog, no FM, SVid/Comp, 3.5mm audio in) */
6653        case 67209: /* WinTV-HVR1110 (Retail, IR Receive, hybrid, FM, SVid/Comp, 3.5mm audio in) */
6654        case 67559: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
6655        case 67569: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM) */
6656        case 67579: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM) */
6657        case 67589: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM, SVid/Comp, RCA aud) */
6658        case 67599: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM, SVid/Comp, RCA aud) */
6659        case 67651: /* WinTV-HVR1150 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
6660        case 67659: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
6661                break;
6662        default:
6663                printk(KERN_WARNING "%s: warning: "
6664                       "unknown hauppauge model #%d\n", dev->name, tv.model);
6665                break;
6666        }
6667
6668        printk(KERN_INFO "%s: hauppauge eeprom: model=%d\n",
6669               dev->name, tv.model);
6670}
6671
6672/* ----------------------------------------------------------- */
6673
6674int saa7134_board_init1(struct saa7134_dev *dev)
6675{
6676        /* Always print gpio, often manufacturers encode tuner type and other info. */
6677        saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
6678        dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
6679        printk(KERN_INFO "%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
6680
6681        switch (dev->board) {
6682        case SAA7134_BOARD_FLYVIDEO2000:
6683        case SAA7134_BOARD_FLYVIDEO3000:
6684        case SAA7134_BOARD_FLYVIDEO3000_NTSC:
6685                dev->has_remote = SAA7134_REMOTE_GPIO;
6686                board_flyvideo(dev);
6687                break;
6688        case SAA7134_BOARD_FLYTVPLATINUM_MINI2:
6689        case SAA7134_BOARD_FLYTVPLATINUM_FM:
6690        case SAA7134_BOARD_CINERGY400:
6691        case SAA7134_BOARD_CINERGY600:
6692        case SAA7134_BOARD_CINERGY600_MK3:
6693        case SAA7134_BOARD_ECS_TVP3XP:
6694        case SAA7134_BOARD_ECS_TVP3XP_4CB5:
6695        case SAA7134_BOARD_ECS_TVP3XP_4CB6:
6696        case SAA7134_BOARD_MD2819:
6697        case SAA7134_BOARD_KWORLD_VSTREAM_XPERT:
6698        case SAA7134_BOARD_KWORLD_XPERT:
6699        case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
6700        case SAA7134_BOARD_AVERMEDIA_STUDIO_505:
6701        case SAA7134_BOARD_AVERMEDIA_305:
6702        case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
6703        case SAA7134_BOARD_AVERMEDIA_307:
6704        case SAA7134_BOARD_AVERMEDIA_STUDIO_507:
6705        case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
6706        case SAA7134_BOARD_AVERMEDIA_777:
6707        case SAA7134_BOARD_AVERMEDIA_M135A:
6708/*      case SAA7134_BOARD_SABRENT_SBTTVFM:  */ /* not finished yet */
6709        case SAA7134_BOARD_VIDEOMATE_TV_PVR:
6710        case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS:
6711        case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII:
6712        case SAA7134_BOARD_VIDEOMATE_DVBT_300:
6713        case SAA7134_BOARD_VIDEOMATE_DVBT_200:
6714        case SAA7134_BOARD_VIDEOMATE_DVBT_200A:
6715        case SAA7134_BOARD_MANLI_MTV001:
6716        case SAA7134_BOARD_MANLI_MTV002:
6717        case SAA7134_BOARD_BEHOLD_409FM:
6718        case SAA7134_BOARD_AVACSSMARTTV:
6719        case SAA7134_BOARD_GOTVIEW_7135:
6720        case SAA7134_BOARD_KWORLD_TERMINATOR:
6721        case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS:
6722        case SAA7134_BOARD_FLYDVBT_LR301:
6723        case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
6724        case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
6725        case SAA7134_BOARD_ASUSTeK_P7131_ANALOG:
6726        case SAA7134_BOARD_FLYDVBTDUO:
6727        case SAA7134_BOARD_PROTEUS_2309:
6728        case SAA7134_BOARD_AVERMEDIA_A16AR:
6729        case SAA7134_BOARD_ENCORE_ENLTV:
6730        case SAA7134_BOARD_ENCORE_ENLTV_FM:
6731        case SAA7134_BOARD_ENCORE_ENLTV_FM53:
6732        case SAA7134_BOARD_10MOONSTVMASTER3:
6733        case SAA7134_BOARD_BEHOLD_401:
6734        case SAA7134_BOARD_BEHOLD_403:
6735        case SAA7134_BOARD_BEHOLD_403FM:
6736        case SAA7134_BOARD_BEHOLD_405:
6737        case SAA7134_BOARD_BEHOLD_405FM:
6738        case SAA7134_BOARD_BEHOLD_407:
6739        case SAA7134_BOARD_BEHOLD_407FM:
6740        case SAA7134_BOARD_BEHOLD_409:
6741        case SAA7134_BOARD_BEHOLD_505FM:
6742        case SAA7134_BOARD_BEHOLD_505RDS:
6743        case SAA7134_BOARD_BEHOLD_507_9FM:
6744        case SAA7134_BOARD_BEHOLD_507RDS_MK3:
6745        case SAA7134_BOARD_BEHOLD_507RDS_MK5:
6746        case SAA7134_BOARD_GENIUS_TVGO_A11MCE:
6747        case SAA7134_BOARD_REAL_ANGEL_220:
6748        case SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG:
6749        case SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS:
6750        case SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM:
6751                dev->has_remote = SAA7134_REMOTE_GPIO;
6752                break;
6753        case SAA7134_BOARD_FLYDVBS_LR300:
6754                saa_writeb(SAA7134_GPIO_GPMODE3, 0x80);
6755                saa_writeb(SAA7134_GPIO_GPSTATUS2, 0x40);
6756                dev->has_remote = SAA7134_REMOTE_GPIO;
6757                break;
6758        case SAA7134_BOARD_MD5044:
6759                printk("%s: seems there are two different versions of the MD5044\n"
6760                       "%s: (with the same ID) out there.  If sound doesn't work for\n"
6761                       "%s: you try the audio_clock_override=0x200000 insmod option.\n",
6762                       dev->name,dev->name,dev->name);
6763                break;
6764        case SAA7134_BOARD_CINERGY400_CARDBUS:
6765                /* power-up tuner chip */
6766                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00040000, 0x00040000);
6767                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000);
6768                break;
6769        case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL:
6770                /* this turns the remote control chip off to work around a bug in it */
6771                saa_writeb(SAA7134_GPIO_GPMODE1, 0x80);
6772                saa_writeb(SAA7134_GPIO_GPSTATUS1, 0x80);
6773                break;
6774        case SAA7134_BOARD_MONSTERTV_MOBILE:
6775                /* power-up tuner chip */
6776                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00040000, 0x00040000);
6777                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000004);
6778                break;
6779        case SAA7134_BOARD_FLYDVBT_DUO_CARDBUS:
6780                /* turn the fan on */
6781                saa_writeb(SAA7134_GPIO_GPMODE3, 0x08);
6782                saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x06);
6783                break;
6784        case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
6785        case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
6786                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x08000000, 0x08000000);
6787                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08000000, 0x00000000);
6788                break;
6789        case SAA7134_BOARD_AVERMEDIA_CARDBUS:
6790        case SAA7134_BOARD_AVERMEDIA_M115:
6791                /* power-down tuner chip */
6792                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0);
6793                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0);
6794                msleep(10);
6795                /* power-up tuner chip */
6796                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0xffffffff);
6797                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
6798                msleep(10);
6799                break;
6800        case SAA7134_BOARD_AVERMEDIA_CARDBUS_501:
6801                /* power-down tuner chip */
6802                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x08400000, 0x08400000);
6803                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08400000, 0);
6804                msleep(10);
6805                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x08400000, 0x08400000);
6806                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08400000, 0x08400000);
6807                msleep(10);
6808                dev->has_remote = SAA7134_REMOTE_I2C;
6809                break;
6810        case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
6811                saa7134_set_gpio(dev, 23, 0);
6812                msleep(10);
6813                saa7134_set_gpio(dev, 23, 1);
6814                dev->has_remote = SAA7134_REMOTE_I2C;
6815                break;
6816        case SAA7134_BOARD_AVERMEDIA_M103:
6817                saa7134_set_gpio(dev, 23, 0);
6818                msleep(10);
6819                saa7134_set_gpio(dev, 23, 1);
6820                break;
6821        case SAA7134_BOARD_AVERMEDIA_A16D:
6822                saa7134_set_gpio(dev, 21, 0);
6823                msleep(10);
6824                saa7134_set_gpio(dev, 21, 1);
6825                msleep(1);
6826                dev->has_remote = SAA7134_REMOTE_GPIO;
6827                break;
6828        case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM:
6829                /* power-down tuner chip */
6830                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x000A8004, 0x000A8004);
6831                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x000A8004, 0);
6832                msleep(10);
6833                /* power-up tuner chip */
6834                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x000A8004, 0x000A8004);
6835                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x000A8004, 0x000A8004);
6836                msleep(10);
6837                /* remote via GPIO */
6838                dev->has_remote = SAA7134_REMOTE_GPIO;
6839                break;
6840        case SAA7134_BOARD_RTD_VFG7350:
6841
6842                /*
6843                 * Make sure Production Test Register at offset 0x1D1 is cleared
6844                 * to take chip out of test mode.  Clearing bit 4 (TST_EN_AOUT)
6845                 * prevents pin 105 from remaining low; keeping pin 105 low
6846                 * continually resets the SAA6752 chip.
6847                 */
6848
6849                saa_writeb (SAA7134_PRODUCTION_TEST_MODE, 0x00);
6850                break;
6851        case SAA7134_BOARD_HAUPPAUGE_HVR1150:
6852        case SAA7134_BOARD_HAUPPAUGE_HVR1120:
6853                /* GPIO 26 high for digital, low for analog */
6854                saa7134_set_gpio(dev, 26, 0);
6855                msleep(1);
6856
6857                saa7134_set_gpio(dev, 22, 0);
6858                msleep(10);
6859                saa7134_set_gpio(dev, 22, 1);
6860                break;
6861        /* i2c remotes */
6862        case SAA7134_BOARD_PINNACLE_PCTV_110i:
6863        case SAA7134_BOARD_PINNACLE_PCTV_310i:
6864        case SAA7134_BOARD_UPMOST_PURPLE_TV:
6865        case SAA7134_BOARD_MSI_TVATANYWHERE_PLUS:
6866        case SAA7134_BOARD_HAUPPAUGE_HVR1110:
6867        case SAA7134_BOARD_BEHOLD_607FM_MK3:
6868        case SAA7134_BOARD_BEHOLD_607FM_MK5:
6869        case SAA7134_BOARD_BEHOLD_609FM_MK3:
6870        case SAA7134_BOARD_BEHOLD_609FM_MK5:
6871        case SAA7134_BOARD_BEHOLD_607RDS_MK3:
6872        case SAA7134_BOARD_BEHOLD_607RDS_MK5:
6873        case SAA7134_BOARD_BEHOLD_609RDS_MK3:
6874        case SAA7134_BOARD_BEHOLD_609RDS_MK5:
6875        case SAA7134_BOARD_BEHOLD_M6:
6876        case SAA7134_BOARD_BEHOLD_M63:
6877        case SAA7134_BOARD_BEHOLD_M6_EXTRA:
6878        case SAA7134_BOARD_BEHOLD_H6:
6879        case SAA7134_BOARD_BEHOLD_X7:
6880                dev->has_remote = SAA7134_REMOTE_I2C;
6881                break;
6882        case SAA7134_BOARD_AVERMEDIA_A169_B:
6883                printk("%s: %s: dual saa713x broadcast decoders\n"
6884                       "%s: Sorry, none of the inputs to this chip are supported yet.\n"
6885                       "%s: Dual decoder functionality is disabled for now, use the other chip.\n",
6886                       dev->name,card(dev).name,dev->name,dev->name);
6887                break;
6888        case SAA7134_BOARD_AVERMEDIA_M102:
6889                /* enable tuner */
6890               dev->has_remote = SAA7134_REMOTE_GPIO;
6891                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x8c040007, 0x8c040007);
6892                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0c0007cd, 0x0c0007cd);
6893                break;
6894        case SAA7134_BOARD_AVERMEDIA_A700_HYBRID:
6895        case SAA7134_BOARD_AVERMEDIA_A700_PRO:
6896                /* write windows gpio values */
6897                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x80040100, 0x80040100);
6898                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x80040100, 0x00040100);
6899                break;
6900        case SAA7134_BOARD_VIDEOMATE_S350:
6901                dev->has_remote = SAA7134_REMOTE_GPIO;
6902                saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00008000, 0x00008000);
6903                saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00008000);
6904                break;
6905        }
6906        return 0;
6907}
6908
6909static void saa7134_tuner_setup(struct saa7134_dev *dev)
6910{
6911        struct tuner_setup tun_setup;
6912        unsigned int mode_mask = T_RADIO     |
6913                                 T_ANALOG_TV |
6914                                 T_DIGITAL_TV;
6915
6916        memset(&tun_setup, 0, sizeof(tun_setup));
6917        tun_setup.tuner_callback = saa7134_tuner_callback;
6918
6919        if (saa7134_boards[dev->board].radio_type != UNSET) {
6920                tun_setup.type = saa7134_boards[dev->board].radio_type;
6921                tun_setup.addr = saa7134_boards[dev->board].radio_addr;
6922
6923                tun_setup.mode_mask = T_RADIO;
6924
6925                saa_call_all(dev, tuner, s_type_addr, &tun_setup);
6926                mode_mask &= ~T_RADIO;
6927        }
6928
6929        if ((dev->tuner_type != TUNER_ABSENT) && (dev->tuner_type != UNSET)) {
6930                tun_setup.type = dev->tuner_type;
6931                tun_setup.addr = dev->tuner_addr;
6932                tun_setup.config = saa7134_boards[dev->board].tuner_config;
6933                tun_setup.tuner_callback = saa7134_tuner_callback;
6934
6935                tun_setup.mode_mask = mode_mask;
6936
6937                saa_call_all(dev, tuner, s_type_addr, &tun_setup);
6938        }
6939
6940        if (dev->tda9887_conf) {
6941                struct v4l2_priv_tun_config tda9887_cfg;
6942
6943                tda9887_cfg.tuner = TUNER_TDA9887;
6944                tda9887_cfg.priv = &dev->tda9887_conf;
6945
6946                saa_call_all(dev, tuner, s_config, &tda9887_cfg);
6947        }
6948
6949        if (dev->tuner_type == TUNER_XC2028) {
6950                struct v4l2_priv_tun_config  xc2028_cfg;
6951                struct xc2028_ctrl           ctl;
6952
6953                memset(&xc2028_cfg, 0, sizeof(xc2028_cfg));
6954                memset(&ctl, 0, sizeof(ctl));
6955
6956                ctl.fname   = XC2028_DEFAULT_FIRMWARE;
6957                ctl.max_len = 64;
6958
6959                switch (dev->board) {
6960                case SAA7134_BOARD_AVERMEDIA_A16D:
6961                case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
6962                case SAA7134_BOARD_AVERMEDIA_M103:
6963                case SAA7134_BOARD_AVERMEDIA_A700_HYBRID:
6964                        ctl.demod = XC3028_FE_ZARLINK456;
6965                        break;
6966                default:
6967                        ctl.demod = XC3028_FE_OREN538;
6968                        ctl.mts = 1;
6969                }
6970
6971                xc2028_cfg.tuner = TUNER_XC2028;
6972                xc2028_cfg.priv  = &ctl;
6973
6974                saa_call_all(dev, tuner, s_config, &xc2028_cfg);
6975        }
6976}
6977
6978/* stuff which needs working i2c */
6979int saa7134_board_init2(struct saa7134_dev *dev)
6980{
6981        unsigned char buf;
6982        int board;
6983
6984        /* Put here the code that enables the chips that are needed
6985           for analog mode and doesn't depend on the tuner attachment.
6986           It is also a good idea to get tuner type from eeprom, etc before
6987           initializing tuner, since we can avoid loading tuner driver
6988           on devices that has TUNER_ABSENT
6989         */
6990        switch (dev->board) {
6991        case SAA7134_BOARD_BMK_MPEX_NOTUNER:
6992        case SAA7134_BOARD_BMK_MPEX_TUNER:
6993                /* Checks if the device has a tuner at 0x60 addr
6994                   If the device doesn't have a tuner, TUNER_ABSENT
6995                   will be used at tuner_type, avoiding loading tuner
6996                   without needing it
6997                 */
6998                dev->i2c_client.addr = 0x60;
6999                board = (i2c_master_recv(&dev->i2c_client, &buf, 0) < 0)
7000                        ? SAA7134_BOARD_BMK_MPEX_NOTUNER
7001                        : SAA7134_BOARD_BMK_MPEX_TUNER;
7002                if (board == dev->board)
7003                        break;
7004                dev->board = board;
7005                printk("%s: board type fixup: %s\n", dev->name,
7006                saa7134_boards[dev->board].name);
7007                dev->tuner_type = saa7134_boards[dev->board].tuner_type;
7008
7009                break;
7010        case SAA7134_BOARD_MD7134:
7011        {
7012                u8 subaddr;
7013                u8 data[3];
7014                int ret, tuner_t;
7015                struct i2c_msg msg[] = {{.addr=0x50, .flags=0, .buf=&subaddr, .len = 1},
7016                                        {.addr=0x50, .flags=I2C_M_RD, .buf=data, .len = 3}};
7017
7018                subaddr= 0x14;
7019                tuner_t = 0;
7020
7021                /* Retrieve device data from eeprom, checking for the
7022                   proper tuner_type.
7023                 */
7024                ret = i2c_transfer(&dev->i2c_adap, msg, 2);
7025                if (ret != 2) {
7026                        printk(KERN_ERR "EEPROM read failure\n");
7027                } else if ((data[0] != 0) && (data[0] != 0xff)) {
7028                        /* old config structure */
7029                        subaddr = data[0] + 2;
7030                        msg[1].len = 2;
7031                        i2c_transfer(&dev->i2c_adap, msg, 2);
7032                        tuner_t = (data[0] << 8) + data[1];
7033                        switch (tuner_t){
7034                        case 0x0103:
7035                                dev->tuner_type = TUNER_PHILIPS_PAL;
7036                                break;
7037                        case 0x010C:
7038                                dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
7039                                break;
7040                        default:
7041                                printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t);
7042                        }
7043                } else if ((data[1] != 0) && (data[1] != 0xff)) {
7044                        /* new config structure */
7045                        subaddr = data[1] + 1;
7046                        msg[1].len = 1;
7047                        i2c_transfer(&dev->i2c_adap, msg, 2);
7048                        subaddr = data[0] + 1;
7049                        msg[1].len = 2;
7050                        i2c_transfer(&dev->i2c_adap, msg, 2);
7051                        tuner_t = (data[1] << 8) + data[0];
7052                        switch (tuner_t) {
7053                        case 0x0005:
7054                                dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
7055                                break;
7056                        case 0x001d:
7057                                dev->tuner_type = TUNER_PHILIPS_FMD1216ME_MK3;
7058                                        printk(KERN_INFO "%s Board has DVB-T\n", dev->name);
7059                                break;
7060                        default:
7061                                printk(KERN_ERR "%s Cant determine tuner type %x from EEPROM\n", dev->name, tuner_t);
7062                        }
7063                } else {
7064                        printk(KERN_ERR "%s unexpected config structure\n", dev->name);
7065                }
7066
7067                printk(KERN_INFO "%s Tuner type is %d\n", dev->name, dev->tuner_type);
7068                break;
7069        }
7070        case SAA7134_BOARD_PHILIPS_EUROPA:
7071                if (dev->autodetected && (dev->eedata[0x41] == 0x1c)) {
7072                        /* Reconfigure board as Snake reference design */
7073                        dev->board = SAA7134_BOARD_PHILIPS_SNAKE;
7074                        dev->tuner_type = saa7134_boards[dev->board].tuner_type;
7075                        printk(KERN_INFO "%s: Reconfigured board as %s\n",
7076                                dev->name, saa7134_boards[dev->board].name);
7077                        break;
7078                }
7079                /* break intentionally omitted */
7080        case SAA7134_BOARD_VIDEOMATE_DVBT_300:
7081        case SAA7134_BOARD_ASUS_EUROPA2_HYBRID:
7082        {
7083
7084                /* The Philips EUROPA based hybrid boards have the tuner
7085                   connected through the channel decoder. We have to make it
7086                   transparent to find it
7087                 */
7088                u8 data[] = { 0x07, 0x02};
7089                struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7090                i2c_transfer(&dev->i2c_adap, &msg, 1);
7091
7092                break;
7093        }
7094        case SAA7134_BOARD_PHILIPS_TIGER:
7095        case SAA7134_BOARD_PHILIPS_TIGER_S:
7096        {
7097                u8 data[] = { 0x3c, 0x33, 0x60};
7098                struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7099                if (dev->autodetected && (dev->eedata[0x49] == 0x50)) {
7100                        dev->board = SAA7134_BOARD_PHILIPS_TIGER_S;
7101                        printk(KERN_INFO "%s: Reconfigured board as %s\n",
7102                                dev->name, saa7134_boards[dev->board].name);
7103                }
7104                if (dev->board == SAA7134_BOARD_PHILIPS_TIGER_S) {
7105                        dev->tuner_type = TUNER_PHILIPS_TDA8290;
7106
7107                        data[2] = 0x68;
7108                        i2c_transfer(&dev->i2c_adap, &msg, 1);
7109                        break;
7110                }
7111                i2c_transfer(&dev->i2c_adap, &msg, 1);
7112                break;
7113        }
7114        case SAA7134_BOARD_ASUSTeK_TVFM7135:
7115        /* The card below is detected as card=53, but is different */
7116               if (dev->autodetected && (dev->eedata[0x27] == 0x03)) {
7117                       dev->board = SAA7134_BOARD_ASUSTeK_P7131_ANALOG;
7118                       printk(KERN_INFO "%s: P7131 analog only, using "
7119                                                       "entry of %s\n",
7120                       dev->name, saa7134_boards[dev->board].name);
7121               }
7122               break;
7123        case SAA7134_BOARD_HAUPPAUGE_HVR1150:
7124        case SAA7134_BOARD_HAUPPAUGE_HVR1120:
7125                hauppauge_eeprom(dev, dev->eedata+0x80);
7126                break;
7127        case SAA7134_BOARD_HAUPPAUGE_HVR1110:
7128                hauppauge_eeprom(dev, dev->eedata+0x80);
7129                /* break intentionally omitted */
7130        case SAA7134_BOARD_PINNACLE_PCTV_310i:
7131        case SAA7134_BOARD_KWORLD_DVBT_210:
7132        case SAA7134_BOARD_TEVION_DVBT_220RF:
7133        case SAA7134_BOARD_ASUSTeK_TIGER:
7134        case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
7135        case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
7136        case SAA7134_BOARD_MEDION_MD8800_QUADRO:
7137        case SAA7134_BOARD_AVERMEDIA_SUPER_007:
7138        case SAA7134_BOARD_TWINHAN_DTV_DVB_3056:
7139        case SAA7134_BOARD_CREATIX_CTX953:
7140        {
7141                /* this is a hybrid board, initialize to analog mode
7142                 * and configure firmware eeprom address
7143                 */
7144                u8 data[] = { 0x3c, 0x33, 0x60};
7145                struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7146                i2c_transfer(&dev->i2c_adap, &msg, 1);
7147                break;
7148        }
7149        case SAA7134_BOARD_ASUSTeK_TIGER_3IN1:
7150        {
7151                u8 data[] = { 0x3c, 0x33, 0x60};
7152                struct i2c_msg msg = {.addr = 0x0b, .flags = 0, .buf = data,
7153                                                        .len = sizeof(data)};
7154                i2c_transfer(&dev->i2c_adap, &msg, 1);
7155                break;
7156        }
7157        case SAA7134_BOARD_FLYDVB_TRIO:
7158        {
7159                u8 data[] = { 0x3c, 0x33, 0x62};
7160                struct i2c_msg msg = {.addr=0x09, .flags=0, .buf=data, .len = sizeof(data)};
7161                i2c_transfer(&dev->i2c_adap, &msg, 1);
7162                break;
7163        }
7164        case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
7165        case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
7166        {
7167                /* initialize analog mode  */
7168                u8 data[] = { 0x3c, 0x33, 0x6a};
7169                struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7170                i2c_transfer(&dev->i2c_adap, &msg, 1);
7171                break;
7172        }
7173        case SAA7134_BOARD_CINERGY_HT_PCMCIA:
7174        case SAA7134_BOARD_CINERGY_HT_PCI:
7175        {
7176                /* initialize analog mode */
7177                u8 data[] = { 0x3c, 0x33, 0x68};
7178                struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7179                i2c_transfer(&dev->i2c_adap, &msg, 1);
7180                break;
7181        }
7182        case SAA7134_BOARD_VIDEOMATE_DVBT_200:
7183        case SAA7134_BOARD_VIDEOMATE_DVBT_200A:
7184                /* The T200 and the T200A share the same pci id.  Consequently,
7185                 * we are going to query eeprom to try to find out which one we
7186                 * are actually looking at. */
7187
7188                /* Don't do this if the board was specifically selected with an
7189                 * insmod option or if we have the default configuration T200*/
7190                if (!dev->autodetected || (dev->eedata[0x41] == 0xd0))
7191                        break;
7192                if (dev->eedata[0x41] == 0x02) {
7193                        /* Reconfigure board  as T200A */
7194                        dev->board = SAA7134_BOARD_VIDEOMATE_DVBT_200A;
7195                        dev->tuner_type   = saa7134_boards[dev->board].tuner_type;
7196                        dev->tda9887_conf = saa7134_boards[dev->board].tda9887_conf;
7197                        printk(KERN_INFO "%s: Reconfigured board as %s\n",
7198                                dev->name, saa7134_boards[dev->board].name);
7199                } else {
7200                        printk(KERN_WARNING "%s: Unexpected tuner type info: %x in eeprom\n",
7201                                dev->name, dev->eedata[0x41]);
7202                        break;
7203                }
7204                break;
7205        case SAA7134_BOARD_ADS_INSTANT_HDTV_PCI:
7206        case SAA7134_BOARD_KWORLD_ATSC110:
7207        {
7208                struct i2c_msg msg = { .addr = 0x0a, .flags = 0 };
7209                int i;
7210                static u8 buffer[][2] = {
7211                        { 0x10, 0x12 },
7212                        { 0x13, 0x04 },
7213                        { 0x16, 0x00 },
7214                        { 0x14, 0x04 },
7215                        { 0x17, 0x00 },
7216                };
7217
7218                for (i = 0; i < ARRAY_SIZE(buffer); i++) {
7219                        msg.buf = &buffer[i][0];
7220                        msg.len = ARRAY_SIZE(buffer[0]);
7221                        if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1)
7222                                printk(KERN_WARNING
7223                                       "%s: Unable to enable tuner(%i).\n",
7224                                       dev->name, i);
7225                }
7226                break;
7227        }
7228        } /* switch() */
7229
7230        /* initialize tuner */
7231        if (TUNER_ABSENT != dev->tuner_type) {
7232                int has_demod = (dev->tda9887_conf & TDA9887_PRESENT);
7233
7234                /* Note: radio tuner address is always filled in,
7235                   so we do not need to probe for a radio tuner device. */
7236                if (dev->radio_type != UNSET)
7237                        v4l2_i2c_new_subdev(&dev->v4l2_dev,
7238                                &dev->i2c_adap, "tuner", "tuner",
7239                                dev->radio_addr, NULL);
7240                if (has_demod)
7241                        v4l2_i2c_new_subdev(&dev->v4l2_dev,
7242                                &dev->i2c_adap, "tuner", "tuner",
7243                                0, v4l2_i2c_tuner_addrs(ADDRS_DEMOD));
7244                if (dev->tuner_addr == ADDR_UNSET) {
7245                        enum v4l2_i2c_tuner_type type =
7246                                has_demod ? ADDRS_TV_WITH_DEMOD : ADDRS_TV;
7247
7248                        v4l2_i2c_new_subdev(&dev->v4l2_dev,
7249                                &dev->i2c_adap, "tuner", "tuner",
7250                                0, v4l2_i2c_tuner_addrs(type));
7251                } else {
7252                        v4l2_i2c_new_subdev(&dev->v4l2_dev,
7253                                &dev->i2c_adap, "tuner", "tuner",
7254                                dev->tuner_addr, NULL);
7255                }
7256        }
7257
7258        saa7134_tuner_setup(dev);
7259
7260        switch (dev->board) {
7261        case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM:
7262        case SAA7134_BOARD_AVERMEDIA_CARDBUS_501:
7263        {
7264                struct v4l2_priv_tun_config tea5767_cfg;
7265                struct tea5767_ctrl ctl;
7266
7267                dev->i2c_client.addr = 0xC0;
7268                /* set TEA5767(analog FM) defines */
7269                memset(&ctl, 0, sizeof(ctl));
7270                ctl.xtal_freq = TEA5767_HIGH_LO_13MHz;
7271                tea5767_cfg.tuner = TUNER_TEA5767;
7272                tea5767_cfg.priv  = &ctl;
7273                saa_call_all(dev, tuner, s_config, &tea5767_cfg);
7274                break;
7275        }
7276        } /* switch() */
7277
7278        return 0;
7279}
7280