Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  saa7134-cards.c

  Sprache: C
 

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 *
 * device driver for philips saa7134 based TV cards
 * card-specific stuff.
 *
 * (c) 2001-04 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
 */


#include "saa7134.h"
#include "saa7134-reg.h"

#include <linux/init.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>

#include "xc2028.h"
#include <media/v4l2-common.h>
#include <media/tveeprom.h>
#include "tea5767.h"
#include "tda18271.h"
#include "xc5000.h"
#include "s5h1411.h"

/* Input names */
const char * const saa7134_input_name[] = {
 [SAA7134_INPUT_MUTE]       = "mute",
 [SAA7134_INPUT_RADIO]      = "Radio",
 [SAA7134_INPUT_TV]         = "Television",
 [SAA7134_INPUT_TV_MONO]    = "TV (mono only)",
 [SAA7134_INPUT_COMPOSITE]  = "Composite",
 [SAA7134_INPUT_COMPOSITE0] = "Composite0",
 [SAA7134_INPUT_COMPOSITE1] = "Composite1",
 [SAA7134_INPUT_COMPOSITE2] = "Composite2",
 [SAA7134_INPUT_COMPOSITE3] = "Composite3",
 [SAA7134_INPUT_COMPOSITE4] = "Composite4",
 [SAA7134_INPUT_SVIDEO]     = "S-Video",
 [SAA7134_INPUT_SVIDEO0]    = "S-Video0",
 [SAA7134_INPUT_SVIDEO1]    = "S-Video1",
 [SAA7134_INPUT_COMPOSITE_OVER_SVIDEO] = "Composite over S-Video",
};

/* ------------------------------------------------------------------ */
/* board config info                                                  */

static struct tda18271_std_map aver_a706_std_map = {
 .fm_radio = { .if_freq = 5500, .fm_rfn = 0, .agc_mode = 3, .std = 0,
        .if_lvl = 0, .rfagc_top = 0x2c, },
};

/* If radio_type !=UNSET, radio_addr should be specified
 */


struct saa7134_board saa7134_boards[] = {
 [SAA7134_BOARD_UNKNOWN] = {
  .name  = "UNKNOWN/GENERIC",
  .audio_clock = 0x00187de7,
  .tuner_type = TUNER_ABSENT,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,

  .inputs         = {{
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 0,
   .amux = LINE1,
  }},
 },
 [SAA7134_BOARD_PROTEUS_PRO] = {
  /* /me */
  .name  = "Proteus Pro [philips reference design]",
  .audio_clock = 0x00187de7,
  .tuner_type = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,

  .inputs         = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_FLYVIDEO3000] = {
  /* "Marco d'Itri" <md@Linux.IT> */
  .name  = "LifeView FlyVIDEO3000",
  .audio_clock = 0x00200000,
  .tuner_type = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,

  .gpiomask       = 0xe000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x8000,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE2,
   .gpio = 0x0000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
   .gpio = 0x4000,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
   .gpio = 0x4000,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
   .gpio = 0x4000,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x2000,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio = 0x8000,
  },
 },
 [SAA7134_BOARD_FLYVIDEO2000] = {
  /* "TC Wan" <tcwan@cs.usm.my> */
  .name           = "LifeView/Typhoon FlyVIDEO2000",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,

  .gpiomask       = 0xe000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
   .gpio = 0x0000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
   .gpio = 0x4000,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
   .gpio = 0x4000,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
   .gpio = 0x4000,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x2000,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE2,
   .gpio = 0x8000,
  },
 },
 [SAA7134_BOARD_FLYTVPLATINUM_MINI] = {
  /* "Arnaud Quette" <aquette@free.fr> */
  .name           = "LifeView FlyTV Platinum Mini",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,

  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_FLYTVPLATINUM_FM] = {
  /* LifeView FlyTV Platinum FM (LR214WF) */
  /* "Peter Missel <peter.missel@onlinehome.de> */
  .name           = "LifeView FlyTV Platinum FM / Gold",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,

  .gpiomask       = 0x1E000, /* Set GP16 and unused 15,14,13 to Output */
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x10000, /* GP16=1 selects TV input */
  },{
/* .type = SAA7134_INPUT_TV_MONO,
.vmux = 1,
.amux = LINE2,
.gpio = 0x0000,
},{
*/

   .vmux = 0,
   .amux = LINE2,
/* .gpio = 0x4000,         */
  },{
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 3,
   .amux = LINE2,
/* .gpio = 0x4000,         */
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
/* .gpio = 0x4000,         */
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x00000, /* GP16=0 selects FM radio antenna */
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio = 0x10000,
  },
 },
 [SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM] = {
  /* RoverMedia TV Link Pro FM (LR138 REV:I) */
  /* Eugene Yudin <Eugene.Yudin@gmail.com> */
  .name  = "RoverMedia TV Link Pro FM",
  .audio_clock = 0x00200000,
  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, /* TCL MFPE05 2 */
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0xe000,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x8000,
  }, {
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE2,
   .gpio = 0x0000,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
   .gpio = 0x4000,
  }, {
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
   .gpio = 0x4000,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
   .gpio = 0x4000,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x2000,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio = 0x8000,
  },
 },
 [SAA7134_BOARD_EMPRESS] = {
  /* "Gert Vervoort" <gert.vervoort@philips.com> */
  .name  = "EMPRESS",
  .audio_clock = 0x00187de7,
  .tuner_type = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .empress_addr = 0x20,

  .inputs         = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
  .mpeg      = SAA7134_MPEG_EMPRESS,
  .video_out = CCIR656,
 },
 [SAA7134_BOARD_MONSTERTV] = {
  /* "K.Ohta" <alpha292@bremen.or.jp> */
  .name           = "SKNet Monster TV",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_NTSC_M,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,

  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_MD9717] = {
  .name  = "Tevion MD 9717",
  .audio_clock = 0x00200000,
  .tuner_type = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   /* workaround for problems with normal TV sound */
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
        .mute = {
         .type = SAA7134_INPUT_MUTE,
         .amux = TV,
        },
 },
 [SAA7134_BOARD_TVSTATION_RDS] = {
  /* Typhoon TV Tuner RDS: Art.Nr. 50694 */
  .name  = "KNC One TV-Station RDS / Typhoon TV Tuner RDS",
  .audio_clock = 0x00200000,
  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux   = LINE2,
  },{

   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  },{

   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux = 0,
   .amux = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_TVSTATION_DVR] = {
  .name  = "KNC One TV-Station DVR",
  .audio_clock = 0x00200000,
  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .empress_addr = 0x20,
  .tda9887_conf = TDA9887_PRESENT,
  .gpiomask = 0x820000,
  .inputs  = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x20000,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0x20000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x20000,
  }},
  .radio  = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x20000,
  },
  .mpeg           = SAA7134_MPEG_EMPRESS,
  .video_out = CCIR656,
 },
 [SAA7134_BOARD_CINERGY400] = {
  .name           = "Terratec Cinergy 400 TV",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 4,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux = 0,
   .amux = LINE1,
  }}
 },
 [SAA7134_BOARD_MD5044] = {
  .name           = "Medion 5044",
  .audio_clock    = 0x00187de7, /* was: 0x00200000, */
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   /* workaround for problems with normal TV sound */
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_KWORLD] = {
  .name           = "Kworld/KuroutoShikou SAA7130-TVPCI",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_NTSC_M,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_CINERGY600] = {
  .name           = "Terratec Cinergy 600 TV",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 4,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux = 0,
   .amux = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_MD7134] = {
  .name           = "Medion 7134",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FMD1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 0,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = LINE2,
        },
        .mute = {
         .type = SAA7134_INPUT_MUTE,
         .amux = TV,
  },
 },
 [SAA7134_BOARD_TYPHOON_90031] = {
  /* aka Typhoon "TV+Radio", Art.Nr 90031 */
  /* Tom Zoerner <tomzo at users sourceforge net> */
  .name           = "Typhoon TV+Radio 90031",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = LINE2,
  },
 },
 [SAA7134_BOARD_ELSA] = {
  .name           = "ELSA EX-VISION 300TV",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_HITACHI_NTSC,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 0,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 4,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_ELSA_500TV] = {
  .name           = "ELSA EX-VISION 500TV",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_HITACHI_NTSC,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 7,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 8,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 8,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_ELSA_700TV] = {
  .name           = "ELSA EX-VISION 700TV",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_HITACHI_NTSC,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 4,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 6,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 7,
   .amux = LINE1,
  }},
  .mute           = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
  },
 },
 [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
  .name           = "ASUS TV-FM 7134",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 4,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 6,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE1,
  },
 },
 [SAA7134_BOARD_ASUSTeK_TVFM7135] = {
  .name           = "ASUS TV-FM 7135",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 0x200000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x0000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 4,
   .amux = LINE2,
   .gpio = 0x0000,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 6,
   .amux = LINE2,
   .gpio = 0x0000,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x200000,
  },
  .mute  = {
   .type = SAA7134_INPUT_MUTE,
   .gpio = 0x0000,
  },

 },
 [SAA7134_BOARD_VA1000POWER] = {
  .name           = "AOPEN VA1000 POWER",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_NTSC,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_10MOONSTVMASTER] = {
  /* "lilicheng" <llc@linuxfans.org> */
  .name           = "10MOONS PCI TV CAPTURE CARD",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 0xe000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
   .gpio = 0x0000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
   .gpio = 0x4000,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
   .gpio = 0x4000,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
   .gpio = 0x4000,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x2000,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE2,
   .gpio = 0x8000,
  },
 },
 [SAA7134_BOARD_BMK_MPEX_NOTUNER] = {
  /* "Andrew de Quincey" <adq@lidskialf.net> */
  .name  = "BMK MPEX No Tuner",
  .audio_clock = 0x200000,
  .tuner_type = TUNER_ABSENT,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .empress_addr = 0x20,
  .inputs         = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 4,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE3,
   .vmux = 0,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE4,
   .vmux = 1,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
  .mpeg      = SAA7134_MPEG_EMPRESS,
  .video_out = CCIR656,
 },
 [SAA7134_BOARD_VIDEOMATE_TV] = {
  .name           = "Compro VideoMate TV",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_NTSC_M,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS] = {
  .name           = "Compro VideoMate TV Gold+",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_NTSC_M,
  .gpiomask       = 0x800c0000,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0x06c00012,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x0ac20012,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
   .gpio = 0x08c20012,
  }},    /* radio and probably mute is missing */
 },
 [SAA7134_BOARD_CRONOS_PLUS] = {
  /*
gpio pins:
0  .. 3   BASE_ID
4  .. 7   PROTECT_ID
8  .. 11  USER_OUT
12 .. 13  USER_IN
14 .. 15  VIDIN_SEL
*/

  .name           = "Matrox CronosPlus",
  .tuner_type     = TUNER_ABSENT,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 0xcf00,
  .inputs         = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .gpio = 2 << 14,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 0,
   .gpio = 1 << 14,
  },{
   .type = SAA7134_INPUT_COMPOSITE3,
   .vmux = 0,
   .gpio = 0 << 14,
  },{
   .type = SAA7134_INPUT_COMPOSITE4,
   .vmux = 0,
   .gpio = 3 << 14,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .gpio = 2 << 14,
  }},
 },
 [SAA7134_BOARD_MD2819] = {
  .name           = "AverMedia M156 / Medion 2819",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask = 0x03,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x00,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x02,
  }, {
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 0,
   .amux = LINE1,
   .gpio = 0x02,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0x02,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE1,
   .gpio = 0x01,
  },
  .mute  = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio = 0x00,
  },
 },
 [SAA7134_BOARD_BMK_MPEX_TUNER] = {
  /* "Greg Wickham <greg.wickham@grangenet.net> */
  .name           = "BMK MPEX Tuner",
  .audio_clock    = 0x200000,
  .tuner_type     = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .empress_addr = 0x20,
  .inputs         = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }},
  .mpeg      = SAA7134_MPEG_EMPRESS,
  .video_out = CCIR656,
 },
 [SAA7134_BOARD_ASUSTEK_TVFM7133] = {
  .name           = "ASUS TV-FM 7133",
  .audio_clock    = 0x00187de7,
  /* probably wrong, the 7133 one is the NTSC version ...
* .tuner_type  = TUNER_PHILIPS_FM1236_MK3 */

  .tuner_type     = TUNER_LG_NTSC_NEW_TAPC,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,

  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 4,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 6,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE1,
  },
 },
 [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = {
  .name           = "Pinnacle PCTV Stereo (saa7134)",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_MT2032,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_MANLI_MTV002] = {
  /* Ognjen Nastic <ognjen@logosoft.ba> */
  .name           = "Manli MuchTV M-TV002",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 1,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_MANLI_MTV001] = {
  /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
  .name           = "Manli MuchTV M-TV001",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = LINE2,
  }},
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
  },
 },
 [SAA7134_BOARD_TG3000TV] = {
  /* TransGear 3000TV */
  .name           = "Nagase Sangyo TransGear 3000TV",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_NTSC_M,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_ECS_TVP3XP] = {
  .name           = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
  .audio_clock    = 0x187de7,  /* xtal 32.1 MHz */
  .tuner_type     = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux   = 1,
   .amux   = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux   = 0,
   .amux   = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = LINE2,
  },
 },
 [SAA7134_BOARD_ECS_TVP3XP_4CB5] = {
  .name           = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
  .audio_clock    = 0x187de7,
  .tuner_type     = TUNER_PHILIPS_NTSC,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux   = 1,
   .amux   = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux   = 0,
   .amux   = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = LINE2,
  },
 },
    [SAA7134_BOARD_ECS_TVP3XP_4CB6] = {
  /* Barry Scott <barry.scott@onelan.co.uk> */
  .name  = "Elitegroup ECS TVP3XP FM1246 Tuner Card (PAL,FM)",
  .audio_clock    = 0x187de7,
  .tuner_type     = TUNER_PHILIPS_PAL_I,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux   = 1,
   .amux   = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux   = 0,
   .amux   = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = LINE2,
  },
 },
 [SAA7134_BOARD_AVACSSMARTTV] = {
  /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
  .name           = "AVACS SmartTV",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x200000,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = {
  /* Michael Smith <msmith@cbnco.com> */
  .name           = "AVerMedia DVD EZMaker",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_ABSENT,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
  }},
 },
 [SAA7134_BOARD_AVERMEDIA_M103] = {
  /* Massimo Piccioni <dafastidio@libero.it> */
  .name           = "AVerMedia MiniPCI DVB-T Hybrid M103",
  .audio_clock    = 0x187de7,
  .tuner_type     = TUNER_XC2028,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
   .mpeg           = SAA7134_MPEG_DVB,
   .inputs         = {{
    .type = SAA7134_INPUT_TV,
    .vmux = 1,
    .amux = TV,
   } },
 },
 [SAA7134_BOARD_NOVAC_PRIMETV7133] = {
  /* toshii@netbsd.org */
  .name           = "Noval Prime TV 7133",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_ALPS_TSBH1_NTSC,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
  }},
 },
 [SAA7134_BOARD_AVERMEDIA_STUDIO_305] = {
  .name           = "AverMedia AverTV Studio 305",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_STUDIO_505] = {
  /* Vasiliy Temnikov <vaka@newmail.ru> */
  .name           = "AverMedia AverTV Studio 505",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
  },
 },
 [SAA7134_BOARD_UPMOST_PURPLE_TV] = {
  .name           = "UPMOST PURPLE TV",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1236_MK3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 7,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 7,
   .amux = LINE1,
  }},
 },
 [SAA7134_BOARD_ITEMS_MTV005] = {
  /* Norman Jonas <normanjonas@arcor.de> */
  .name           = "Items MuchTV Plus / IT-005",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 1,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_CINERGY200] = {
  .name           = "Terratec Cinergy 200 TV",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 4,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux = 0,
   .amux = LINE1,
  }},
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_VIDEOMATE_TV_PVR] = {
  /* Alain St-Denis <alain@topaze.homeip.net> */
  .name           = "Compro VideoMate TV PVR/FM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_NTSC_M,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask = 0x808c0080,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0x00080,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x00080,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2_LEFT,
   .gpio = 0x00080,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x80000,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE2,
   .gpio = 0x40000,
  },
 },
 [SAA7134_BOARD_SABRENT_SBTTVFM] = {
  /* Michael Rodriguez-Torrent <mrtorrent@asu.edu> */
  .name           = "Sabrent SBT-TVFM (saa7130)",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_NTSC_M,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = LINE2,
  },
 },
 [SAA7134_BOARD_ZOLID_XPERT_TV7134] = {
  /* Helge Jensen <helge.jensen@slog.dk> */
  .name           = ":Zolid Xpert TV7134",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_NTSC,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_EMPIRE_PCI_TV_RADIO_LE] = {
  /* "Matteo Az" <matte.az@nospam.libero.it> ;-) */
  .name           = "Empire PCI TV-Radio LE",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 0x4000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE2,
   .gpio = 0x8000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x8000,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 6,
   .amux = LINE1,
   .gpio = 0x8000,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE1,
   .gpio = 0x8000,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio =0x8000,
  }
 },
 [SAA7134_BOARD_AVERMEDIA_STUDIO_307] = {
  /*
Nickolay V. Shmyrev <nshmyrev@yandex.ru>
Lots of thanks to Andrey Zolotarev <zolotarev_andrey@mail.ru>
*/

  .name           = "Avermedia AVerTV Studio 307",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x03,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x00,
  },{
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x02,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0x02,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE1,
   .gpio = 0x01,
  },
  .mute  = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
   .gpio = 0x00,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_GO_007_FM] = {
  .name           = "Avermedia AVerTV GO 007 FM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 0x00300003,
  /* .gpiomask       = 0x8c240003, */
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x01,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE1,
   .gpio = 0x02,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 6,
   .amux = LINE1,
   .gpio = 0x02,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x00300001,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio = 0x01,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_CARDBUS] = {
  /* Kees.Blom@cwi.nl */
  .name           = "AVerMedia Cardbus TV/Radio (E500)",
  .audio_clock    = 0x187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE1,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_CARDBUS_501] = {
  /* Oldrich Jedlicka <oldium.pro@seznam.cz> */
  .name           = "AVerMedia Cardbus TV/Radio (E501R)",
  .audio_clock    = 0x187de7,
  .tuner_type     = TUNER_ALPS_TSBE5_PAL,
  .radio_type     = TUNER_TEA5767,
  .tuner_addr = 0x61,
  .radio_addr = 0x60,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x08000000,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x08000000,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x08000000,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0x08000000,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x00000000,
  },
 },
 [SAA7134_BOARD_CINERGY400_CARDBUS] = {
  .name           = "Terratec Cinergy 400 mobile",
  .audio_clock    = 0x187de7,
  .tuner_type     = TUNER_ALPS_TSBE5_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
 },
 [SAA7134_BOARD_CINERGY600_MK3] = {
  .name           = "Terratec Cinergy 600 TV MK3",
  .audio_clock    = 0x00200000,
  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .rds_addr = 0x10,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 4,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux = 0,
   .amux = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_VIDEOMATE_GOLD_PLUS] = {
  /* Dylan Walkden <dylan_walkden@hotmail.com> */
  .name  = "Compro VideoMate Gold+ Pal",
  .audio_clock = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_PAL,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask = 0x1ce780,
  .inputs  = {{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux = 0,
   .amux = LINE1,
   .gpio = 0x008080,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x008080,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x008080,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x80000,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE2,
   .gpio = 0x0c8000,
  },
 },
 [SAA7134_BOARD_PINNACLE_300I_DVBT_PAL] = {
  .name           = "Pinnacle PCTV 300i DVB-T + PAL",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_MT2032,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_PROVIDEO_PV952] = {
  /* andreas.kretschmer@web.de */
  .name  = "ProVideo PV952",
  .audio_clock = 0x00187de7,
  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_305] = {
  /* much like the "studio" version but without radio
* and another tuner (sirspiritus@yandex.ru) */

  .name           = "AverMedia AverTV/305",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FQ1216ME,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
  },
 },
 [SAA7134_BOARD_FLYDVBTDUO] = {
  /* LifeView FlyDVB-T DUO */
  /* "Nico Sabbi <nsabbi@tiscali.it>  Hartmut Hackmann hartmut.hackmann@t-online.de*/
  .name           = "LifeView FlyDVB-T DUO / MSI TV@nywhere Duo",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask = 0x00200000,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x200000, /* GPIO21=High for TV input */
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
  },
 },
 [SAA7134_BOARD_PHILIPS_TOUGH] = {
  .name           = "Philips TOUGH DVB-T reference design",
  .tuner_type = TUNER_ABSENT,
  .audio_clock    = 0x00187de7,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 0,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  }},
 },
 [SAA7134_BOARD_AVERMEDIA_307] = {
  /*
Davydov Vladimir <vladimir@iqmedia.com>
*/

  .name           = "Avermedia AVerTV 307",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FQ1216ME,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
 },
 [SAA7134_BOARD_ADS_INSTANT_TV] = {
  .name           = "ADS Tech Instant TV (saa7135)",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_KWORLD_VSTREAM_XPERT] = {
  .name           = "Kworld/Tevion V-Stream Xpert TV PVR7134",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_PAL_I,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask = 0x0700,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
   .gpio   = 0x000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
   .gpio   = 0x200,  /* gpio by DScaler */
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 0,
   .amux   = LINE1,
   .gpio   = 0x200,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = LINE1,
   .gpio   = 0x100,
  },
  .mute  = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio = 0x000,
  },
 },
 [SAA7134_BOARD_FLYDVBT_DUO_CARDBUS] = {
  .name  = "LifeView/Typhoon/Genius FlyDVB-T Duo Cardbus",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask = 0x00200000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x200000, /* GPIO21=High for TV input */
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
  },
 },
 [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII] = {
  .name           = "Compro VideoMate TV Gold+II",
  .audio_clock    = 0x002187de7,
  .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
  .radio_type     = TUNER_TEA5767,
  .tuner_addr     = 0x63,
  .radio_addr     = 0x60,
  .gpiomask       = 0x8c1880,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 0,
   .amux = LINE1,
   .gpio = 0x800800,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x801000,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x800000,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x880000,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE2,
   .gpio = 0x840000,
  },
 },
 [SAA7134_BOARD_KWORLD_XPERT] = {
  /*
FIXME:
- Remote control doesn't initialize properly.
- Audio volume starts muted,
then gradually increases after channel change.
- Composite S-Video untested.
From: Konrad Rzepecki <hannibal@megapolis.pl>
*/

  .name           = "Kworld Xpert TV PVR7134",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_TENA_9533_DI,
  .radio_type     = TUNER_TEA5767,
  .tuner_addr = 0x61,
  .radio_addr = 0x60,
  .gpiomask = 0x0700,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
   .gpio   = 0x000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
   .gpio   = 0x200,  /* gpio by DScaler */
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 0,
   .amux   = LINE1,
   .gpio   = 0x200,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = LINE1,
   .gpio   = 0x100,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio = 0x000,
  },
 },
 [SAA7134_BOARD_FLYTV_DIGIMATRIX] = {
  .name  = "FlyTV mini Asus Digimatrix",
  .audio_clock = 0x00200000,
  .tuner_type = TUNER_LG_TALN,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,  /* radio unconfirmed */
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_KWORLD_TERMINATOR] = {
  /* Kworld V-Stream Studio TV Terminator */
  /* "James Webb <jrwebb@qwest.net> */
  .name           = "V-Stream Studio TV Terminator",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .gpiomask       = 1 << 21,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x0000000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
   .gpio = 0x0000000,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
   .gpio = 0x0000000,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x0200000,
  },
 },
 [SAA7134_BOARD_YUAN_TUN900] = {
  /* FIXME:
 * S-Video and composite sources untested.
 * Radio not working.
 * Remote control not yet implemented.
 * From : codemaster@webgeeks.be */

  .name           = "Yuan TUN-900 (saa7135)",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr= ADDR_UNSET,
  .radio_addr= ADDR_UNSET,
  .gpiomask       = 0x00010003,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x01,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
   .gpio = 0x02,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 6,
   .amux = LINE2,
   .gpio = 0x02,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE1,
   .gpio = 0x00010003,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio = 0x01,
  },
 },
 [SAA7134_BOARD_BEHOLD_409FM] = {
  /* <http://tuner.beholder.ru>, Sergey <skiv@orel.ru> */
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 409 FM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x00008000,
  .inputs         = {{
     .type = SAA7134_INPUT_TV,
     .vmux = 3,
     .amux = TV,
  },{
     .type = SAA7134_INPUT_COMPOSITE1,
     .vmux = 1,
     .amux = LINE1,
  },{
     .type = SAA7134_INPUT_SVIDEO,
     .vmux = 8,
     .amux = LINE1,
  }},
  .radio = {
     .type = SAA7134_INPUT_RADIO,
     .amux = LINE2,
  },
 },
 [SAA7134_BOARD_GOTVIEW_7135] = {
  /* Mike Baikov <mike@baikov.com> */
  /* Andrey Cvetcov <ays14@yandex.ru> */
  .name            = "GoTView 7135 PCI",
  .audio_clock     = 0x00187de7,
  .tuner_type      = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type      = UNSET,
  .tuner_addr      = ADDR_UNSET,
  .radio_addr      = ADDR_UNSET,
  .tda9887_conf    = TDA9887_PRESENT,
  .gpiomask        = 0x00200003,
  .inputs          = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x00200003,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE2,
   .gpio = 0x00200003,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x00200003,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0x00200003,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x00200003,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio = 0x00200003,
  },
 },
 [SAA7134_BOARD_PHILIPS_EUROPA] = {
  .name           = "Philips EUROPA V3 reference design",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TD1316,
  .radio_type     = UNSET,
  .tuner_addr = 0x61,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 3,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 0,
   .amux   = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE2,
  }},
 },
 [SAA7134_BOARD_VIDEOMATE_DVBT_300] = {
  .name           = "Compro Videomate DVB-T300",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TD1316,
  .radio_type     = UNSET,
  .tuner_addr = 0x61,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 3,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 1,
   .amux   = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE2,
  }},
 },
 [SAA7134_BOARD_VIDEOMATE_DVBT_200] = {
  .name           = "Compro Videomate DVB-T200",
  .tuner_type = TUNER_ABSENT,
  .audio_clock    = 0x00187de7,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 0,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  }},
 },
 [SAA7134_BOARD_RTD_VFG7350] = {
  .name  = "RTD Embedded Technologies VFG7350",
  .audio_clock = 0x00200000,
  .tuner_type = TUNER_ABSENT,
  .radio_type = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .empress_addr = 0x21,
  .inputs  = {{
   .type = SAA7134_INPUT_COMPOSITE0,
   .vmux   = 0,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 1,
   .amux   = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux   = 2,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE3,
   .vmux   = 3,
   .amux   = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO0,

   .vmux   = 8,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO1,
   .vmux   = 9,
   .amux   = LINE2,
  }},
  .mpeg           = SAA7134_MPEG_EMPRESS,
  .video_out      = CCIR656,
  .vid_port_opts  = ( SET_T_CODE_POLARITY_NON_INVERTED |
        SET_CLOCK_NOT_DELAYED |
        SET_CLOCK_INVERTED |
        SET_VSYNC_OFF ),
 },
 [SAA7134_BOARD_RTD_VFG7330] = {
  .name  = "RTD Embedded Technologies VFG7330",
  .audio_clock = 0x00200000,
  .tuner_type = TUNER_ABSENT,
  .radio_type = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs  = {{
   .type = SAA7134_INPUT_COMPOSITE0,
   .vmux   = 0,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 1,
   .amux   = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux   = 2,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE3,
   .vmux   = 3,
   .amux   = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO0,
   .vmux   = 8,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO1,
   .vmux   = 9,
   .amux   = LINE2,
  }},
 },
 [SAA7134_BOARD_FLYTVPLATINUM_MINI2] = {
  .name           = "LifeView FlyTV Platinum Mini2",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,

  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180] = {
  /* Michael Krufky <mkrufky@linuxtv.org>
 * Uses Alps Electric TDHU2, containing NXT2004 ATSC Decoder
 * AFAIK, there is no analog demod, thus,
 * no support for analog television.
 */

  .name           = "AVerMedia AVerTVHD MCE A180",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_ABSENT,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_MONSTERTV_MOBILE] = {
  .name           = "SKNet MonsterTV Mobile",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,

  .inputs         = {{
     .type = SAA7134_INPUT_TV,
     .vmux = 1,
     .amux = TV,
  },{
     .type = SAA7134_INPUT_COMPOSITE1,
     .vmux = 3,
     .amux = LINE1,
  },{
     .type = SAA7134_INPUT_SVIDEO,
     .vmux = 6,
     .amux = LINE1,
  }},
 },
 [SAA7134_BOARD_PINNACLE_PCTV_110i] = {
        .name           = "Pinnacle PCTV 40i/50i/110i (saa7133)",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .gpiomask       = 0x080200000,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 4,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 0,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x0200000,
  },
 },
 [SAA7134_BOARD_ASUSTeK_P7131_DUAL] = {
  .name           = "ASUSTeK P7131 Dual",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask = 1 << 21,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x0000000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
   .gpio = 0x0200000,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 0,
   .amux = LINE2,
   .gpio = 0x0200000,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
   .gpio = 0x0200000,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x0200000,
  },
 },
 [SAA7134_BOARD_SEDNA_PC_TV_CARDBUS] = {
  /* Paul Tom Zalac <pzalac@gmail.com> */
  /* Pavel Mihaylov <bin@bash.info> */
  .name           = "Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)",
    /* Sedna/MuchTV (OEM) Cardbus TV Tuner */
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .gpiomask       = 0xe880c0,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 6,
   .amux = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV] = {
  /* "Cyril Lacoux (Yack)" <clacoux@ifeelgood.org> */
  .name           = "ASUS Digimatrix TV",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_FQ1216ME,
  .tda9887_conf   = TDA9887_PRESENT,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
 },
 [SAA7134_BOARD_PHILIPS_TIGER] = {
  .name           = "Philips Tiger reference design",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_OFF },
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask       = 0x0200000,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = TV,
   .gpio   = 0x0200000,
  },
 },
 [SAA7134_BOARD_MSI_TVATANYWHERE_PLUS] = {
  .name           = "MSI TV@Anywhere plus",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 1 << 21,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux   = 3,
   .amux   = LINE2, /* unconfirmed, taken from Philips driver */
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux   = 0,  /* untested */
   .amux   = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = TV,
   .gpio   = 0x0200000,
  },
 },
 [SAA7134_BOARD_CINERGY250PCI] = {
  /* remote-control does not work. The signal about a
   key press comes in via gpio, but the key code
   doesn't. Neither does it have an i2c remote control
   interface. */

  .name           = "Terratec Cinergy 250 PCI TV",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 0x80200000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_SVIDEO,  /* NOT tested */
   .vmux = 8,
   .amux = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = TV,
   .gpio   = 0x0200000,
  },
 },
 [SAA7134_BOARD_FLYDVB_TRIO] = {
  /* LifeView LR319 FlyDVB Trio */
  /* Peter Missel <peter.missel@onlinehome.de> */
  .name           = "LifeView FlyDVB Trio",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask = 0x00200000,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_TV, /* Analog broadcast/cable TV */
   .vmux = 1,
   .amux = TV,
   .gpio = 0x200000, /* GPIO21=High for TV input */
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
  },
 },
 [SAA7134_BOARD_AVERMEDIA_777] = {
  .name           = "AverTV DVB-T 777",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_ABSENT,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 1,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  }},
 },
 [SAA7134_BOARD_FLYDVBT_LR301] = {
  /* LifeView FlyDVB-T */
  /* Giampiero Giancipoli <gianci@libero.it> */
  .name           = "LifeView FlyDVB-T / Genius VideoWonder DVB-T",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_ABSENT,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331] = {
  .name           = "ADS Instant TV Duo Cardbus PTV331",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask       = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
   .gpio   = 0x00200000,
  }},
 },
 [SAA7134_BOARD_TEVION_DVBT_220RF] = {
  .name           = "Tevion/KWorld DVB-T 220RF",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask       = 1 << 21,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux   = 0,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = TV,
   .gpio   = 0x0200000,
  },
 },
 [SAA7134_BOARD_KWORLD_DVBT_210] = {
  .name           = "KWorld DVB-T 210",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask       = 1 << 21,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = TV,
   .gpio   = 0x0200000,
  },
 },
 [SAA7134_BOARD_KWORLD_ATSC110] = {
  .name           = "Kworld ATSC110/115",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TUV1236D,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_AVERMEDIA_A169_B] = {
  /* AVerMedia A169  */
  /* Rickard Osser <ricky@osser.se>  */
  /* This card has two saa7134 chips on it,
   but only one of them is currently working. */

  .name  = "AVerMedia A169 B",
  .audio_clock    = 0x02187de7,
  .tuner_type = TUNER_LG_TALN,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x0a60000,
 },
 [SAA7134_BOARD_AVERMEDIA_A169_B1] = {
  /* AVerMedia A169 */
  /* Rickard Osser <ricky@osser.se> */
  .name  = "AVerMedia A169 B1",
  .audio_clock    = 0x02187de7,
  .tuner_type = TUNER_LG_TALN,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0xca60000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 4,
   .amux = TV,
   .gpio = 0x04a61000,
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 9,           /* 9 is correct as S-VIDEO1 according to a169.inf! */
   .amux = LINE1,
  }},
 },
 [SAA7134_BOARD_MD7134_BRIDGE_2] = {
  /* The second saa7134 on this card only serves as DVB-S host bridge */
  .name           = "Medion 7134 Bridge #2",
  .audio_clock    = 0x00187de7,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
 },
 [SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS] = {
  .name  = "LifeView FlyDVB-T Hybrid Cardbus/MSI TV @nywhere A/D NB",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask       = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x200000, /* GPIO21=High for TV input */
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 3,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x000000, /* GPIO21=Low for FM radio antenna */
  },
 },
 [SAA7134_BOARD_FLYVIDEO3000_NTSC] = {
  /* "Zac Bowling" <zac@zacbowling.com> */
  .name           = "LifeView FlyVIDEO3000 (NTSC)",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_NTSC,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,

  .gpiomask       = 0xe000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x8000,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE2,
   .gpio = 0x0000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
   .gpio = 0x4000,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
   .gpio = 0x4000,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
   .gpio = 0x4000,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x2000,
  },
   .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio = 0x8000,
  },
 },
 [SAA7134_BOARD_MEDION_MD8800_QUADRO] = {
  .name           = "Medion Md8800 Quadro",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 0,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  }},
 },
 [SAA7134_BOARD_FLYDVBS_LR300] = {
  /* LifeView FlyDVB-s */
  /* Igor M. Liplianin <liplianin@tut.by> */
  .name           = "LifeView FlyDVB-S /Acorp TV134DS",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_ABSENT,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
 },
 [SAA7134_BOARD_PROTEUS_2309] = {
  .name           = "Proteus Pro 2309",
  .audio_clock    = 0x00187de7,
  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_A16AR] = {
  /* Petr Baudis <pasky@ucw.cz> */
  .name           = "AVerMedia TV Hybrid A16AR",
  .audio_clock    = 0x187de7,
  .tuner_type     = TUNER_PHILIPS_TD1316, /* untested */
  .radio_type     = TUNER_TEA5767, /* untested */
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = 0x60,
  .tda9887_conf   = TDA9887_PRESENT,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE1,
  },
 },
 [SAA7134_BOARD_ASUS_EUROPA2_HYBRID] = {
  .name           = "Asus Europa2 OEM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FMD1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT| TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 3,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 4,
   .amux   = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = LINE1,
  },
 },
 [SAA7134_BOARD_PINNACLE_PCTV_310i] = {
  .name           = "Pinnacle PCTV 310i",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_ON },
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask       = 0x000200000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 4,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = TV,
   .gpio   = 0x0200000,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_STUDIO_507] = {
  /* Mikhail Fedotov <mo_fedotov@mail.ru> */
  .name           = "Avermedia AVerTV Studio 507",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x03,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x00,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
   .gpio = 0x00,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
   .gpio = 0x00,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
   .gpio = 0x00,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x01,
  },
  .mute  = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
   .gpio = 0x00,
  },
 },
 [SAA7134_BOARD_VIDEOMATE_DVBT_200A] = {
  /* Francis Barber <fedora@barber-family.id.au> */
  .name           = "Compro Videomate DVB-T200A",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_ABSENT,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 3,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 1,
   .amux   = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE2,
  }},
 },
 [SAA7134_BOARD_HAUPPAUGE_HVR1110] = {
  /* Thomas Genty <tomlohave@gmail.com> */
  /* David Bentham <db260179@hotmail.com> */
  .name           = "Hauppauge WinTV-HVR1110 DVB-T/Hybrid",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_ON },
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask       = 0x0200100,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x0000100,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x0200100,
  },
 },
 [SAA7134_BOARD_HAUPPAUGE_HVR1150] = {
  .name           = "Hauppauge WinTV-HVR1150 ATSC/QAM-Hybrid",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_ON_BRIDGE },
  .mpeg           = SAA7134_MPEG_DVB,
  .ts_type = SAA7134_MPEG_TS_SERIAL,
  .ts_force_val   = 1,
  .gpiomask       = 0x0800100, /* GPIO 21 is an INPUT */
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x0000100,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x0800100, /* GPIO 23 HI for FM */
  },
 },
 [SAA7134_BOARD_HAUPPAUGE_HVR1120] = {
  .name           = "Hauppauge WinTV-HVR1120 DVB-T/Hybrid",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_ON_BRIDGE },
  .mpeg           = SAA7134_MPEG_DVB,
  .ts_type = SAA7134_MPEG_TS_SERIAL,
  .gpiomask       = 0x0800100, /* GPIO 21 is an INPUT */
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x0000100,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x0800100, /* GPIO 23 HI for FM */
  },
 },
 [SAA7134_BOARD_CINERGY_HT_PCMCIA] = {
  .name           = "Terratec Cinergy HT PCMCIA",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 0,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 6,
   .amux   = LINE1,
  }},
 },
 [SAA7134_BOARD_ENCORE_ENLTV] = {
 /* Steven Walter <stevenrwalter@gmail.com>
   Juan Pablo Sormani <sorman@gmail.com> */

  .name           = "Encore ENLTV",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_TNF_5335MF,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = 3,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 7,
   .amux = 4,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = 2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 0,
   .amux = 2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
/* .gpio = 0x00300001,*/
   .gpio = 0x20000,

  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = 0,
  },
 },
 [SAA7134_BOARD_ENCORE_ENLTV_FM] = {
  /* Juan Pablo Sormani <sorman@gmail.com> */
  .name           = "Encore ENLTV-FM",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_FCV1236D,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = 3,
  },{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 7,
   .amux = 4,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = 2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 0,
   .amux = 2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x20000,

  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = 0,
  },
 },
 [SAA7134_BOARD_ENCORE_ENLTV_FM53] = {
  .name           = "Encore ENLTV-FM v5.3",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_TNF_5335MF,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask = 0x7000,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = 1,
   .gpio = 0x50000,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = 2,
   .gpio = 0x2000,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = 2,
   .gpio = 0x2000,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .vmux = 1,
   .amux = 1,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .gpio = 0xf000,
   .amux = 0,
  },
 },
 [SAA7134_BOARD_ENCORE_ENLTV_FM3] = {
  .name           = "Encore ENLTV-FM 3",
  .audio_clock    = 0x02187de7,
  .tuner_type     = TUNER_TENA_TNF_5337,
  .radio_type     = TUNER_TEA5767,
  .tuner_addr = 0x61,
  .radio_addr = 0x60,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .vmux = 1,
   .amux = LINE1,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
   .gpio = 0x43000,
  },
 },
 [SAA7134_BOARD_CINERGY_HT_PCI] = {
  .name           = "Terratec Cinergy HT PCI",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 0,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 6,
   .amux   = LINE1,
  }},
 },
 [SAA7134_BOARD_PHILIPS_TIGER_S] = {
  .name           = "Philips Tiger - S Reference design",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask       = 0x0200000,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = TV,
   .gpio   = 0x0200000,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_M102] = {
  .name           = "Avermedia M102",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 1<<21,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 6,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_ASUS_P7131_4871] = {
  .name           = "ASUS P7131 4871",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask       = 0x0200000,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
   .gpio   = 0x0200000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
   .gpio = 0x0200000,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 0,
   .amux = LINE2,
   .gpio = 0x0200000,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
   .gpio = 0x0200000,
  }},
 },
 [SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA] = {
  .name           = "ASUSTeK P7131 Hybrid",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  .gpiomask = 1 << 21,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x0000000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
   .gpio = 0x0200000,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 0,
   .amux = LINE2,
   .gpio = 0x0200000,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
   .gpio = 0x0200000,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x0200000,
  },
 },
 [SAA7134_BOARD_ASUSTeK_P7131_ANALOG] = {
        .name           = "ASUSTeK P7131 Analog",
        .audio_clock    = 0x00187de7,
        .tuner_type     = TUNER_PHILIPS_TDA8290,
        .radio_type     = UNSET,
        .tuner_addr     = ADDR_UNSET,
        .radio_addr     = ADDR_UNSET,
        .gpiomask       = 1 << 21,
        .inputs         = {{
         .type = SAA7134_INPUT_TV,
         .vmux = 1,
         .amux = TV,
         .gpio = 0x0000000,
        }, {
         .type = SAA7134_INPUT_COMPOSITE1,
         .vmux = 3,
         .amux = LINE2,
        }, {
         .type = SAA7134_INPUT_COMPOSITE2,
         .vmux = 0,
         .amux = LINE2,
        }, {
         .type = SAA7134_INPUT_SVIDEO,
         .vmux = 8,
         .amux = LINE2,
        } },
        .radio = {
         .type = SAA7134_INPUT_RADIO,
         .amux = TV,
         .gpio = 0x0200000,
        },
 },
 [SAA7134_BOARD_SABRENT_TV_PCB05] = {
  .name           = "Sabrent PCMCIA TV-PCB05",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 0,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
  },
 },
 [SAA7134_BOARD_10MOONSTVMASTER3] = {
  /* Tony Wan <aloha_cn@hotmail.com> */
  .name           = "10MOONS TM300 TV Card",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .gpiomask       = 0x7000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
   .gpio = 0x0000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x2000,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0x2000,
  }},
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE2,
   .gpio = 0x3000,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_SUPER_007] = {
  .name           = "Avermedia Super 007",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_OFF },
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_TV, /* FIXME: analog tv untested */
   .vmux   = 1,
   .amux   = TV,
  }},
 },
 [SAA7134_BOARD_AVERMEDIA_M135A] = {
  .name           = "Avermedia PCI pure analog (M135A)",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  .gpiomask       = 0x020200000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x00200000,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio = 0x01,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_M733A] = {
  .name  = "Avermedia PCI M733A",
  .audio_clock = 0x00187de7,
  .tuner_type = TUNER_PHILIPS_TDA8290,
  .radio_type = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda829x_conf = { .lna_cfg = TDA8290_LNA_OFF },
  .gpiomask = 0x020200000,
  .inputs  = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x00200000,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio = 0x01,
  },
 },
 [SAA7134_BOARD_BEHOLD_401] = {
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 401",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FQ1216ME,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 0x00008000,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = LINE2,
  }},
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
  },
 },
 [SAA7134_BOARD_BEHOLD_403] = {
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 403",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FQ1216ME,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 0x00008000,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 1,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_BEHOLD_403FM] = {
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 403 FM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FQ1216ME,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 0x00008000,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 1,
   .amux   = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_405] = {
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 405",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x00008000,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = LINE2,
  }},
 },
 [SAA7134_BOARD_BEHOLD_405FM] = {
  /* Sergey <skiv@orel.ru> */
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 405 FM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x00008000,
  .inputs         = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = LINE2,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_407] = {
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name  = "Beholder BeholdTV 407",
  .audio_clock = 0x00187de7,
  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf = TDA9887_PRESENT,
  .gpiomask       = 0x00008000,
  .inputs = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0xc0c000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
   .gpio = 0xc0c000,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
   .gpio = 0xc0c000,
  }},
 },
 [SAA7134_BOARD_BEHOLD_407FM] = {
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name  = "Beholder BeholdTV 407 FM",
  .audio_clock = 0x00187de7,
  .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf = TDA9887_PRESENT,
  .gpiomask       = 0x00008000,
  .inputs = {{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0xc0c000,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
   .gpio = 0xc0c000,
  },{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
   .gpio = 0xc0c000,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0xc0c000,
  },
 },
 [SAA7134_BOARD_BEHOLD_409] = {
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 409",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x00008000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
 },
 [SAA7134_BOARD_BEHOLD_505FM] = {
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 505 FM",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x00008000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
  },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_505RDS_MK5] = {
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 505 RDS",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_FM1216MK5,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .rds_addr = 0x10,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x00008000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = LINE2,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
  },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_507_9FM] = {
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 507 FM / BeholdTV 509 FM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x00008000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
   .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_507RDS_MK5] = {
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 507 RDS",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216MK5,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .rds_addr = 0x10,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x00008000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
   .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_507RDS_MK3] = {
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 507 RDS",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .rds_addr = 0x10,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x00008000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
   .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM] = {
  /*       Beholder Intl. Ltd. 2008      */
  /* Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV Columbus TV/FM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_ALPS_TSBE5_PAL,
  .radio_type     = TUNER_TEA5767,
  .tuner_addr     = 0xc2 >> 1,
  .radio_addr     = 0xc0 >> 1,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x000A8004,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
   .gpio = 0x000A8004,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
   .gpio = 0x000A8000,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0x000A8000,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x000A8000,
  },
 },
 [SAA7134_BOARD_BEHOLD_607FM_MK3] = {
  /* Andrey Melnikoff <temnota@kmv.ru> */
  .name           = "Beholder BeholdTV 607 FM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_609FM_MK3] = {
  /* Andrey Melnikoff <temnota@kmv.ru> */
  .name           = "Beholder BeholdTV 609 FM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_607FM_MK5] = {
  /* Andrey Melnikoff <temnota@kmv.ru> */
  .name           = "Beholder BeholdTV 607 FM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216MK5,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_609FM_MK5] = {
  /* Andrey Melnikoff <temnota@kmv.ru> */
  .name           = "Beholder BeholdTV 609 FM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216MK5,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_607RDS_MK3] = {
  /* Andrey Melnikoff <temnota@kmv.ru> */
  .name           = "Beholder BeholdTV 607 RDS",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .rds_addr = 0x10,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_609RDS_MK3] = {
  /* Andrey Melnikoff <temnota@kmv.ru> */
  .name           = "Beholder BeholdTV 609 RDS",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .rds_addr = 0x10,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_607RDS_MK5] = {
  /* Andrey Melnikoff <temnota@kmv.ru> */
  .name           = "Beholder BeholdTV 607 RDS",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216MK5,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .rds_addr = 0x10,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_609RDS_MK5] = {
  /* Andrey Melnikoff <temnota@kmv.ru> */
  .name           = "Beholder BeholdTV 609 RDS",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216MK5,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .rds_addr = 0x10,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  },{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  },{
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }},
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_BEHOLD_M6] = {
  /* Igor Kuznetsov <igk@igk.ru> */
  /* Andrey Melnikoff <temnota@kmv.ru> */
  /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
  /* Alexey Osipov <lion-simba@pridelands.ru> */
  .name           = "Beholder BeholdTV M6",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .empress_addr = 0x20,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
  .mpeg  = SAA7134_MPEG_EMPRESS,
  .video_out = CCIR656,
  .vid_port_opts  = (SET_T_CODE_POLARITY_NON_INVERTED |
     SET_CLOCK_NOT_DELAYED |
     SET_CLOCK_INVERTED |
     SET_VSYNC_OFF),
 },
 [SAA7134_BOARD_BEHOLD_M63] = {
  /* Igor Kuznetsov <igk@igk.ru> */
  /* Andrey Melnikoff <temnota@kmv.ru> */
  /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV M63",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .empress_addr = 0x20,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
  .mpeg  = SAA7134_MPEG_EMPRESS,
  .video_out = CCIR656,
  .vid_port_opts  = (SET_T_CODE_POLARITY_NON_INVERTED |
     SET_CLOCK_NOT_DELAYED |
     SET_CLOCK_INVERTED |
     SET_VSYNC_OFF),
 },
 [SAA7134_BOARD_BEHOLD_M6_EXTRA] = {
  /* Igor Kuznetsov <igk@igk.ru> */
  /* Andrey Melnikoff <temnota@kmv.ru> */
  /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
  /* Alexey Osipov <lion-simba@pridelands.ru> */
  .name           = "Beholder BeholdTV M6 Extra",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216MK5,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .rds_addr = 0x10,
  .empress_addr = 0x20,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
  .mpeg  = SAA7134_MPEG_EMPRESS,
  .video_out = CCIR656,
  .vid_port_opts  = (SET_T_CODE_POLARITY_NON_INVERTED |
     SET_CLOCK_NOT_DELAYED |
     SET_CLOCK_INVERTED |
     SET_VSYNC_OFF),
 },
 [SAA7134_BOARD_TWINHAN_DTV_DVB_3056] = {
  .name           = "Twinhan Hybrid DTV-DVB 3056 PCI",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask       = 0x0200000,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,  /* untested */
   .amux   = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = TV,
   .gpio   = 0x0200000,
  },
 },
 [SAA7134_BOARD_GENIUS_TVGO_A11MCE] = {
  /* Adrian Pardini <pardo.bsso@gmail.com> */
  .name  = "Genius TVGO AM11MCE",
  .audio_clock = 0x00200000,
  .tuner_type = TUNER_TNF_5335MF,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 0xf000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE2,
   .gpio = 0x0000,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x2000,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0x2000,
 } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x1000,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE2,
   .gpio = 0x6000,
  },
 },
 [SAA7134_BOARD_PHILIPS_SNAKE] = {
  .name           = "NXP Snake DVB-S reference design",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_ABSENT,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  } },
 },
 [SAA7134_BOARD_CREATIX_CTX953] = {
  .name         = "Medion/Creatix CTX953 Hybrid",
  .audio_clock  = 0x00187de7,
  .tuner_type   = TUNER_PHILIPS_TDA8290,
  .radio_type   = UNSET,
  .tuner_addr   = ADDR_UNSET,
  .radio_addr   = ADDR_UNSET,
  .tda829x_conf = { .lna_cfg = TDA8290_LNA_OFF },
  .mpeg         = SAA7134_MPEG_DVB,
  .inputs       = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
 },
 [SAA7134_BOARD_MSI_TVANYWHERE_AD11] = {
  .name           = "MSI TV@nywhere A/D v1.1",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask       = 0x0200000,
  .inputs = { {
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = TV,
   .gpio   = 0x0200000,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_CARDBUS_506] = {
  .name           = "AVerMedia Cardbus TV/Radio (E506R)",
  .audio_clock    = 0x187de7,
  .tuner_type     = TUNER_XC2028,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
   .mpeg           = SAA7134_MPEG_DVB,
   .inputs         = {{
    .type = SAA7134_INPUT_TV,
    .vmux = 1,
    .amux = TV,
   }, {
    .type = SAA7134_INPUT_COMPOSITE1,
    .vmux = 3,
    .amux = LINE1,
   }, {
    .type = SAA7134_INPUT_SVIDEO,
    .vmux = 8,
    .amux = LINE2,
   } },
   .radio = {
    .type = SAA7134_INPUT_RADIO,
    .amux = TV,
   },
 },
 [SAA7134_BOARD_AVERMEDIA_A16D] = {
  .name           = "AVerMedia Hybrid TV/Radio (A16D)",
  .audio_clock    = 0x187de7,
  .tuner_type     = TUNER_XC2028,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 0,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_M115] = {
  .name           = "Avermedia M115",
  .audio_clock    = 0x187de7,
  .tuner_type     = TUNER_XC2028,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  } },
 },
 [SAA7134_BOARD_VIDEOMATE_T750] = {
  /* John Newbigin <jn@it.swin.edu.au> */
  .name           = "Compro VideoMate T750",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_XC2028,
  .radio_type     = UNSET,
  .tuner_addr = 0x61,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 3,
   .amux   = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 1,
   .amux   = LINE2,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE2,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
  }
 },
 [SAA7134_BOARD_AVERMEDIA_A700_PRO] = {
  /* Matthias Schwarzott <zzam@gentoo.org> */
  .name           = "Avermedia DVB-S Pro A700",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_ABSENT,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = { {
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 6,
   .amux = LINE1,
  } },
 },
 [SAA7134_BOARD_AVERMEDIA_A700_HYBRID] = {
  /* Matthias Schwarzott <zzam@gentoo.org> */
  .name           = "Avermedia DVB-S Hybrid+FM A700",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_XC2028,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux   = 4,
   .amux   = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 6,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
  },
 },
 [SAA7134_BOARD_BEHOLD_H6] = {
  /* Igor Kuznetsov <igk@igk.ru> */
  .name           = "Beholder BeholdTV H6",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FMD1216MEX_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_ASUSTeK_TIGER_3IN1] = {
  .name           = "Asus Tiger 3in1",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  .gpiomask       = 1 << 21,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 0,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x0200000,
  },
 },
 [SAA7134_BOARD_ASUSTeK_PS3_100] = {
  .name           = "Asus My Cinema PS3-100",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
  .gpiomask       = 1 << 21,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 0,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x0200000,
  },
 },
 [SAA7134_BOARD_REAL_ANGEL_220] = {
  .name           = "Zogis Real Angel 220",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_TNF_5335MF,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .gpiomask       = 0x801a8087,
  .inputs = { {
   .type = SAA7134_INPUT_TV,
   .vmux   = 3,
   .amux   = LINE2,
   .gpio   = 0x624000,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 1,
   .amux   = LINE1,
   .gpio   = 0x624000,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 1,
   .amux   = LINE1,
   .gpio   = 0x624000,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = LINE2,
   .gpio   = 0x624001,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
  },
 },
 [SAA7134_BOARD_ADS_INSTANT_HDTV_PCI] = {
  .name           = "ADS Tech Instant HDTV",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TUV1236D,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 4,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
 },
 [SAA7134_BOARD_ASUSTeK_TIGER] = {
  .name           = "Asus Tiger Rev:1.00",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_OFF },
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask       = 0x0200000,
  .inputs = { {
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE2,
  }, {
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux   = 0,
   .amux   = LINE2,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE2,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = TV,
   .gpio   = 0x0200000,
  },
 },
 [SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG] = {
  .name           = "Kworld Plus TV Analog Lite PCI",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_YMEC_TVF_5533MF,
  .radio_type     = TUNER_TEA5767,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = 0x60,
  .gpiomask       = 0x80000700,
  .inputs = { {
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = LINE2,
   .gpio   = 0x100,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
   .gpio   = 0x200,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
   .gpio   = 0x200,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .vmux   = 1,
   .amux   = LINE1,
   .gpio   = 0x100,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .vmux = 8,
   .amux = 2,
  },
 },
 [SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG] = {
  .name           = "Kworld PCI SBTVD/ISDB-T Full-Seg Hybrid",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .tuner_addr     = ADDR_UNSET,
  .radio_type     = UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 0x8e054000,
  .mpeg           = SAA7134_MPEG_DVB,
  .ts_type = SAA7134_MPEG_TS_PARALLEL,
  .inputs = { {
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
#if 0 /* FIXME */
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
   .gpio   = 0x200,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
   .gpio   = 0x200,
#endif
  } },
#if 0
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .vmux   = 1,
   .amux   = LINE1,
   .gpio   = 0x100,
  },
#endif
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .vmux = 0,
   .amux = TV,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS] = {
  .name           = "Avermedia AVerTV GO 007 FM Plus",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 0x00300003,
  /* .gpiomask       = 0x8c240003, */
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x01,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 6,
   .amux = LINE1,
   .gpio = 0x02,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x00300001,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
   .gpio = 0x01,
  },
 },
 [SAA7134_BOARD_AVERMEDIA_STUDIO_507UA] = {
  /* Andy Shevchenko <andy@kernel.org> */
  .name           = "Avermedia AVerTV Studio 507UA",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3, /* Should be MK5 */
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x03,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x00,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x00,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0x00,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
   .gpio = 0x01,
  },
  .mute  = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
   .gpio = 0x00,
  },
 },
 [SAA7134_BOARD_VIDEOMATE_S350] = {
  /* Jan D. Louw <jd.louw@mweb.co.za */
  .name  = "Compro VideoMate S350/S300",
  .audio_clock = 0x00187de7,
  .tuner_type = TUNER_ABSENT,
  .radio_type = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg  = SAA7134_MPEG_DVB,
  .inputs = { {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8/* Not tested */
   .amux = LINE1
  } },
 },
 [SAA7134_BOARD_BEHOLD_X7] = {
  /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV X7",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_XC5000,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 2,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 9,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
  },
 },
 [SAA7134_BOARD_ZOLID_HYBRID_PCI] = {
  .name           = "Zolid Hybrid TV Tuner PCI",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_OFF },
  .mpeg           = SAA7134_MPEG_DVB,
  .ts_type = SAA7134_MPEG_TS_PARALLEL,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  } },
  .radio = { /* untested */
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
  },
 },
 [SAA7134_BOARD_ASUS_EUROPA_HYBRID] = {
  .name           = "Asus Europa Hybrid OEM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TD1316,
  .radio_type     = UNSET,
  .tuner_addr = 0x61,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = { {
   .type = SAA7134_INPUT_TV,
   .vmux   = 3,
   .amux   = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 4,
   .amux   = LINE2,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE2,
  } },
 },
 [SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S] = {
  .name           = "Leadtek Winfast DTV1000S",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = { {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
  } },
 },
 [SAA7134_BOARD_BEHOLD_505RDS_MK3] = {
  /*       Beholder Intl. Ltd. 2008      */
  /*Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 505 RDS",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .rds_addr = 0x10,
  .tda9887_conf   = TDA9887_PRESENT,
  .gpiomask       = 0x00008000,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
  },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE2,
  },
 },
 [SAA7134_BOARD_HAWELL_HW_404M7] = {
  /* Hawell HW-404M7 & Hawell HW-808M7  */
  /* Bogoslovskiy Viktor <bogovic@bk.ru> */
  .name         = "Hawell HW-404M7",
  .audio_clock   = 0x00200000,
  .tuner_type    = UNSET,
  .radio_type    = UNSET,
  .tuner_addr   = ADDR_UNSET,
  .radio_addr   = ADDR_UNSET,
  .gpiomask      = 0x389c00,
  .inputs       = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x01fc00,
  } },
 },
 [SAA7134_BOARD_BEHOLD_H7] = {
  /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV H7",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_XC5000,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .ts_type = SAA7134_MPEG_TS_PARALLEL,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 2,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 9,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
  },
 },
 [SAA7134_BOARD_BEHOLD_A7] = {
  /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV A7",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_XC5000,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 2,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 9,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
  },
 },
 [SAA7134_BOARD_TECHNOTREND_BUDGET_T3000] = {
  .name           = "TechoTrend TT-budget T-3000",
  .tuner_type     = TUNER_PHILIPS_TD1316,
  .audio_clock    = 0x00187de7,
  .radio_type     = UNSET,
  .tuner_addr     = 0x63,
  .radio_addr     = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs = {{
   .type = SAA7134_INPUT_TV,
   .vmux   = 3,
   .amux   = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 0,
   .amux   = LINE2,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE2,
  } },
 },
 [SAA7134_BOARD_VIDEOMATE_M1F] = {
  /* Pavel Osnova <pvosnova@gmail.com> */
  .name           = "Compro VideoMate Vista M1F",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
  .radio_type     = TUNER_TEA5767,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = 0x60,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE1,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = TV,
  },
 },
 [SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2] = {
  /* Timothy Lee <timothy.lee@siriushk.com> */
  .name  = "MagicPro ProHDTV Pro2 DMB-TH/Hybrid",
  .audio_clock = 0x00187de7,
  .tuner_type = TUNER_PHILIPS_TDA8290,
  .radio_type = UNSET,
  .tda829x_conf = { .lna_cfg = TDA8290_LNA_ON_BRIDGE },
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask = 0x02050000,
  .mpeg  = SAA7134_MPEG_DVB,
  .ts_type = SAA7134_MPEG_TS_PARALLEL,
  .inputs  = { {
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
   .gpio   = 0x00050000,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 3,
   .amux   = LINE1,
   .gpio   = 0x00050000,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
   .gpio   = 0x00050000,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = TV,
   .gpio   = 0x00050000,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .vmux   = 0,
   .amux   = TV,
   .gpio   = 0x00050000,
  },
 },
 [SAA7134_BOARD_BEHOLD_501] = {
  /*       Beholder Intl. Ltd. 2010       */
  /* Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 501",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_ABSENT,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .gpiomask       = 0x00008000,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
  },
 },
 [SAA7134_BOARD_BEHOLD_503FM] = {
  /*       Beholder Intl. Ltd. 2010       */
  /* Dmitry Belimov <d.belimov@gmail.com> */
  .name           = "Beholder BeholdTV 503 FM",
  .audio_clock    = 0x00200000,
  .tuner_type     = TUNER_ABSENT,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .gpiomask       = 0x00008000,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 1,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
  },
 },
 [SAA7134_BOARD_SENSORAY811_911] = {
  .name  = "Sensoray 811/911",
  .audio_clock = 0x00200000,
  .tuner_type = TUNER_ABSENT,
  .radio_type = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .inputs  = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux   = 0,
   .amux   = LINE1,
  }, {
   .type = SAA7134_INPUT_COMPOSITE3,
   .vmux   = 2,
   .amux   = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE1,
  } },
 },
 [SAA7134_BOARD_KWORLD_PC150U] = {
  .name           = "Kworld PC150-U",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .gpiomask       = 1 << 21,
  .ts_type = SAA7134_MPEG_TS_PARALLEL,
  .inputs = { {
   .type = SAA7134_INPUT_TV,
   .vmux   = 1,
   .amux   = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux   = 3,
   .amux   = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux   = 8,
   .amux   = LINE2,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux   = TV,
   .gpio = 0x0000000,
  },
 },
 [SAA7134_BOARD_HAWELL_HW_9004V1] = {
  /* Hawell HW-9004V1 */
  /* Vadim Frolov <fralik@gmail.com> */
  .name         = "Hawell HW-9004V1",
  .audio_clock   = 0x00200000,
  .tuner_type    = UNSET,
  .radio_type    = UNSET,
  .tuner_addr   = ADDR_UNSET,
  .radio_addr   = ADDR_UNSET,
  .gpiomask      = 0x618E700,
  .inputs       = {{
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x6010000,
  } },
 },
 [SAA7134_BOARD_AVERMEDIA_A706] = {
  .name           = "AverMedia AverTV Satellite Hybrid+FM A706",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .tda829x_conf   = { .lna_cfg = TDA8290_LNA_OFF,
        .no_i2c_gate = 1,
        .tda18271_std_map = &aver_a706_std_map },
  .gpiomask       = 1 << 11,
  .mpeg           = SAA7134_MPEG_DVB,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 4,
   .amux = LINE1,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x0000800,
  },
 },
 [SAA7134_BOARD_WIS_VOYAGER] = {
  .name           = "WIS Voyager or compatible",
  .audio_clock    = 0x00200000,
  .tuner_type = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .mpeg  = SAA7134_MPEG_GO7007,
  .inputs  = { {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_TV,
   .vmux = 3,
   .amux = TV,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 6,
  .amux = LINE1,
  } },
 },
 [SAA7134_BOARD_AVERMEDIA_505] = {
  /* much like the "studio" version but without radio
* and another tuner (dbaryshkov@gmail.com) */

  .name           = "AverMedia AverTV/505",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_FQ1216ME,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .tda9887_conf   = TDA9887_PRESENT,
  .inputs         = {{
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 0,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_COMPOSITE2,
   .vmux = 3,
   .amux = LINE2,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
  } },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
  },
 },
 [SAA7134_BOARD_LEADTEK_WINFAST_TV2100_FM] = {
  .name           = "Leadtek Winfast TV2100 FM",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_TNF_5335MF,
  .radio_type     = UNSET,
  .tuner_addr = ADDR_UNSET,
  .radio_addr = ADDR_UNSET,
  .gpiomask       = 0x0d,
  .inputs         = {{
   .type = SAA7134_INPUT_TV_MONO,
   .vmux = 1,
   .amux = LINE1,
   .gpio = 0x00,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
   .gpio = 0x08,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
   .gpio = 0x08,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = LINE1,
   .gpio = 0x04,
  },
  .mute = {
   .type = SAA7134_INPUT_MUTE,
   .amux = LINE1,
   .gpio = 0x08,
  },
 },
 [SAA7134_BOARD_SNAZIO_TVPVR_PRO] = {
  .name           = "SnaZio* TVPVR PRO",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .gpiomask       = 1 << 21,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x0000000,
  }, {
   .type = SAA7134_INPUT_COMPOSITE1,
   .vmux = 3,
   .amux = LINE2,
   .gpio = 0x0000000,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE2,
   .gpio = 0x0000000,
  } },
  .radio = {
   .type = SAA7134_INPUT_RADIO,
   .amux = TV,
   .gpio = 0x0200000,
  },
 },
 [SAA7134_BOARD_LEADTEK_WINFAST_HDTV200_H] = {
  .name           = "Leadtek Winfast HDTV200 H",
  .audio_clock    = 0x00187de7,
  .tuner_type     = TUNER_PHILIPS_TDA8290,
  .radio_type     = UNSET,
  .tuner_addr     = ADDR_UNSET,
  .radio_addr     = ADDR_UNSET,
  .mpeg           = SAA7134_MPEG_DVB,
  .ts_type        = SAA7134_MPEG_TS_PARALLEL,
  .gpiomask       = 0x00200700,
  .inputs         = { {
   .type = SAA7134_INPUT_TV,
   .vmux = 1,
   .amux = TV,
   .gpio = 0x00000300,
  }, {
   .type = SAA7134_INPUT_COMPOSITE,
   .vmux = 3,
   .amux = LINE1,
   .gpio = 0x00200300,
  }, {
   .type = SAA7134_INPUT_SVIDEO,
   .vmux = 8,
   .amux = LINE1,
   .gpio = 0x00200300,
  } },
 },
};

const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);

/* ------------------------------------------------------------------ */
/* PCI ids + subsystem IDs                                            */

struct pci_device_id saa7134_pci_tbl[] = {
 {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = PCI_VENDOR_ID_PHILIPS,
  .subdevice    = 0x2001,
  .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = PCI_VENDOR_ID_PHILIPS,
  .subdevice    = 0x2001,
  .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = PCI_VENDOR_ID_PHILIPS,
  .subdevice    = 0x6752,
  .driver_data  = SAA7134_BOARD_EMPRESS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1131,
  .subdevice    = 0x4e85,
  .driver_data  = SAA7134_BOARD_MONSTERTV,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x153b,
  .subdevice    = 0x1142,
  .driver_data  = SAA7134_BOARD_CINERGY400,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x153b,
  .subdevice    = 0x1143,
  .driver_data  = SAA7134_BOARD_CINERGY600,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x153b,
  .subdevice    = 0x1158,
  .driver_data  = SAA7134_BOARD_CINERGY600_MK3,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x153b,
  .subdevice    = 0x1162,
  .driver_data  = SAA7134_BOARD_CINERGY400_CARDBUS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x5169,
  .subdevice    = 0x0138,
  .driver_data  = SAA7134_BOARD_FLYVIDEO3000_NTSC,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x5168,
  .subdevice    = 0x0138,
  .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x4e42,    /* "Typhoon PCI Capture TV Card" Art.No. 50673 */
  .subdevice    = 0x0138,
  .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x5168,
  .subdevice    = 0x0138,
  .driver_data  = SAA7134_BOARD_FLYVIDEO2000,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x4e42,  /* Typhoon */
  .subdevice    = 0x0138,  /* LifeView FlyTV Prime30 OEM */
  .driver_data  = SAA7134_BOARD_FLYVIDEO2000,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5168,
  .subdevice    = 0x0212, /* minipci, LR212 */
  .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x14c0,
  .subdevice    = 0x1212, /* minipci, LR1212 */
  .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI2,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x4e42,
  .subdevice    = 0x0212, /* OEM minipci, LR212 */
  .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5168, /* Animation Technologies (LifeView) */
  .subdevice    = 0x0214, /* Standard PCI, LR214 Rev E and earlier (SAA7135) */
  .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5168, /* Animation Technologies (LifeView) */
  .subdevice    = 0x5214, /* Standard PCI, LR214 Rev F onwards (SAA7131) */
  .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1489, /* KYE */
  .subdevice    = 0x0214, /* Genius VideoWonder ProTV */
  .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM, /* is an LR214WF actually */
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x16be,
  .subdevice    = 0x0003,
  .driver_data  = SAA7134_BOARD_MD7134,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x16be, /* CTX946 analog TV, HW mpeg, DVB-T */
  .subdevice    = 0x5000, /* only analog TV and DVB-T for now */
  .driver_data  = SAA7134_BOARD_MD7134,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x1048,
  .subdevice    = 0x226b,
  .driver_data  = SAA7134_BOARD_ELSA,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x1048,
  .subdevice    = 0x226a,
  .driver_data  = SAA7134_BOARD_ELSA_500TV,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x1048,
  .subdevice    = 0x226c,
  .driver_data  = SAA7134_BOARD_ELSA_700TV,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = PCI_VENDOR_ID_ASUSTEK,
  .subdevice    = 0x4842,
  .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = PCI_VENDOR_ID_ASUSTEK,
  .subdevice    = 0x4845,
  .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7135,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = PCI_VENDOR_ID_ASUSTEK,
  .subdevice    = 0x4830,
  .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = PCI_VENDOR_ID_ASUSTEK,
  .subdevice    = 0x4843,
  .driver_data  = SAA7134_BOARD_ASUSTEK_TVFM7133,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = PCI_VENDOR_ID_ASUSTEK,
  .subdevice    = 0x4840,
  .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = PCI_VENDOR_ID_PHILIPS,
  .subdevice    = 0xfe01,
  .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1894,
  .subdevice    = 0xfe01,
  .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1894,
  .subdevice    = 0xa006,
  .driver_data  = SAA7134_BOARD_TVSTATION_DVR,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1131,
  .subdevice    = 0x7133,
  .driver_data  = SAA7134_BOARD_VA1000POWER,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = PCI_VENDOR_ID_PHILIPS,
  .subdevice    = 0x2001,
  .driver_data  = SAA7134_BOARD_10MOONSTVMASTER,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x185b,
  .subdevice    = 0xc100,
  .driver_data  = SAA7134_BOARD_VIDEOMATE_TV,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x185b,
  .subdevice    = 0xc100,
  .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = PCI_VENDOR_ID_MATROX,
  .subdevice    = 0x48d0,
  .driver_data  = SAA7134_BOARD_CRONOS_PLUS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xa70b,
  .driver_data  = SAA7134_BOARD_MD2819,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xa7a1,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_A700_PRO,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xa7a2,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_A700_HYBRID,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0x2115,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_305,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xa115,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_505,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0x2108,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_305,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0x10ff,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
 },{
  /* AVerMedia CardBus */
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xd6ee,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_CARDBUS,
 },{
  /* AVerMedia CardBus */
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xb7e9,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_CARDBUS_501,
 }, {
  /* TransGear 3000TV */
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0x050c,
  .driver_data  = SAA7134_BOARD_TG3000TV,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x11bd,
  .subdevice    = 0x002b,
  .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x11bd,
  .subdevice    = 0x002d,
  .driver_data  = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1019,
  .subdevice    = 0x4cb4,
  .driver_data  = SAA7134_BOARD_ECS_TVP3XP,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1019,
  .subdevice    = 0x4cb5,
  .driver_data  = SAA7134_BOARD_ECS_TVP3XP_4CB5,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1019,
  .subdevice    = 0x4cb6,
  .driver_data  = SAA7134_BOARD_ECS_TVP3XP_4CB6,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x12ab,
  .subdevice    = 0x0800,
  .driver_data  = SAA7134_BOARD_UPMOST_PURPLE_TV,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x153b,
  .subdevice    = 0x1152,
  .driver_data  = SAA7134_BOARD_CINERGY200,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x185b,
  .subdevice    = 0xc100,
  .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_PVR,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0x9715,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_307,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xa70a,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_307,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x185b,
  .subdevice    = 0xc200,
  .driver_data  = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1540,
  .subdevice    = 0x9524,
  .driver_data  = SAA7134_BOARD_PROVIDEO_PV952,

 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5168,
  .subdevice    = 0x0502,                /* Cardbus version */
  .driver_data  = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5168,
  .subdevice    = 0x0306,                /* PCI version */
  .driver_data  = SAA7134_BOARD_FLYDVBTDUO,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xf31f,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_GO_007_FM,

 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xf11d,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_M135A,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0x4155,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_M733A,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0x4255,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_M733A,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = PCI_VENDOR_ID_PHILIPS,
  .subdevice    = 0x2004,
  .driver_data  = SAA7134_BOARD_PHILIPS_TOUGH,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1421,
  .subdevice    = 0x0350,  /* PCI version */
  .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1421,
  .subdevice    = 0x0351,  /* PCI version, new revision */
  .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1421,
  .subdevice    = 0x0370,  /* cardbus version */
  .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1421,
  .subdevice    = 0x1370,        /* cardbus version */
  .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,

 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x4e42,  /* Typhoon */
  .subdevice    = 0x0502,  /* LifeView LR502 OEM */
  .driver_data  = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1043,
  .subdevice    = 0x0210,  /* mini pci NTSC version */
  .driver_data  = SAA7134_BOARD_FLYTV_DIGIMATRIX,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1043,
  .subdevice    = 0x0210,  /* mini pci PAL/SECAM version */
  .driver_data  = SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV,

 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0000, /* It shouldn't break anything, since subdevice id seems unique */
  .subdevice    = 0x4091,
  .driver_data  = SAA7134_BOARD_BEHOLD_409FM,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5456, /* GoTView */
  .subdevice    = 0x7135,
  .driver_data  = SAA7134_BOARD_GOTVIEW_7135,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = PCI_VENDOR_ID_PHILIPS,
  .subdevice    = 0x2004,
  .driver_data  = SAA7134_BOARD_PHILIPS_EUROPA,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x185b,
  .subdevice    = 0xc900,
  .driver_data  = SAA7134_BOARD_VIDEOMATE_DVBT_300,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x185b,
  .subdevice    = 0xc901,
  .driver_data  = SAA7134_BOARD_VIDEOMATE_DVBT_200,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1435,
  .subdevice    = 0x7350,
  .driver_data  = SAA7134_BOARD_RTD_VFG7350,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1435,
  .subdevice    = 0x7330,
  .driver_data  = SAA7134_BOARD_RTD_VFG7330,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461,
  .subdevice    = 0x1044,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1131,
  .subdevice    = 0x4ee9,
  .driver_data  = SAA7134_BOARD_MONSTERTV_MOBILE,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x11bd,
  .subdevice    = 0x002e,
  .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_110i,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1043,
  .subdevice    = 0x4862,
  .driver_data  = SAA7134_BOARD_ASUSTeK_P7131_DUAL,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = PCI_VENDOR_ID_PHILIPS,
  .subdevice    = 0x2018,
  .driver_data  = SAA7134_BOARD_PHILIPS_TIGER,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1462,
  .subdevice    = 0x6231, /* tda8275a, ks003 IR */
  .driver_data  = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1462,
  .subdevice    = 0x8624, /* tda8275, ks003 IR */
  .driver_data  = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x153b,
  .subdevice    = 0x1160,
  .driver_data  = SAA7134_BOARD_CINERGY250PCI,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA 7131E */
  .subvendor    = 0x5168,
  .subdevice    = 0x0319,
  .driver_data  = SAA7134_BOARD_FLYDVB_TRIO,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1461,
  .subdevice    = 0x2c05,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_777,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x5168,
  .subdevice    = 0x0301,
  .driver_data  = SAA7134_BOARD_FLYDVBT_LR301,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0331,
  .subdevice    = 0x1421,
  .driver_data  = SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x17de,
  .subdevice    = 0x7201,
  .driver_data  = SAA7134_BOARD_TEVION_DVBT_220RF,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x17de,
  .subdevice    = 0x7250,
  .driver_data  = SAA7134_BOARD_KWORLD_DVBT_210,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
  .subvendor    = 0x17de,
  .subdevice    = 0x7350,
  .driver_data  = SAA7134_BOARD_KWORLD_ATSC110,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
  .subvendor    = 0x17de,
  .subdevice    = 0x7352,
  .driver_data  = SAA7134_BOARD_KWORLD_ATSC110, /* ATSC 115 */
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
  .subvendor    = 0x17de,
  .subdevice    = 0xa134,
  .driver_data  = SAA7134_BOARD_KWORLD_PC150U,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1461,
  .subdevice    = 0x7360,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_A169_B,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1461,
  .subdevice    = 0x6360,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_A169_B1,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x16be,
  .subdevice    = 0x0005,
  .driver_data  = SAA7134_BOARD_MD7134_BRIDGE_2,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x5168,
  .subdevice    = 0x0300,
  .driver_data  = SAA7134_BOARD_FLYDVBS_LR300,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x4e42,
  .subdevice    = 0x0300,/* LR300 */
  .driver_data  = SAA7134_BOARD_FLYDVBS_LR300,
 },{
  .vendor = PCI_VENDOR_ID_PHILIPS,
  .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor = 0x1489,
  .subdevice = 0x0301,
  .driver_data = SAA7134_BOARD_FLYDVBT_LR301,
 },{
  .vendor = PCI_VENDOR_ID_PHILIPS,
  .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor = 0x5168, /* Animation Technologies (LifeView) */
  .subdevice = 0x0304,
  .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5168,
  .subdevice    = 0x3306,
  .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5168,
  .subdevice    = 0x3502,  /* what's the difference to 0x3306 ?*/
  .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5168,
  .subdevice    = 0x3307, /* FlyDVB-T Hybrid Mini PCI */
  .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x16be,
  .subdevice    = 0x0007,
  .driver_data  = SAA7134_BOARD_MEDION_MD8800_QUADRO,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x16be,
  .subdevice    = 0x0008,
  .driver_data  = SAA7134_BOARD_MEDION_MD8800_QUADRO,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x16be,
  .subdevice    = 0x000d, /* triple CTX948_V1.1.1 */
  .driver_data  = SAA7134_BOARD_MEDION_MD8800_QUADRO,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461,
  .subdevice    = 0x2c05,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_777,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1489,
  .subdevice    = 0x0502,                /* Cardbus version */
  .driver_data  = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x0919, /* Philips Proteus PRO 2309 */
  .subdevice    = 0x2003,
  .driver_data  = SAA7134_BOARD_PROTEUS_2309,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1461,
  .subdevice    = 0x2c00,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_A16AR,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1043,
  .subdevice    = 0x4860,
  .driver_data  = SAA7134_BOARD_ASUS_EUROPA2_HYBRID,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x11bd,
  .subdevice    = 0x002f,
  .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_310i,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0x9715,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_507,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xa11b,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_507UA,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1043,
  .subdevice    = 0x4876,
  .driver_data  = SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0070,
  .subdevice    = 0x6700,
  .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0070,
  .subdevice    = 0x6701,
  .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0070,
  .subdevice    = 0x6702,
  .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0070,
  .subdevice    = 0x6703,
  .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0070,
  .subdevice    = 0x6704,
  .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0070,
  .subdevice    = 0x6705,
  .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0070,
  .subdevice    = 0x6706,
  .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1150,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0070,
  .subdevice    = 0x6707,
  .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1120,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0070,
  .subdevice    = 0x6708,
  .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1150,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0070,
  .subdevice    = 0x6709,
  .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1120,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0070,
  .subdevice    = 0x670a,
  .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1120,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x153b,
  .subdevice    = 0x1172,
  .driver_data  = SAA7134_BOARD_CINERGY_HT_PCMCIA,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = PCI_VENDOR_ID_PHILIPS,
  .subdevice    = 0x2342,
  .driver_data  = SAA7134_BOARD_ENCORE_ENLTV,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x1131,
  .subdevice    = 0x2341,
  .driver_data  = SAA7134_BOARD_ENCORE_ENLTV,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x3016,
  .subdevice    = 0x2344,
  .driver_data  = SAA7134_BOARD_ENCORE_ENLTV,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x1131,
  .subdevice    = 0x230f,
  .driver_data  = SAA7134_BOARD_ENCORE_ENLTV_FM,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x1a7f,
  .subdevice    = 0x2008,
  .driver_data  = SAA7134_BOARD_ENCORE_ENLTV_FM53,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1a7f,
  .subdevice    = 0x2108,
  .driver_data  = SAA7134_BOARD_ENCORE_ENLTV_FM3,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x153b,
  .subdevice    = 0x1175,
  .driver_data  = SAA7134_BOARD_CINERGY_HT_PCI,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xf31e,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_M102,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x4E42,         /* MSI */
  .subdevice    = 0x0306,         /* TV@nywhere DUO */
  .driver_data  = SAA7134_BOARD_FLYDVBTDUO,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1043,
  .subdevice    = 0x4871,
  .driver_data  = SAA7134_BOARD_ASUS_P7131_4871,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1043,
  .subdevice    = 0x4857,  /* REV:1.00 */
  .driver_data  = SAA7134_BOARD_ASUSTeK_TIGER,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x0919, /* SinoVideo PCI 2309 Proteus (7134) */
  .subdevice    = 0x2003, /* OEM cardbus */
  .driver_data  = SAA7134_BOARD_SABRENT_TV_PCB05,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = PCI_VENDOR_ID_PHILIPS,
  .subdevice    = 0x2304,
  .driver_data  = SAA7134_BOARD_10MOONSTVMASTER3,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xf01d, /* AVerTV DVB-T Super 007 */
  .driver_data  = SAA7134_BOARD_AVERMEDIA_SUPER_007,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x0000,
  .subdevice    = 0x4016,
  .driver_data  = SAA7134_BOARD_BEHOLD_401,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x0000,
  .subdevice    = 0x4036,
  .driver_data  = SAA7134_BOARD_BEHOLD_403,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x0000,
  .subdevice    = 0x4037,
  .driver_data  = SAA7134_BOARD_BEHOLD_403FM,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x0000,
  .subdevice    = 0x4050,
  .driver_data  = SAA7134_BOARD_BEHOLD_405,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x0000,
  .subdevice    = 0x4051,
  .driver_data  = SAA7134_BOARD_BEHOLD_405FM,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x0000,
  .subdevice    = 0x4070,
  .driver_data  = SAA7134_BOARD_BEHOLD_407,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x0000,
  .subdevice    = 0x4071,
  .driver_data  = SAA7134_BOARD_BEHOLD_407FM,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0000,
  .subdevice    = 0x4090,
  .driver_data  = SAA7134_BOARD_BEHOLD_409,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x0000,
  .subdevice    = 0x505B,
  .driver_data  = SAA7134_BOARD_BEHOLD_505RDS_MK5,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x0000,
  .subdevice    = 0x5051,
  .driver_data  = SAA7134_BOARD_BEHOLD_505RDS_MK3,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x5ace,
  .subdevice    = 0x5050,
  .driver_data  = SAA7134_BOARD_BEHOLD_505FM,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0000,
  .subdevice    = 0x5071,
  .driver_data  = SAA7134_BOARD_BEHOLD_507RDS_MK3,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0000,
  .subdevice    = 0x507B,
  .driver_data  = SAA7134_BOARD_BEHOLD_507RDS_MK5,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x5ace,
  .subdevice    = 0x5070,
  .driver_data  = SAA7134_BOARD_BEHOLD_507_9FM,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5ace,
  .subdevice    = 0x5090,
  .driver_data  = SAA7134_BOARD_BEHOLD_507_9FM,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x0000,
  .subdevice    = 0x5201,
  .driver_data  = SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x5ace,
  .subdevice    = 0x6070,
  .driver_data  = SAA7134_BOARD_BEHOLD_607FM_MK3,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x5ace,
  .subdevice    = 0x6071,
  .driver_data  = SAA7134_BOARD_BEHOLD_607FM_MK5,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x5ace,
  .subdevice    = 0x6072,
  .driver_data  = SAA7134_BOARD_BEHOLD_607RDS_MK3,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x5ace,
  .subdevice    = 0x6073,
  .driver_data  = SAA7134_BOARD_BEHOLD_607RDS_MK5,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5ace,
  .subdevice    = 0x6090,
  .driver_data  = SAA7134_BOARD_BEHOLD_609FM_MK3,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5ace,
  .subdevice    = 0x6091,
  .driver_data  = SAA7134_BOARD_BEHOLD_609FM_MK5,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5ace,
  .subdevice    = 0x6092,
  .driver_data  = SAA7134_BOARD_BEHOLD_609RDS_MK3,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5ace,
  .subdevice    = 0x6093,
  .driver_data  = SAA7134_BOARD_BEHOLD_609RDS_MK5,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5ace,
  .subdevice    = 0x6190,
  .driver_data  = SAA7134_BOARD_BEHOLD_M6,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5ace,
  .subdevice    = 0x6193,
  .driver_data  = SAA7134_BOARD_BEHOLD_M6_EXTRA,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5ace,
  .subdevice    = 0x6191,
  .driver_data  = SAA7134_BOARD_BEHOLD_M63,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x4e42,
  .subdevice    = 0x3502,
  .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1822, /*Twinhan Technology Co. Ltd*/
  .subdevice    = 0x0022,
  .driver_data  = SAA7134_BOARD_TWINHAN_DTV_DVB_3056,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x16be,
  .subdevice    = 0x0010, /* Medion version CTX953_V.1.4.3 */
  .driver_data  = SAA7134_BOARD_CREATIX_CTX953,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1462, /* MSI */
  .subdevice    = 0x8625, /* TV@nywhere A/D v1.1 */
  .driver_data  = SAA7134_BOARD_MSI_TVANYWHERE_AD11,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xf436,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_CARDBUS_506,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xf936,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_A16D,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xa836,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_M115,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x185b,
  .subdevice    = 0xc900,
  .driver_data  = SAA7134_BOARD_VIDEOMATE_T750,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
  .subvendor    = 0x1421,
  .subdevice    = 0x0380,
  .driver_data  = SAA7134_BOARD_ADS_INSTANT_HDTV_PCI,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5169,
  .subdevice    = 0x1502,
  .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5ace,
  .subdevice    = 0x6290,
  .driver_data  = SAA7134_BOARD_BEHOLD_H6,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xf636,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_M103,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xf736,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_M103,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1043,
  .subdevice    = 0x4878, /* REV:1.02G */
  .driver_data  = SAA7134_BOARD_ASUSTeK_TIGER_3IN1,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1043,
  .subdevice    = 0x48cd,
  .driver_data  = SAA7134_BOARD_ASUSTeK_PS3_100,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x17de,
  .subdevice    = 0x7128,
  .driver_data  = SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x17de,
  .subdevice    = 0xb136,
  .driver_data  = SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xf31d,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x185b,
  .subdevice    = 0xc900,
  .driver_data  = SAA7134_BOARD_VIDEOMATE_S350,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5ace, /* Beholder Intl. Ltd. */
  .subdevice    = 0x7595,
  .driver_data  = SAA7134_BOARD_BEHOLD_X7,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x19d1, /* RoverMedia */
  .subdevice    = 0x0138, /* LifeView FlyTV Prime30 OEM */
  .driver_data  = SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = PCI_VENDOR_ID_PHILIPS,
  .subdevice    = 0x2004,
  .driver_data  = SAA7134_BOARD_ZOLID_HYBRID_PCI,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x1043,
  .subdevice    = 0x4847,
  .driver_data  = SAA7134_BOARD_ASUS_EUROPA_HYBRID,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x107d,
  .subdevice    = 0x6655,
  .driver_data  = SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x13c2,
  .subdevice    = 0x2804,
  .driver_data  = SAA7134_BOARD_TECHNOTREND_BUDGET_T3000,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5ace, /* Beholder Intl. Ltd. */
  .subdevice    = 0x7190,
  .driver_data  = SAA7134_BOARD_BEHOLD_H7,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5ace, /* Beholder Intl. Ltd. */
  .subdevice    = 0x7090,
  .driver_data  = SAA7134_BOARD_BEHOLD_A7,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7135,
  .subvendor    = 0x185b,
  .subdevice    = 0xc900,
  .driver_data  = SAA7134_BOARD_VIDEOMATE_M1F,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x5ace,
  .subdevice    = 0x5030,
  .driver_data  = SAA7134_BOARD_BEHOLD_503FM,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x5ace,
  .subdevice    = 0x5010,
  .driver_data  = SAA7134_BOARD_BEHOLD_501,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = 0x17de,
  .subdevice    = 0xd136,
  .driver_data  = SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x6000,
  .subdevice    = 0x0811,
  .driver_data  = SAA7134_BOARD_SENSORAY811_911,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x6000,
  .subdevice    = 0x0911,
  .driver_data  = SAA7134_BOARD_SENSORAY811_911,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0x2055, /* AverTV Satellite Hybrid+FM A706 */
  .driver_data  = SAA7134_BOARD_AVERMEDIA_A706,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1905, /* WIS */
  .subdevice    = 0x7007,
  .driver_data  = SAA7134_BOARD_WIS_VOYAGER,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x1461, /* Avermedia Technologies Inc */
  .subdevice    = 0xa10a,
  .driver_data  = SAA7134_BOARD_AVERMEDIA_505,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = 0x107d,
  .subdevice    = 0x6f3a,
  .driver_data  = SAA7134_BOARD_LEADTEK_WINFAST_TV2100_FM,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x1779, /* V One Multimedia PTE Ltd */
  .subdevice    = 0x13cf,
  .driver_data  = SAA7134_BOARD_SNAZIO_TVPVR_PRO,
 }, {
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = 0x107d,
  .subdevice    = 0x6f2e,
  .driver_data  = SAA7134_BOARD_LEADTEK_WINFAST_HDTV200_H,
 }, {
  /* --- boards without eeprom + subsystem ID --- */
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = PCI_VENDOR_ID_PHILIPS,
  .subdevice    = 0,
  .driver_data  = SAA7134_BOARD_NOAUTO,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = PCI_VENDOR_ID_PHILIPS,
  .subdevice    = 0,
  .driver_data  = SAA7134_BOARD_NOAUTO,
 },{
  /* --- default catch --- */
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
  .subvendor    = PCI_ANY_ID,
  .subdevice    = PCI_ANY_ID,
  .driver_data  = SAA7134_BOARD_UNKNOWN,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
  .subvendor    = PCI_ANY_ID,
  .subdevice    = PCI_ANY_ID,
  .driver_data  = SAA7134_BOARD_UNKNOWN,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
  .subvendor    = PCI_ANY_ID,
  .subdevice    = PCI_ANY_ID,
  .driver_data  = SAA7134_BOARD_UNKNOWN,
 },{
  .vendor       = PCI_VENDOR_ID_PHILIPS,
  .device       = PCI_DEVICE_ID_PHILIPS_SAA7135,
  .subvendor    = PCI_ANY_ID,
  .subdevice    = PCI_ANY_ID,
  .driver_data  = SAA7134_BOARD_UNKNOWN,
 },{
  /* --- end of list --- */
 }
};
MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);

/* ----------------------------------------------------------- */
/* flyvideo tweaks                                             */


static void board_flyvideo(struct saa7134_dev *dev)
{
 pr_warn("%s: there are different flyvideo cards with different tuners\n"
  "%s: out there, you might have to use the tuner=<nr> insmod\n"
  "%s: option to override the default value.\n",
  dev->name, dev->name, dev->name);
}

static int saa7134_xc2028_callback(struct saa7134_dev *dev,
       int command, int arg)
{
 switch (command) {
 case XC2028_TUNER_RESET:
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x00008000, 0x00000000);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x00008000, 0x00008000);
  switch (dev->board) {
  case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
  case SAA7134_BOARD_AVERMEDIA_M103:
   saa7134_set_gpio(dev, 230);
   msleep(10);
   saa7134_set_gpio(dev, 231);
  break;
  case SAA7134_BOARD_AVERMEDIA_A16D:
   saa7134_set_gpio(dev, 210);
   msleep(10);
   saa7134_set_gpio(dev, 211);
  break;
  case SAA7134_BOARD_AVERMEDIA_A700_HYBRID:
   saa7134_set_gpio(dev, 180);
   msleep(10);
   saa7134_set_gpio(dev, 181);
  break;
  case SAA7134_BOARD_VIDEOMATE_T750:
   saa7134_set_gpio(dev, 200);
   msleep(10);
   saa7134_set_gpio(dev, 201);
  break;
  }
  return 0;
 }
 return -EINVAL;
}

static int saa7134_xc5000_callback(struct saa7134_dev *dev,
       int command, int arg)
{
 switch (dev->board) {
 case SAA7134_BOARD_BEHOLD_X7:
 case SAA7134_BOARD_BEHOLD_H7:
 case SAA7134_BOARD_BEHOLD_A7:
  if (command == XC5000_TUNER_RESET) {
  /* Down and UP pheripherial RESET pin for reset all chips */
   saa_writeb(SAA7134_SPECIAL_MODE, 0x00);
   msleep(10);
   saa_writeb(SAA7134_SPECIAL_MODE, 0x01);
   msleep(10);
  }
  break;
 default:
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 20x06e20000, 0x06e20000);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x06a20000, 0x06a20000);
  saa_andorl(SAA7133_ANALOG_IO_SELECT >> 20x02, 0x02);
  saa_andorl(SAA7134_ANALOG_IN_CTRL1 >> 20x81, 0x81);
  saa_andorl(SAA7134_AUDIO_CLOCK0 >> 20x03187de7, 0x03187de7);
  saa_andorl(SAA7134_AUDIO_PLL_CTRL >> 20x03, 0x03);
  saa_andorl(SAA7134_AUDIO_CLOCKS_PER_FIELD0 >> 2,
      0x0001e000, 0x0001e000);
  break;
 }
 return 0;
}

static int saa7134_tda8290_827x_callback(struct saa7134_dev *dev,
      int command, int arg)
{
 u8 sync_control;

 switch (command) {
 case 0/* switch LNA gain through GPIO 22*/
  saa7134_set_gpio(dev, 22, arg) ;
  break;
 case 1/* vsync output at GPIO22. 50 / 60Hz */
  saa_andorb(SAA7134_VIDEO_PORT_CTRL3, 0x80, 0x80);
  saa_andorb(SAA7134_VIDEO_PORT_CTRL6, 0x0f, 0x03);
  if (arg == 1)
   sync_control = 11;
  else
   sync_control = 17;
  saa_writeb(SAA7134_VGATE_START, sync_control);
  saa_writeb(SAA7134_VGATE_STOP, sync_control + 1);
  saa_andorb(SAA7134_MISC_VGATE_MSB, 0x03, 0x00);
  break;
 default:
  return -EINVAL;
 }

 return 0;
}

static inline int saa7134_tda18271_hvr11x0_toggle_agc(struct saa7134_dev *dev,
            enum tda18271_mode mode)
{
 /* toggle AGC switch through GPIO 26 */
 switch (mode) {
 case TDA18271_ANALOG:
  saa7134_set_gpio(dev, 260);
  break;
 case TDA18271_DIGITAL:
  saa7134_set_gpio(dev, 261);
  break;
 default:
  return -EINVAL;
 }
 return 0;
}

static inline int saa7134_kworld_sbtvd_toggle_agc(struct saa7134_dev *dev,
        enum tda18271_mode mode)
{
 /* toggle AGC switch through GPIO 27 */
 switch (mode) {
 case TDA18271_ANALOG:
  saa_writel(SAA7134_GPIO_GPMODE0 >> 20x4000);
  saa_writel(SAA7134_GPIO_GPSTATUS0 >> 20x4000);
  msleep(20);
  break;
 case TDA18271_DIGITAL:
  saa_writel(SAA7134_GPIO_GPMODE0 >> 20x14000);
  saa_writel(SAA7134_GPIO_GPSTATUS0 >> 20x14000);
  msleep(20);
  saa_writel(SAA7134_GPIO_GPMODE0 >> 20x54000);
  saa_writel(SAA7134_GPIO_GPSTATUS0 >> 20x54000);
  msleep(30);
  break;
 default:
  return -EINVAL;
 }
 return 0;
}

static int saa7134_kworld_pc150u_toggle_agc(struct saa7134_dev *dev,
         enum tda18271_mode mode)
{
 switch (mode) {
 case TDA18271_ANALOG:
  saa7134_set_gpio(dev, 180);
  break;
 case TDA18271_DIGITAL:
  saa7134_set_gpio(dev, 181);
  msleep(30);
  break;
 default:
  return -EINVAL;
 }
 return 0;
}

static int saa7134_leadtek_hdtv200h_toggle_agc(struct saa7134_dev *dev,
            enum tda18271_mode mode)
{
 switch (mode) {
 case TDA18271_ANALOG:
  saa7134_set_gpio(dev, 100);
  break;
 case TDA18271_DIGITAL:
  saa7134_set_gpio(dev, 101);
  break;
 default:
  return -EINVAL;
 }
 return 0;
}

static int saa7134_tda8290_18271_callback(struct saa7134_dev *dev,
       int command, int arg)
{
 int ret = 0;

 switch (command) {
 case TDA18271_CALLBACK_CMD_AGC_ENABLE: /* 0 */
  switch (dev->board) {
  case SAA7134_BOARD_HAUPPAUGE_HVR1150:
  case SAA7134_BOARD_HAUPPAUGE_HVR1120:
  case SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2:
   ret = saa7134_tda18271_hvr11x0_toggle_agc(dev, arg);
   break;
  case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG:
   ret = saa7134_kworld_sbtvd_toggle_agc(dev, arg);
   break;
  case SAA7134_BOARD_KWORLD_PC150U:
   ret = saa7134_kworld_pc150u_toggle_agc(dev, arg);
   break;
  case SAA7134_BOARD_LEADTEK_WINFAST_HDTV200_H:
   ret = saa7134_leadtek_hdtv200h_toggle_agc(dev, arg);
   break;
  default:
   break;
  }
  break;
 default:
  ret = -EINVAL;
  break;
 }
 return ret;
}

static int saa7134_tda8290_callback(struct saa7134_dev *dev,
        int command, int arg)
{
 int ret;

 switch (dev->board) {
 case SAA7134_BOARD_HAUPPAUGE_HVR1150:
 case SAA7134_BOARD_HAUPPAUGE_HVR1120:
 case SAA7134_BOARD_AVERMEDIA_M733A:
 case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG:
 case SAA7134_BOARD_KWORLD_PC150U:
 case SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2:
 case SAA7134_BOARD_LEADTEK_WINFAST_HDTV200_H:
  /* tda8290 + tda18271 */
  ret = saa7134_tda8290_18271_callback(dev, command, arg);
  break;
 default:
  /* tda8290 + tda827x */
  ret = saa7134_tda8290_827x_callback(dev, command, arg);
  break;
 }
 return ret;
}

int saa7134_tuner_callback(void *priv, int component, int command, int arg)
{
 struct saa7134_dev *dev = priv;

 if (dev != NULL) {
  switch (dev->tuner_type) {
  case TUNER_PHILIPS_TDA8290:
   return saa7134_tda8290_callback(dev, command, arg);
  case TUNER_XC2028:
   return saa7134_xc2028_callback(dev, command, arg);
  case TUNER_XC5000:
   return saa7134_xc5000_callback(dev, command, arg);
  }
 } else {
  pr_err("saa7134: Error - device struct undefined.\n");
  return -EINVAL;
 }
 return -EINVAL;
}
EXPORT_SYMBOL(saa7134_tuner_callback);

/* ----------------------------------------------------------- */

static void hauppauge_eeprom(struct saa7134_dev *dev, u8 *eeprom_data)
{
 struct tveeprom tv;

 tveeprom_hauppauge_analog(&tv, eeprom_data);

 /* Make sure we support the board model */
 switch (tv.model) {
 case 67019/* WinTV-HVR1110 (Retail, IR Blaster, hybrid, FM, SVid/Comp, 3.5mm audio in) */
 case 67109/* WinTV-HVR1000 (Retail, IR Receive, analog, no FM, SVid/Comp, 3.5mm audio in) */
 case 67201/* WinTV-HVR1150 (Retail, IR Receive, hybrid, FM, SVid/Comp, 3.5mm audio in) */
 case 67301/* WinTV-HVR1000 (Retail, IR Receive, analog, no FM, SVid/Comp, 3.5mm audio in) */
 case 67209/* WinTV-HVR1110 (Retail, IR Receive, hybrid, FM, SVid/Comp, 3.5mm audio in) */
 case 67559/* WinTV-HVR1110 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
 case 67569/* WinTV-HVR1110 (OEM, no IR, hybrid, FM) */
 case 67579/* WinTV-HVR1110 (OEM, no IR, hybrid, no FM) */
 case 67589/* WinTV-HVR1110 (OEM, no IR, hybrid, no FM, SVid/Comp, RCA aud) */
 case 67599/* WinTV-HVR1110 (OEM, no IR, hybrid, no FM, SVid/Comp, RCA aud) */
 case 67651/* WinTV-HVR1150 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
 case 67659/* WinTV-HVR1110 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
  break;
 default:
  pr_warn("%s: warning: unknown hauppauge model #%d\n",
   dev->name, tv.model);
  break;
 }

 pr_info("%s: hauppauge eeprom: model=%d\n",
        dev->name, tv.model);
}

/* ----------------------------------------------------------- */

int saa7134_board_init1(struct saa7134_dev *dev)
{
 /* Always print gpio, often manufacturers encode tuner type and other info. */
 saa_writel(SAA7134_GPIO_GPMODE0 >> 20);
 dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
 pr_info("%s: board init: gpio is %x\n", dev->name, dev->gpio_value);

 switch (dev->board) {
 case SAA7134_BOARD_FLYVIDEO2000:
 case SAA7134_BOARD_FLYVIDEO3000:
 case SAA7134_BOARD_FLYVIDEO3000_NTSC:
  dev->has_remote = SAA7134_REMOTE_GPIO;
  board_flyvideo(dev);
  break;
 case SAA7134_BOARD_FLYTVPLATINUM_MINI2:
 case SAA7134_BOARD_FLYTVPLATINUM_FM:
 case SAA7134_BOARD_CINERGY400:
 case SAA7134_BOARD_CINERGY600:
 case SAA7134_BOARD_CINERGY600_MK3:
 case SAA7134_BOARD_ECS_TVP3XP:
 case SAA7134_BOARD_ECS_TVP3XP_4CB5:
 case SAA7134_BOARD_ECS_TVP3XP_4CB6:
 case SAA7134_BOARD_MD2819:
 case SAA7134_BOARD_KWORLD_VSTREAM_XPERT:
 case SAA7134_BOARD_KWORLD_XPERT:
 case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
 case SAA7134_BOARD_AVERMEDIA_305:
 case SAA7134_BOARD_AVERMEDIA_STUDIO_505:
 case SAA7134_BOARD_AVERMEDIA_505:
 case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
 case SAA7134_BOARD_AVERMEDIA_307:
 case SAA7134_BOARD_AVERMEDIA_STUDIO_507:
 case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
 case SAA7134_BOARD_AVERMEDIA_777:
 case SAA7134_BOARD_AVERMEDIA_M135A:
/*      case SAA7134_BOARD_SABRENT_SBTTVFM:  */ /* not finished yet */
 case SAA7134_BOARD_VIDEOMATE_TV_PVR:
 case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS:
 case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII:
 case SAA7134_BOARD_VIDEOMATE_M1F:
 case SAA7134_BOARD_VIDEOMATE_DVBT_300:
 case SAA7134_BOARD_VIDEOMATE_DVBT_200:
 case SAA7134_BOARD_VIDEOMATE_DVBT_200A:
 case SAA7134_BOARD_MANLI_MTV001:
 case SAA7134_BOARD_MANLI_MTV002:
 case SAA7134_BOARD_BEHOLD_409FM:
 case SAA7134_BOARD_AVACSSMARTTV:
 case SAA7134_BOARD_GOTVIEW_7135:
 case SAA7134_BOARD_KWORLD_TERMINATOR:
 case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS:
 case SAA7134_BOARD_FLYDVBT_LR301:
 case SAA7134_BOARD_ASUSTeK_PS3_100:
 case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
 case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
 case SAA7134_BOARD_ASUSTeK_P7131_ANALOG:
 case SAA7134_BOARD_FLYDVBTDUO:
 case SAA7134_BOARD_PROTEUS_2309:
 case SAA7134_BOARD_AVERMEDIA_A16AR:
 case SAA7134_BOARD_ENCORE_ENLTV:
 case SAA7134_BOARD_ENCORE_ENLTV_FM:
 case SAA7134_BOARD_ENCORE_ENLTV_FM53:
 case SAA7134_BOARD_ENCORE_ENLTV_FM3:
 case SAA7134_BOARD_10MOONSTVMASTER3:
 case SAA7134_BOARD_BEHOLD_401:
 case SAA7134_BOARD_BEHOLD_403:
 case SAA7134_BOARD_BEHOLD_403FM:
 case SAA7134_BOARD_BEHOLD_405:
 case SAA7134_BOARD_BEHOLD_405FM:
 case SAA7134_BOARD_BEHOLD_407:
 case SAA7134_BOARD_BEHOLD_407FM:
 case SAA7134_BOARD_BEHOLD_409:
 case SAA7134_BOARD_BEHOLD_505FM:
 case SAA7134_BOARD_BEHOLD_505RDS_MK5:
 case SAA7134_BOARD_BEHOLD_505RDS_MK3:
 case SAA7134_BOARD_BEHOLD_507_9FM:
 case SAA7134_BOARD_BEHOLD_507RDS_MK3:
 case SAA7134_BOARD_BEHOLD_507RDS_MK5:
 case SAA7134_BOARD_GENIUS_TVGO_A11MCE:
 case SAA7134_BOARD_REAL_ANGEL_220:
 case SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG:
 case SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS:
 case SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM:
 case SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S:
 case SAA7134_BOARD_LEADTEK_WINFAST_TV2100_FM:
  dev->has_remote = SAA7134_REMOTE_GPIO;
  break;
 case SAA7134_BOARD_FLYDVBS_LR300:
  saa_writeb(SAA7134_GPIO_GPMODE3, 0x80);
  saa_writeb(SAA7134_GPIO_GPSTATUS2, 0x40);
  dev->has_remote = SAA7134_REMOTE_GPIO;
  break;
 case SAA7134_BOARD_MD5044:
  pr_warn("%s: seems there are two different versions of the MD5044\n"
   "%s: (with the same ID) out there.  If sound doesn't work for\n"
   "%s: you try the audio_clock_override=0x200000 insmod option.\n",
   dev->name, dev->name, dev->name);
  break;
 case SAA7134_BOARD_CINERGY400_CARDBUS:
  /* power-up tuner chip */
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00040000, 0x00040000);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x00040000, 0x00000000);
  break;
 case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL:
  /* this turns the remote control chip off to work around a bug in it */
  saa_writeb(SAA7134_GPIO_GPMODE1, 0x80);
  saa_writeb(SAA7134_GPIO_GPSTATUS1, 0x80);
  break;
 case SAA7134_BOARD_MONSTERTV_MOBILE:
  /* power-up tuner chip */
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00040000, 0x00040000);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x00040000, 0x00000004);
  break;
 case SAA7134_BOARD_FLYDVBT_DUO_CARDBUS:
  /* turn the fan on */
  saa_writeb(SAA7134_GPIO_GPMODE3, 0x08);
  saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x06);
  break;
 case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
 case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 20x08000000, 0x08000000);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x08000000, 0x00000000);
  break;
 case SAA7134_BOARD_AVERMEDIA_CARDBUS:
 case SAA7134_BOARD_AVERMEDIA_M115:
  /* power-down tuner chip */
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20xffffffff, 0);
  msleep(10);
  /* power-up tuner chip */
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0xffffffff);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20xffffffff, 0xffffffff);
  msleep(10);
  break;
 case SAA7134_BOARD_AVERMEDIA_CARDBUS_501:
  /* power-down tuner chip */
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x08400000, 0x08400000);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x08400000, 0);
  msleep(10);
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x08400000, 0x08400000);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x08400000, 0x08400000);
  msleep(10);
  dev->has_remote = SAA7134_REMOTE_I2C;
  break;
 case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
  saa7134_set_gpio(dev, 230);
  msleep(10);
  saa7134_set_gpio(dev, 231);
  dev->has_remote = SAA7134_REMOTE_I2C;
  break;
 case SAA7134_BOARD_AVERMEDIA_M103:
  saa7134_set_gpio(dev, 230);
  msleep(10);
  saa7134_set_gpio(dev, 231);
  break;
 case SAA7134_BOARD_AVERMEDIA_A16D:
  saa7134_set_gpio(dev, 210);
  msleep(10);
  saa7134_set_gpio(dev, 211);
  msleep(1);
  dev->has_remote = SAA7134_REMOTE_GPIO;
  break;
 case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM:
  /* power-down tuner chip */
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x000A8004, 0x000A8004);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x000A8004, 0);
  msleep(10);
  /* power-up tuner chip */
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x000A8004, 0x000A8004);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x000A8004, 0x000A8004);
  msleep(10);
  /* remote via GPIO */
  dev->has_remote = SAA7134_REMOTE_GPIO;
  break;
 case SAA7134_BOARD_RTD_VFG7350:

  /*
 * Make sure Production Test Register at offset 0x1D1 is cleared
 * to take chip out of test mode.  Clearing bit 4 (TST_EN_AOUT)
 * prevents pin 105 from remaining low; keeping pin 105 low
 * continually resets the SAA6752 chip.
 */


  saa_writeb (SAA7134_PRODUCTION_TEST_MODE, 0x00);
  break;
 case SAA7134_BOARD_HAUPPAUGE_HVR1150:
 case SAA7134_BOARD_HAUPPAUGE_HVR1120:
  dev->has_remote = SAA7134_REMOTE_GPIO;
  /* GPIO 26 high for digital, low for analog */
  saa7134_set_gpio(dev, 260);
  msleep(1);

  saa7134_set_gpio(dev, 220);
  msleep(10);
  saa7134_set_gpio(dev, 221);
  break;
 /* i2c remotes */
 case SAA7134_BOARD_PINNACLE_PCTV_110i:
 case SAA7134_BOARD_PINNACLE_PCTV_310i:
 case SAA7134_BOARD_UPMOST_PURPLE_TV:
 case SAA7134_BOARD_MSI_TVATANYWHERE_PLUS:
 case SAA7134_BOARD_HAUPPAUGE_HVR1110:
 case SAA7134_BOARD_BEHOLD_607FM_MK3:
 case SAA7134_BOARD_BEHOLD_607FM_MK5:
 case SAA7134_BOARD_BEHOLD_609FM_MK3:
 case SAA7134_BOARD_BEHOLD_609FM_MK5:
 case SAA7134_BOARD_BEHOLD_607RDS_MK3:
 case SAA7134_BOARD_BEHOLD_607RDS_MK5:
 case SAA7134_BOARD_BEHOLD_609RDS_MK3:
 case SAA7134_BOARD_BEHOLD_609RDS_MK5:
 case SAA7134_BOARD_BEHOLD_M6:
 case SAA7134_BOARD_BEHOLD_M63:
 case SAA7134_BOARD_BEHOLD_M6_EXTRA:
 case SAA7134_BOARD_BEHOLD_H6:
 case SAA7134_BOARD_BEHOLD_X7:
 case SAA7134_BOARD_BEHOLD_H7:
 case SAA7134_BOARD_BEHOLD_A7:
 case SAA7134_BOARD_KWORLD_PC150U:
 case SAA7134_BOARD_SNAZIO_TVPVR_PRO:
  dev->has_remote = SAA7134_REMOTE_I2C;
  break;
 case SAA7134_BOARD_AVERMEDIA_A169_B:
  pr_warn("%s: %s: dual saa713x broadcast decoders\n"
   "%s: Sorry, none of the inputs to this chip are supported yet.\n"
   "%s: Dual decoder functionality is disabled for now, use the other chip.\n",
   dev->name, card(dev).name, dev->name, dev->name);
  break;
 case SAA7134_BOARD_AVERMEDIA_M102:
  /* enable tuner */
        dev->has_remote = SAA7134_REMOTE_GPIO;
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x8c040007, 0x8c040007);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x0c0007cd, 0x0c0007cd);
  break;
 case SAA7134_BOARD_AVERMEDIA_A700_HYBRID:
 case SAA7134_BOARD_AVERMEDIA_A700_PRO:
  /* write windows gpio values */
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x80040100, 0x80040100);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x80040100, 0x00040100);
  break;
 case SAA7134_BOARD_AVERMEDIA_A706:
  /* radio antenna select: tristate both as in Windows driver */
  saa7134_set_gpio(dev, 123); /* TV antenna */
  saa7134_set_gpio(dev, 133); /* FM antenna */
  dev->has_remote = SAA7134_REMOTE_I2C;
  /*
 * Disable CE5039 DVB-S tuner now (SLEEP pin high) to prevent
 * it from interfering with analog tuner detection
 */

  saa7134_set_gpio(dev, 231);
  break;
 case SAA7134_BOARD_VIDEOMATE_S350:
  dev->has_remote = SAA7134_REMOTE_GPIO;
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x0000C000, 0x0000C000);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x0000C000, 0x0000C000);
  break;
 case SAA7134_BOARD_AVERMEDIA_M733A:
  saa7134_set_gpio(dev, 11);
  msleep(10);
  saa7134_set_gpio(dev, 10);
  msleep(10);
  saa7134_set_gpio(dev, 11);
  dev->has_remote = SAA7134_REMOTE_GPIO;
  break;
 case SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2:
  /* enable LGS-8G75 */
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x0e050000, 0x0c050000);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x0e050000, 0x0c050000);
  break;
 case SAA7134_BOARD_VIDEOMATE_T750:
  /* enable the analog tuner */
  saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00008000, 0x00008000);
  saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 20x00008000, 0x00008000);
  break;
 }
 return 0;
}

static void saa7134_tuner_setup(struct saa7134_dev *dev)
{
 struct tuner_setup tun_setup;
 unsigned int mode_mask = T_RADIO | T_ANALOG_TV;

 memset(&tun_setup, 0sizeof(tun_setup));
 tun_setup.tuner_callback = saa7134_tuner_callback;

 if (saa7134_boards[dev->board].radio_type != UNSET) {
  tun_setup.type = saa7134_boards[dev->board].radio_type;
  tun_setup.addr = saa7134_boards[dev->board].radio_addr;

  tun_setup.mode_mask = T_RADIO;

  saa_call_all(dev, tuner, s_type_addr, &tun_setup);
  mode_mask &= ~T_RADIO;
 }

 if ((dev->tuner_type != TUNER_ABSENT) && (dev->tuner_type != UNSET)) {
  tun_setup.type = dev->tuner_type;
  tun_setup.addr = dev->tuner_addr;
  tun_setup.config = &saa7134_boards[dev->board].tda829x_conf;
  tun_setup.tuner_callback = saa7134_tuner_callback;

  tun_setup.mode_mask = mode_mask;

  saa_call_all(dev, tuner, s_type_addr, &tun_setup);
 }

 if (dev->tda9887_conf) {
  struct v4l2_priv_tun_config tda9887_cfg;

  tda9887_cfg.tuner = TUNER_TDA9887;
  tda9887_cfg.priv = &dev->tda9887_conf;

  saa_call_all(dev, tuner, s_config, &tda9887_cfg);
 }

 if (dev->tuner_type == TUNER_XC2028) {
  struct v4l2_priv_tun_config  xc2028_cfg;
  struct xc2028_ctrl           ctl;

  memset(&xc2028_cfg, 0sizeof(xc2028_cfg));
  memset(&ctl, 0sizeof(ctl));

  ctl.fname   = XC2028_DEFAULT_FIRMWARE;
  ctl.max_len = 64;

  switch (dev->board) {
  case SAA7134_BOARD_AVERMEDIA_A16D:
  case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
  case SAA7134_BOARD_AVERMEDIA_M103:
  case SAA7134_BOARD_AVERMEDIA_A700_HYBRID:
   ctl.demod = XC3028_FE_ZARLINK456;
   break;
  default:
   ctl.demod = XC3028_FE_OREN538;
   ctl.mts = 1;
  }

  xc2028_cfg.tuner = TUNER_XC2028;
  xc2028_cfg.priv  = &ctl;

  saa_call_all(dev, tuner, s_config, &xc2028_cfg);
 }
}

/* stuff which needs working i2c */
int saa7134_board_init2(struct saa7134_dev *dev)
{
 unsigned char buf;
 int board;

 /* Put here the code that enables the chips that are needed
   for analog mode and doesn't depend on the tuner attachment.
   It is also a good idea to get tuner type from eeprom, etc before
   initializing tuner, since we can avoid loading tuner driver
   on devices that has TUNER_ABSENT
 */

 switch (dev->board) {
 case SAA7134_BOARD_BMK_MPEX_NOTUNER:
 case SAA7134_BOARD_BMK_MPEX_TUNER:
  /* Checks if the device has a tuner at 0x60 addr
   If the device doesn't have a tuner, TUNER_ABSENT
   will be used at tuner_type, avoiding loading tuner
   without needing it
 */

  dev->i2c_client.addr = 0x60;
  board = (i2c_master_recv(&dev->i2c_client, &buf, 0) < 0)
   ? SAA7134_BOARD_BMK_MPEX_NOTUNER
   : SAA7134_BOARD_BMK_MPEX_TUNER;
  if (board == dev->board)
   break;
  dev->board = board;
  pr_warn("%s: board type fixup: %s\n", dev->name,
  saa7134_boards[dev->board].name);
  dev->tuner_type = saa7134_boards[dev->board].tuner_type;

  break;
 case SAA7134_BOARD_MD7134:
 {
  u8 subaddr;
  u8 data[3], data1[] = { 0x09, 0x9f, 0x86, 0x11};
  int ret, tuner_t;
  struct i2c_msg msg[] = {{.addr = 0x50, .flags = 0, .buf = &subaddr, .len = 1},
     {.addr = 0x50, .flags = I2C_M_RD, .buf = data, .len = 3}},
    msg1 = {.addr = 0x61, .flags = 0, .buf = data1, .len = sizeof(data1)};

  subaddr= 0x14;
  tuner_t = 0;

  /* Retrieve device data from eeprom, checking for the
   proper tuner_type.
 */

  ret = i2c_transfer(&dev->i2c_adap, msg, 2);
  if (ret != 2) {
   pr_err("EEPROM read failure\n");
  } else if ((data[0] != 0) && (data[0] != 0xff)) {
   /* old config structure */
   subaddr = data[0] + 2;
   msg[1].len = 2;
   i2c_transfer(&dev->i2c_adap, msg, 2);
   tuner_t = (data[0] << 8) + data[1];
   switch (tuner_t){
   case 0x0103:
    dev->tuner_type = TUNER_PHILIPS_PAL;
    break;
   case 0x010C:
    dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
    break;
   default:
    pr_err("%s Can't determine tuner type %x from EEPROM\n",
           dev->name, tuner_t);
   }
  } else if ((data[1] != 0) && (data[1] != 0xff)) {
   /* new config structure */
   subaddr = data[1] + 1;
   msg[1].len = 1;
   i2c_transfer(&dev->i2c_adap, msg, 2);
   subaddr = data[0] + 1;
   msg[1].len = 2;
   i2c_transfer(&dev->i2c_adap, msg, 2);
   tuner_t = (data[1] << 8) + data[0];
   switch (tuner_t) {
   case 0x0005:
    dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
    break;
   case 0x001d:
    dev->tuner_type = TUNER_PHILIPS_FMD1216ME_MK3;
    pr_info("%s Board has DVB-T\n",
           dev->name);
    break;
   default:
    pr_err("%s Can't determine tuner type %x from EEPROM\n",
           dev->name, tuner_t);
   }
  } else {
   pr_err("%s unexpected config structure\n", dev->name);
  }

  pr_info("%s Tuner type is %d\n", dev->name, dev->tuner_type);

  /* The tuner TUNER_PHILIPS_FMD1216ME_MK3 after hardware    */
  /* start has disabled IF and enabled DVB-T. When saa7134   */
  /* scan I2C devices it will not detect IF tda9887 and can`t*/
  /* watch TV without software reboot. To solve this problem */
  /* switch the tuner to analog TV mode manually.            */
  if (dev->tuner_type == TUNER_PHILIPS_FMD1216ME_MK3) {
   if (i2c_transfer(&dev->i2c_adap, &msg1, 1) != 1)
    printk(KERN_WARNING "%s: Unable to enable IF of the tuner.\n", dev->name);
  }
  break;
 }
 case SAA7134_BOARD_PHILIPS_EUROPA:
  if (dev->autodetected && (dev->eedata[0x41] == 0x1c)) {
   /* Reconfigure board as Snake reference design */
   dev->board = SAA7134_BOARD_PHILIPS_SNAKE;
   dev->tuner_type = saa7134_boards[dev->board].tuner_type;
   pr_info("%s: Reconfigured board as %s\n",
    dev->name, saa7134_boards[dev->board].name);
   break;
  }
  fallthrough;
 case SAA7134_BOARD_VIDEOMATE_DVBT_300:
 case SAA7134_BOARD_ASUS_EUROPA2_HYBRID:
 case SAA7134_BOARD_ASUS_EUROPA_HYBRID:
 case SAA7134_BOARD_TECHNOTREND_BUDGET_T3000:
 {

  /* The Philips EUROPA based hybrid boards have the tuner
   connected through the channel decoder. We have to make it
   transparent to find it
 */

  u8 data[] = { 0x07, 0x02};
  struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
  i2c_transfer(&dev->i2c_adap, &msg, 1);

  break;
 }
 case SAA7134_BOARD_PHILIPS_TIGER:
 case SAA7134_BOARD_PHILIPS_TIGER_S:
 {
  u8 data[] = { 0x3c, 0x33, 0x60};
  struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
  if (dev->autodetected && (dev->eedata[0x49] == 0x50)) {
   dev->board = SAA7134_BOARD_PHILIPS_TIGER_S;
   pr_info("%s: Reconfigured board as %s\n",
    dev->name, saa7134_boards[dev->board].name);
  }
  if (dev->board == SAA7134_BOARD_PHILIPS_TIGER_S) {
   dev->tuner_type = TUNER_PHILIPS_TDA8290;

   data[2] = 0x68;
   i2c_transfer(&dev->i2c_adap, &msg, 1);
   break;
  }
  i2c_transfer(&dev->i2c_adap, &msg, 1);
  break;
 }
 case SAA7134_BOARD_ASUSTeK_TVFM7135:
 /* The card below is detected as card=53, but is different */
        if (dev->autodetected && (dev->eedata[0x27] == 0x03)) {
   dev->board = SAA7134_BOARD_ASUSTeK_P7131_ANALOG;
   pr_info("%s: P7131 analog only, using entry of %s\n",
    dev->name, saa7134_boards[dev->board].name);

   /*
 * IR init has already happened for other cards, so
 * we have to catch up.
 */

   dev->has_remote = SAA7134_REMOTE_GPIO;
   saa7134_input_init1(dev);
        }
        break;
 case SAA7134_BOARD_HAUPPAUGE_HVR1150:
 case SAA7134_BOARD_HAUPPAUGE_HVR1120:
  hauppauge_eeprom(dev, dev->eedata+0x80);
  break;
 case SAA7134_BOARD_HAUPPAUGE_HVR1110:
  hauppauge_eeprom(dev, dev->eedata+0x80);
  fallthrough;
 case SAA7134_BOARD_PINNACLE_PCTV_310i:
 case SAA7134_BOARD_KWORLD_DVBT_210:
 case SAA7134_BOARD_TEVION_DVBT_220RF:
 case SAA7134_BOARD_ASUSTeK_TIGER:
 case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
 case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
 case SAA7134_BOARD_MEDION_MD8800_QUADRO:
 case SAA7134_BOARD_AVERMEDIA_SUPER_007:
 case SAA7134_BOARD_TWINHAN_DTV_DVB_3056:
 case SAA7134_BOARD_CREATIX_CTX953:
 {
  /* this is a hybrid board, initialize to analog mode
 * and configure firmware eeprom address
 */

  u8 data[] = { 0x3c, 0x33, 0x60};
  struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
  i2c_transfer(&dev->i2c_adap, &msg, 1);
  break;
 }
 case SAA7134_BOARD_ASUSTeK_TIGER_3IN1:
 {
  u8 data[] = { 0x3c, 0x33, 0x60};
  struct i2c_msg msg = {.addr = 0x0b, .flags = 0, .buf = data,
       .len = sizeof(data)};
  i2c_transfer(&dev->i2c_adap, &msg, 1);
  break;
 }
 case SAA7134_BOARD_ASUSTeK_PS3_100:
 {
  u8 data[] = { 0x3c, 0x33, 0x60};
  struct i2c_msg msg = {.addr = 0x0b, .flags = 0, .buf = data,
             .len = sizeof(data)};
  i2c_transfer(&dev->i2c_adap, &msg, 1);
  break;
 }
 case SAA7134_BOARD_FLYDVB_TRIO:
 {
  u8 temp = 0;
  int rc;
  u8 data[] = { 0x3c, 0x33, 0x62};
  struct i2c_msg msg = {.addr=0x09, .flags=0, .buf=data, .len = sizeof(data)};
  i2c_transfer(&dev->i2c_adap, &msg, 1);

  /*
 * send weak up message to pic16C505 chip
 * @ LifeView FlyDVB Trio
 */

  msg.buf = &temp;
  msg.addr = 0x0b;
  msg.len = 1;
  if (1 != i2c_transfer(&dev->i2c_adap, &msg, 1)) {
   pr_warn("%s: send wake up byte to pic16C505(IR chip) failed\n",
    dev->name);
  } else {
   msg.flags = I2C_M_RD;
   rc = i2c_transfer(&dev->i2c_adap, &msg, 1);
   pr_info("%s: probe IR chip @ i2c 0x%02x: %s\n",
       dev->name, msg.addr,
       (1 == rc) ? "yes" : "no");
   if (rc == 1)
    dev->has_remote = SAA7134_REMOTE_I2C;
  }
  break;
 }
 case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
 case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
 {
  /* initialize analog mode  */
  u8 data[] = { 0x3c, 0x33, 0x6a};
  struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
  i2c_transfer(&dev->i2c_adap, &msg, 1);
  break;
 }
 case SAA7134_BOARD_CINERGY_HT_PCMCIA:
 case SAA7134_BOARD_CINERGY_HT_PCI:
 {
  /* initialize analog mode */
  u8 data[] = { 0x3c, 0x33, 0x68};
  struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
  i2c_transfer(&dev->i2c_adap, &msg, 1);
  break;
 }
 case SAA7134_BOARD_VIDEOMATE_DVBT_200:
 case SAA7134_BOARD_VIDEOMATE_DVBT_200A:
  /* The T200 and the T200A share the same pci id.  Consequently,
 * we are going to query eeprom to try to find out which one we
 * are actually looking at. */


  /* Don't do this if the board was specifically selected with an
 * insmod option or if we have the default configuration T200*/

  if (!dev->autodetected || (dev->eedata[0x41] == 0xd0))
   break;
  if (dev->eedata[0x41] == 0x02) {
   /* Reconfigure board  as T200A */
   dev->board = SAA7134_BOARD_VIDEOMATE_DVBT_200A;
   dev->tuner_type   = saa7134_boards[dev->board].tuner_type;
   dev->tda9887_conf = saa7134_boards[dev->board].tda9887_conf;
   pr_info("%s: Reconfigured board as %s\n",
    dev->name, saa7134_boards[dev->board].name);
  } else {
   pr_warn("%s: Unexpected tuner type info: %x in eeprom\n",
    dev->name, dev->eedata[0x41]);
   break;
  }
  break;
 case SAA7134_BOARD_ADS_INSTANT_HDTV_PCI:
 case SAA7134_BOARD_KWORLD_ATSC110:
 {
  struct i2c_msg msg = { .addr = 0x0a, .flags = 0 };
  int i;
  static u8 buffer[][2] = {
   { 0x10, 0x12 },
   { 0x13, 0x04 },
   { 0x16, 0x00 },
   { 0x14, 0x04 },
   { 0x17, 0x00 },
  };

  for (i = 0; i < ARRAY_SIZE(buffer); i++) {
   msg.buf = &buffer[i][0];
   msg.len = ARRAY_SIZE(buffer[0]);
   if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1)
    pr_warn("%s: Unable to enable tuner(%i).\n",
     dev->name, i);
  }
  break;
 }
 case SAA7134_BOARD_BEHOLD_H6:
 {
  u8 data[] = { 0x09, 0x9f, 0x86, 0x11};
  struct i2c_msg msg = {.addr = 0x61, .flags = 0, .buf = data,
       .len = sizeof(data)};

  /* The tuner TUNER_PHILIPS_FMD1216MEX_MK3 after hardware    */
  /* start has disabled IF and enabled DVB-T. When saa7134    */
  /* scan I2C devices it not detect IF tda9887 and can`t      */
  /* watch TV without software reboot. For solve this problem */
  /* switch the tuner to analog TV mode manually.             */
  if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1)
   pr_warn("%s: Unable to enable IF of the tuner.\n",
    dev->name);
  break;
 }
 case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG:
  saa_writel(SAA7134_GPIO_GPMODE0 >> 20x4000);
  saa_writel(SAA7134_GPIO_GPSTATUS0 >> 20x4000);

  saa7134_set_gpio(dev, 270);
  break;
 } /* switch() */

 /* initialize tuner (don't do this when resuming) */
 if (!dev->insuspend && TUNER_ABSENT != dev->tuner_type) {
  int has_demod = (dev->tda9887_conf & TDA9887_PRESENT);

  /* Note: radio tuner address is always filled in,
   so we do not need to probe for a radio tuner device. */

  if (dev->radio_type != UNSET)
   v4l2_i2c_new_subdev(&dev->v4l2_dev,
    &dev->i2c_adap, "tuner",
    dev->radio_addr, NULL);
  if (has_demod)
   v4l2_i2c_new_subdev(&dev->v4l2_dev,
    &dev->i2c_adap, "tuner",
    0, v4l2_i2c_tuner_addrs(ADDRS_DEMOD));
  if (dev->tuner_addr == ADDR_UNSET) {
   enum v4l2_i2c_tuner_type type =
    has_demod ? ADDRS_TV_WITH_DEMOD : ADDRS_TV;

   v4l2_i2c_new_subdev(&dev->v4l2_dev,
    &dev->i2c_adap, "tuner",
    0, v4l2_i2c_tuner_addrs(type));
  } else {
   v4l2_i2c_new_subdev(&dev->v4l2_dev,
    &dev->i2c_adap, "tuner",
    dev->tuner_addr, NULL);
  }
 }

 saa7134_tuner_setup(dev);

 switch (dev->board) {
 case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM:
 case SAA7134_BOARD_AVERMEDIA_CARDBUS_501:
 {
  struct v4l2_priv_tun_config tea5767_cfg;
  struct tea5767_ctrl ctl;

  dev->i2c_client.addr = 0xC0;
  /* set TEA5767(analog FM) defines */
  memset(&ctl, 0sizeof(ctl));
  ctl.xtal_freq = TEA5767_HIGH_LO_13MHz;
  tea5767_cfg.tuner = TUNER_TEA5767;
  tea5767_cfg.priv  = &ctl;
  saa_call_all(dev, tuner, s_config, &tea5767_cfg);
  break;
 }
 } /* switch() */

 return 0;
}

Messung V0.5 in Prozent
C=95 H=93 G=93

¤ Dauer der Verarbeitung: 0.304 Sekunden  (vorverarbeitet am  2026-06-08) ¤

*© Formatika GbR, Deutschland






Versionsinformation zu Columbo

Bemerkung:

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Anfrage:

Dauer der Verarbeitung:

Sekunden

sprechenden Kalenders






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=434850
#Domains=655579