Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 /*
0003  *
0004  * device driver for philips saa7134 based TV cards
0005  * card-specific stuff.
0006  *
0007  * (c) 2001-04 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
0008  */
0009 
0010 #include "saa7134.h"
0011 #include "saa7134-reg.h"
0012 
0013 #include <linux/init.h>
0014 #include <linux/module.h>
0015 #include <linux/i2c.h>
0016 #include <linux/i2c-algo-bit.h>
0017 
0018 #include "xc2028.h"
0019 #include <media/v4l2-common.h>
0020 #include <media/tveeprom.h>
0021 #include "tea5767.h"
0022 #include "tda18271.h"
0023 #include "xc5000.h"
0024 #include "s5h1411.h"
0025 
0026 /* Input names */
0027 const char * const saa7134_input_name[] = {
0028     [SAA7134_INPUT_MUTE]       = "mute",
0029     [SAA7134_INPUT_RADIO]      = "Radio",
0030     [SAA7134_INPUT_TV]         = "Television",
0031     [SAA7134_INPUT_TV_MONO]    = "TV (mono only)",
0032     [SAA7134_INPUT_COMPOSITE]  = "Composite",
0033     [SAA7134_INPUT_COMPOSITE0] = "Composite0",
0034     [SAA7134_INPUT_COMPOSITE1] = "Composite1",
0035     [SAA7134_INPUT_COMPOSITE2] = "Composite2",
0036     [SAA7134_INPUT_COMPOSITE3] = "Composite3",
0037     [SAA7134_INPUT_COMPOSITE4] = "Composite4",
0038     [SAA7134_INPUT_SVIDEO]     = "S-Video",
0039     [SAA7134_INPUT_SVIDEO0]    = "S-Video0",
0040     [SAA7134_INPUT_SVIDEO1]    = "S-Video1",
0041     [SAA7134_INPUT_COMPOSITE_OVER_SVIDEO] = "Composite over S-Video",
0042 };
0043 
0044 /* ------------------------------------------------------------------ */
0045 /* board config info                                                  */
0046 
0047 static struct tda18271_std_map aver_a706_std_map = {
0048     .fm_radio = { .if_freq = 5500, .fm_rfn = 0, .agc_mode = 3, .std = 0,
0049               .if_lvl = 0, .rfagc_top = 0x2c, },
0050 };
0051 
0052 /* If radio_type !=UNSET, radio_addr should be specified
0053  */
0054 
0055 struct saa7134_board saa7134_boards[] = {
0056     [SAA7134_BOARD_UNKNOWN] = {
0057         .name       = "UNKNOWN/GENERIC",
0058         .audio_clock    = 0x00187de7,
0059         .tuner_type = TUNER_ABSENT,
0060         .radio_type     = UNSET,
0061         .tuner_addr = ADDR_UNSET,
0062         .radio_addr = ADDR_UNSET,
0063 
0064         .inputs         = {{
0065             .type = SAA7134_INPUT_COMPOSITE,
0066             .vmux = 0,
0067             .amux = LINE1,
0068         }},
0069     },
0070     [SAA7134_BOARD_PROTEUS_PRO] = {
0071         /* /me */
0072         .name       = "Proteus Pro [philips reference design]",
0073         .audio_clock    = 0x00187de7,
0074         .tuner_type = TUNER_PHILIPS_PAL,
0075         .radio_type     = UNSET,
0076         .tuner_addr = ADDR_UNSET,
0077         .radio_addr = ADDR_UNSET,
0078 
0079         .inputs         = {{
0080             .type = SAA7134_INPUT_COMPOSITE1,
0081             .vmux = 0,
0082             .amux = LINE1,
0083         },{
0084             .type = SAA7134_INPUT_TV,
0085             .vmux = 1,
0086             .amux = TV,
0087         },{
0088             .type = SAA7134_INPUT_TV_MONO,
0089             .vmux = 1,
0090             .amux = LINE2,
0091         }},
0092         .radio = {
0093             .type = SAA7134_INPUT_RADIO,
0094             .amux = LINE2,
0095         },
0096     },
0097     [SAA7134_BOARD_FLYVIDEO3000] = {
0098         /* "Marco d'Itri" <md@Linux.IT> */
0099         .name       = "LifeView FlyVIDEO3000",
0100         .audio_clock    = 0x00200000,
0101         .tuner_type = TUNER_PHILIPS_PAL,
0102         .radio_type     = UNSET,
0103         .tuner_addr = ADDR_UNSET,
0104         .radio_addr = ADDR_UNSET,
0105 
0106         .gpiomask       = 0xe000,
0107         .inputs         = {{
0108             .type = SAA7134_INPUT_TV,
0109             .vmux = 1,
0110             .amux = TV,
0111             .gpio = 0x8000,
0112         },{
0113             .type = SAA7134_INPUT_TV_MONO,
0114             .vmux = 1,
0115             .amux = LINE2,
0116             .gpio = 0x0000,
0117         },{
0118             .type = SAA7134_INPUT_COMPOSITE1,
0119             .vmux = 0,
0120             .amux = LINE2,
0121             .gpio = 0x4000,
0122         },{
0123             .type = SAA7134_INPUT_COMPOSITE2,
0124             .vmux = 3,
0125             .amux = LINE2,
0126             .gpio = 0x4000,
0127         },{
0128             .type = SAA7134_INPUT_SVIDEO,
0129             .vmux = 8,
0130             .amux = LINE2,
0131             .gpio = 0x4000,
0132         }},
0133         .radio = {
0134             .type = SAA7134_INPUT_RADIO,
0135             .amux = LINE2,
0136             .gpio = 0x2000,
0137         },
0138         .mute = {
0139             .type = SAA7134_INPUT_MUTE,
0140             .amux = TV,
0141             .gpio = 0x8000,
0142         },
0143     },
0144     [SAA7134_BOARD_FLYVIDEO2000] = {
0145         /* "TC Wan" <tcwan@cs.usm.my> */
0146         .name           = "LifeView/Typhoon FlyVIDEO2000",
0147         .audio_clock    = 0x00200000,
0148         .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
0149         .radio_type     = UNSET,
0150         .tuner_addr = ADDR_UNSET,
0151         .radio_addr = ADDR_UNSET,
0152 
0153         .gpiomask       = 0xe000,
0154         .inputs         = {{
0155             .type = SAA7134_INPUT_TV,
0156             .vmux = 1,
0157             .amux = LINE2,
0158             .gpio = 0x0000,
0159         },{
0160             .type = SAA7134_INPUT_COMPOSITE1,
0161             .vmux = 0,
0162             .amux = LINE2,
0163             .gpio = 0x4000,
0164         },{
0165             .type = SAA7134_INPUT_COMPOSITE2,
0166             .vmux = 3,
0167             .amux = LINE2,
0168             .gpio = 0x4000,
0169         },{
0170             .type = SAA7134_INPUT_SVIDEO,
0171             .vmux = 8,
0172             .amux = LINE2,
0173             .gpio = 0x4000,
0174         }},
0175         .radio = {
0176             .type = SAA7134_INPUT_RADIO,
0177             .amux = LINE2,
0178             .gpio = 0x2000,
0179         },
0180         .mute = {
0181             .type = SAA7134_INPUT_MUTE,
0182             .amux = LINE2,
0183             .gpio = 0x8000,
0184         },
0185     },
0186     [SAA7134_BOARD_FLYTVPLATINUM_MINI] = {
0187         /* "Arnaud Quette" <aquette@free.fr> */
0188         .name           = "LifeView FlyTV Platinum Mini",
0189         .audio_clock    = 0x00200000,
0190         .tuner_type     = TUNER_PHILIPS_TDA8290,
0191         .radio_type     = UNSET,
0192         .tuner_addr = ADDR_UNSET,
0193         .radio_addr = ADDR_UNSET,
0194 
0195         .inputs         = {{
0196             .type = SAA7134_INPUT_TV,
0197             .vmux = 1,
0198             .amux = TV,
0199         },{
0200             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
0201             .vmux = 0,
0202             .amux = LINE2,
0203         },{
0204             .type = SAA7134_INPUT_COMPOSITE,
0205             .vmux = 3,
0206             .amux = LINE2,
0207         },{
0208             .type = SAA7134_INPUT_SVIDEO,
0209             .vmux = 8,
0210             .amux = LINE2,
0211         }},
0212     },
0213     [SAA7134_BOARD_FLYTVPLATINUM_FM] = {
0214         /* LifeView FlyTV Platinum FM (LR214WF) */
0215         /* "Peter Missel <peter.missel@onlinehome.de> */
0216         .name           = "LifeView FlyTV Platinum FM / Gold",
0217         .audio_clock    = 0x00200000,
0218         .tuner_type     = TUNER_PHILIPS_TDA8290,
0219         .radio_type     = UNSET,
0220         .tuner_addr = ADDR_UNSET,
0221         .radio_addr = ADDR_UNSET,
0222 
0223         .gpiomask       = 0x1E000,  /* Set GP16 and unused 15,14,13 to Output */
0224         .inputs         = {{
0225             .type = SAA7134_INPUT_TV,
0226             .vmux = 1,
0227             .amux = TV,
0228             .gpio = 0x10000,    /* GP16=1 selects TV input */
0229         },{
0230 /*          .type = SAA7134_INPUT_TV_MONO,
0231             .vmux = 1,
0232             .amux = LINE2,
0233             .gpio = 0x0000,
0234         },{
0235 */          .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
0236             .vmux = 0,
0237             .amux = LINE2,
0238 /*          .gpio = 0x4000,         */
0239         },{
0240             .type = SAA7134_INPUT_COMPOSITE,
0241             .vmux = 3,
0242             .amux = LINE2,
0243 /*          .gpio = 0x4000,         */
0244         },{
0245             .type = SAA7134_INPUT_SVIDEO,
0246             .vmux = 8,
0247             .amux = LINE2,
0248 /*          .gpio = 0x4000,         */
0249         }},
0250         .radio = {
0251             .type = SAA7134_INPUT_RADIO,
0252             .amux = TV,
0253             .gpio = 0x00000,    /* GP16=0 selects FM radio antenna */
0254         },
0255         .mute = {
0256             .type = SAA7134_INPUT_MUTE,
0257             .amux = TV,
0258             .gpio = 0x10000,
0259         },
0260     },
0261     [SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM] = {
0262         /* RoverMedia TV Link Pro FM (LR138 REV:I) */
0263         /* Eugene Yudin <Eugene.Yudin@gmail.com> */
0264         .name       = "RoverMedia TV Link Pro FM",
0265         .audio_clock    = 0x00200000,
0266         .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, /* TCL MFPE05 2 */
0267         .radio_type     = UNSET,
0268         .tuner_addr = ADDR_UNSET,
0269         .radio_addr = ADDR_UNSET,
0270         .tda9887_conf   = TDA9887_PRESENT,
0271         .gpiomask       = 0xe000,
0272         .inputs         = { {
0273             .type = SAA7134_INPUT_TV,
0274             .vmux = 1,
0275             .amux = TV,
0276             .gpio = 0x8000,
0277         }, {
0278             .type = SAA7134_INPUT_TV_MONO,
0279             .vmux = 1,
0280             .amux = LINE2,
0281             .gpio = 0x0000,
0282         }, {
0283             .type = SAA7134_INPUT_COMPOSITE1,
0284             .vmux = 0,
0285             .amux = LINE2,
0286             .gpio = 0x4000,
0287         }, {
0288             .type = SAA7134_INPUT_COMPOSITE2,
0289             .vmux = 3,
0290             .amux = LINE2,
0291             .gpio = 0x4000,
0292         }, {
0293             .type = SAA7134_INPUT_SVIDEO,
0294             .vmux = 8,
0295             .amux = LINE2,
0296             .gpio = 0x4000,
0297         } },
0298         .radio = {
0299             .type = SAA7134_INPUT_RADIO,
0300             .amux = LINE2,
0301             .gpio = 0x2000,
0302         },
0303         .mute = {
0304             .type = SAA7134_INPUT_MUTE,
0305             .amux = TV,
0306             .gpio = 0x8000,
0307         },
0308     },
0309     [SAA7134_BOARD_EMPRESS] = {
0310         /* "Gert Vervoort" <gert.vervoort@philips.com> */
0311         .name       = "EMPRESS",
0312         .audio_clock    = 0x00187de7,
0313         .tuner_type = TUNER_PHILIPS_PAL,
0314         .radio_type     = UNSET,
0315         .tuner_addr = ADDR_UNSET,
0316         .radio_addr = ADDR_UNSET,
0317         .empress_addr   = 0x20,
0318 
0319         .inputs         = {{
0320             .type = SAA7134_INPUT_COMPOSITE1,
0321             .vmux = 0,
0322             .amux = LINE1,
0323         },{
0324             .type = SAA7134_INPUT_SVIDEO,
0325             .vmux = 8,
0326             .amux = LINE1,
0327         },{
0328             .type = SAA7134_INPUT_TV,
0329             .vmux = 1,
0330             .amux = LINE2,
0331         }},
0332         .radio = {
0333             .type = SAA7134_INPUT_RADIO,
0334             .amux = LINE2,
0335         },
0336         .mpeg      = SAA7134_MPEG_EMPRESS,
0337         .video_out = CCIR656,
0338     },
0339     [SAA7134_BOARD_MONSTERTV] = {
0340         /* "K.Ohta" <alpha292@bremen.or.jp> */
0341         .name           = "SKNet Monster TV",
0342         .audio_clock    = 0x00187de7,
0343         .tuner_type     = TUNER_PHILIPS_NTSC_M,
0344         .radio_type     = UNSET,
0345         .tuner_addr = ADDR_UNSET,
0346         .radio_addr = ADDR_UNSET,
0347 
0348         .inputs         = {{
0349             .type = SAA7134_INPUT_TV,
0350             .vmux = 1,
0351             .amux = TV,
0352         },{
0353             .type = SAA7134_INPUT_COMPOSITE1,
0354             .vmux = 0,
0355             .amux = LINE1,
0356         },{
0357             .type = SAA7134_INPUT_SVIDEO,
0358             .vmux = 8,
0359             .amux = LINE1,
0360         }},
0361         .radio = {
0362             .type = SAA7134_INPUT_RADIO,
0363             .amux = LINE2,
0364         },
0365     },
0366     [SAA7134_BOARD_MD9717] = {
0367         .name       = "Tevion MD 9717",
0368         .audio_clock    = 0x00200000,
0369         .tuner_type = TUNER_PHILIPS_PAL,
0370         .radio_type     = UNSET,
0371         .tuner_addr = ADDR_UNSET,
0372         .radio_addr = ADDR_UNSET,
0373         .inputs         = {{
0374             .type = SAA7134_INPUT_TV,
0375             .vmux = 1,
0376             .amux = TV,
0377         },{
0378             /* workaround for problems with normal TV sound */
0379             .type = SAA7134_INPUT_TV_MONO,
0380             .vmux = 1,
0381             .amux = LINE2,
0382         },{
0383             .type = SAA7134_INPUT_COMPOSITE1,
0384             .vmux = 0,
0385             .amux = LINE1,
0386         },{
0387             .type = SAA7134_INPUT_COMPOSITE2,
0388             .vmux = 3,
0389             .amux = LINE1,
0390         },{
0391             .type = SAA7134_INPUT_SVIDEO,
0392             .vmux = 8,
0393             .amux = LINE1,
0394         }},
0395         .radio = {
0396             .type = SAA7134_INPUT_RADIO,
0397             .amux = LINE2,
0398         },
0399            .mute = {
0400                .type = SAA7134_INPUT_MUTE,
0401                .amux = TV,
0402            },
0403     },
0404     [SAA7134_BOARD_TVSTATION_RDS] = {
0405         /* Typhoon TV Tuner RDS: Art.Nr. 50694 */
0406         .name       = "KNC One TV-Station RDS / Typhoon TV Tuner RDS",
0407         .audio_clock    = 0x00200000,
0408         .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
0409         .radio_type     = UNSET,
0410         .tuner_addr = ADDR_UNSET,
0411         .radio_addr = ADDR_UNSET,
0412         .tda9887_conf   = TDA9887_PRESENT,
0413         .inputs         = {{
0414             .type = SAA7134_INPUT_TV,
0415             .vmux = 1,
0416             .amux = TV,
0417         },{
0418             .type = SAA7134_INPUT_TV_MONO,
0419             .vmux = 1,
0420             .amux   = LINE2,
0421         },{
0422 
0423             .type = SAA7134_INPUT_SVIDEO,
0424             .vmux = 8,
0425             .amux = LINE1,
0426         },{
0427             .type = SAA7134_INPUT_COMPOSITE1,
0428             .vmux = 3,
0429             .amux = LINE1,
0430         },{
0431 
0432             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
0433             .vmux = 0,
0434             .amux = LINE1,
0435         }},
0436         .radio = {
0437             .type = SAA7134_INPUT_RADIO,
0438             .amux = LINE2,
0439         },
0440     },
0441     [SAA7134_BOARD_TVSTATION_DVR] = {
0442         .name       = "KNC One TV-Station DVR",
0443         .audio_clock    = 0x00200000,
0444         .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
0445         .radio_type     = UNSET,
0446         .tuner_addr = ADDR_UNSET,
0447         .radio_addr = ADDR_UNSET,
0448         .empress_addr   = 0x20,
0449         .tda9887_conf   = TDA9887_PRESENT,
0450         .gpiomask   = 0x820000,
0451         .inputs     = {{
0452             .type = SAA7134_INPUT_TV,
0453             .vmux = 1,
0454             .amux = TV,
0455             .gpio = 0x20000,
0456         },{
0457             .type = SAA7134_INPUT_SVIDEO,
0458             .vmux = 8,
0459             .amux = LINE1,
0460             .gpio = 0x20000,
0461         },{
0462             .type = SAA7134_INPUT_COMPOSITE1,
0463             .vmux = 3,
0464             .amux = LINE1,
0465             .gpio = 0x20000,
0466         }},
0467         .radio      = {
0468             .type = SAA7134_INPUT_RADIO,
0469             .amux = LINE2,
0470             .gpio = 0x20000,
0471         },
0472         .mpeg           = SAA7134_MPEG_EMPRESS,
0473         .video_out  = CCIR656,
0474     },
0475     [SAA7134_BOARD_CINERGY400] = {
0476         .name           = "Terratec Cinergy 400 TV",
0477         .audio_clock    = 0x00200000,
0478         .tuner_type     = TUNER_PHILIPS_PAL,
0479         .radio_type     = UNSET,
0480         .tuner_addr = ADDR_UNSET,
0481         .radio_addr = ADDR_UNSET,
0482         .inputs         = {{
0483             .type = SAA7134_INPUT_TV,
0484             .vmux = 1,
0485             .amux = TV,
0486         },{
0487             .type = SAA7134_INPUT_COMPOSITE,
0488             .vmux = 4,
0489             .amux = LINE1,
0490         },{
0491             .type = SAA7134_INPUT_SVIDEO,
0492             .vmux = 8,
0493             .amux = LINE1,
0494         },{
0495             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
0496             .vmux = 0,
0497             .amux = LINE1,
0498         }}
0499     },
0500     [SAA7134_BOARD_MD5044] = {
0501         .name           = "Medion 5044",
0502         .audio_clock    = 0x00187de7, /* was: 0x00200000, */
0503         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
0504         .radio_type     = UNSET,
0505         .tuner_addr = ADDR_UNSET,
0506         .radio_addr = ADDR_UNSET,
0507         .tda9887_conf   = TDA9887_PRESENT,
0508         .inputs         = {{
0509             .type = SAA7134_INPUT_TV,
0510             .vmux = 1,
0511             .amux = TV,
0512         },{
0513             /* workaround for problems with normal TV sound */
0514             .type = SAA7134_INPUT_TV_MONO,
0515             .vmux = 1,
0516             .amux = LINE2,
0517         },{
0518             .type = SAA7134_INPUT_COMPOSITE1,
0519             .vmux = 0,
0520             .amux = LINE2,
0521         },{
0522             .type = SAA7134_INPUT_COMPOSITE2,
0523             .vmux = 3,
0524             .amux = LINE2,
0525         },{
0526             .type = SAA7134_INPUT_SVIDEO,
0527             .vmux = 8,
0528             .amux = LINE2,
0529         }},
0530         .radio = {
0531             .type = SAA7134_INPUT_RADIO,
0532             .amux = LINE2,
0533         },
0534     },
0535     [SAA7134_BOARD_KWORLD] = {
0536         .name           = "Kworld/KuroutoShikou SAA7130-TVPCI",
0537         .audio_clock    = 0x00187de7,
0538         .tuner_type     = TUNER_PHILIPS_NTSC_M,
0539         .radio_type     = UNSET,
0540         .tuner_addr = ADDR_UNSET,
0541         .radio_addr = ADDR_UNSET,
0542         .inputs         = {{
0543             .type = SAA7134_INPUT_SVIDEO,
0544             .vmux = 8,
0545             .amux = LINE1,
0546         },{
0547             .type = SAA7134_INPUT_COMPOSITE1,
0548             .vmux = 3,
0549             .amux = LINE1,
0550         },{
0551             .type = SAA7134_INPUT_TV,
0552             .vmux = 1,
0553             .amux = LINE2,
0554         }},
0555     },
0556     [SAA7134_BOARD_CINERGY600] = {
0557         .name           = "Terratec Cinergy 600 TV",
0558         .audio_clock    = 0x00200000,
0559         .tuner_type     = TUNER_PHILIPS_PAL,
0560         .radio_type     = UNSET,
0561         .tuner_addr = ADDR_UNSET,
0562         .radio_addr = ADDR_UNSET,
0563         .tda9887_conf   = TDA9887_PRESENT,
0564         .inputs         = {{
0565             .type = SAA7134_INPUT_TV,
0566             .vmux = 1,
0567             .amux = TV,
0568         },{
0569             .type = SAA7134_INPUT_COMPOSITE1,
0570             .vmux = 4,
0571             .amux = LINE1,
0572         },{
0573             .type = SAA7134_INPUT_SVIDEO,
0574             .vmux = 8,
0575             .amux = LINE1,
0576         },{
0577             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
0578             .vmux = 0,
0579             .amux = LINE1,
0580         }},
0581         .radio = {
0582             .type = SAA7134_INPUT_RADIO,
0583             .amux = LINE2,
0584         },
0585     },
0586     [SAA7134_BOARD_MD7134] = {
0587         .name           = "Medion 7134",
0588         .audio_clock    = 0x00187de7,
0589         .tuner_type     = TUNER_PHILIPS_FMD1216ME_MK3,
0590         .radio_type     = UNSET,
0591         .tuner_addr = ADDR_UNSET,
0592         .radio_addr = ADDR_UNSET,
0593         .tda9887_conf   = TDA9887_PRESENT,
0594         .mpeg           = SAA7134_MPEG_DVB,
0595         .inputs = {{
0596             .type = SAA7134_INPUT_TV,
0597             .vmux   = 1,
0598             .amux   = TV,
0599         },{
0600             .type = SAA7134_INPUT_COMPOSITE1,
0601             .vmux   = 0,
0602             .amux   = LINE1,
0603         },{
0604             .type = SAA7134_INPUT_SVIDEO,
0605             .vmux   = 8,
0606             .amux   = LINE1,
0607         }},
0608         .radio = {
0609             .type = SAA7134_INPUT_RADIO,
0610             .amux   = LINE2,
0611            },
0612            .mute = {
0613                .type = SAA7134_INPUT_MUTE,
0614                .amux = TV,
0615         },
0616     },
0617     [SAA7134_BOARD_TYPHOON_90031] = {
0618         /* aka Typhoon "TV+Radio", Art.Nr 90031 */
0619         /* Tom Zoerner <tomzo at users sourceforge net> */
0620         .name           = "Typhoon TV+Radio 90031",
0621         .audio_clock    = 0x00200000,
0622         .tuner_type     = TUNER_PHILIPS_PAL,
0623         .radio_type     = UNSET,
0624         .tuner_addr = ADDR_UNSET,
0625         .radio_addr = ADDR_UNSET,
0626         .tda9887_conf   = TDA9887_PRESENT,
0627         .inputs         = {{
0628             .type = SAA7134_INPUT_TV,
0629             .vmux   = 1,
0630             .amux   = TV,
0631         },{
0632             .type = SAA7134_INPUT_COMPOSITE1,
0633             .vmux   = 3,
0634             .amux   = LINE1,
0635         },{
0636             .type = SAA7134_INPUT_SVIDEO,
0637             .vmux   = 8,
0638             .amux   = LINE1,
0639         }},
0640         .radio = {
0641             .type = SAA7134_INPUT_RADIO,
0642             .amux   = LINE2,
0643         },
0644     },
0645     [SAA7134_BOARD_ELSA] = {
0646         .name           = "ELSA EX-VISION 300TV",
0647         .audio_clock    = 0x00187de7,
0648         .tuner_type     = TUNER_HITACHI_NTSC,
0649         .radio_type     = UNSET,
0650         .tuner_addr = ADDR_UNSET,
0651         .radio_addr = ADDR_UNSET,
0652         .inputs         = {{
0653             .type = SAA7134_INPUT_SVIDEO,
0654             .vmux = 8,
0655             .amux = LINE1,
0656         },{
0657             .type = SAA7134_INPUT_COMPOSITE1,
0658             .vmux   = 0,
0659             .amux   = LINE1,
0660         },{
0661             .type = SAA7134_INPUT_TV,
0662             .vmux = 4,
0663             .amux = LINE2,
0664         }},
0665     },
0666     [SAA7134_BOARD_ELSA_500TV] = {
0667         .name           = "ELSA EX-VISION 500TV",
0668         .audio_clock    = 0x00187de7,
0669         .tuner_type     = TUNER_HITACHI_NTSC,
0670         .radio_type     = UNSET,
0671         .tuner_addr = ADDR_UNSET,
0672         .radio_addr = ADDR_UNSET,
0673         .inputs         = {{
0674             .type = SAA7134_INPUT_SVIDEO,
0675             .vmux = 7,
0676             .amux = LINE1,
0677         },{
0678             .type = SAA7134_INPUT_TV,
0679             .vmux = 8,
0680             .amux = TV,
0681         },{
0682             .type = SAA7134_INPUT_TV_MONO,
0683             .vmux = 8,
0684             .amux = LINE2,
0685         }},
0686     },
0687     [SAA7134_BOARD_ELSA_700TV] = {
0688         .name           = "ELSA EX-VISION 700TV",
0689         .audio_clock    = 0x00187de7,
0690         .tuner_type     = TUNER_HITACHI_NTSC,
0691         .radio_type     = UNSET,
0692         .tuner_addr = ADDR_UNSET,
0693         .radio_addr = ADDR_UNSET,
0694         .inputs         = {{
0695             .type = SAA7134_INPUT_TV,
0696             .vmux = 4,
0697             .amux = LINE2,
0698         },{
0699             .type = SAA7134_INPUT_COMPOSITE1,
0700             .vmux = 6,
0701             .amux = LINE1,
0702         },{
0703             .type = SAA7134_INPUT_SVIDEO,
0704             .vmux = 7,
0705             .amux = LINE1,
0706         }},
0707         .mute           = {
0708             .type = SAA7134_INPUT_MUTE,
0709             .amux = TV,
0710         },
0711     },
0712     [SAA7134_BOARD_ASUSTeK_TVFM7134] = {
0713         .name           = "ASUS TV-FM 7134",
0714         .audio_clock    = 0x00187de7,
0715         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
0716         .radio_type     = UNSET,
0717         .tuner_addr = ADDR_UNSET,
0718         .radio_addr = ADDR_UNSET,
0719         .tda9887_conf   = TDA9887_PRESENT,
0720         .inputs         = {{
0721             .type = SAA7134_INPUT_TV,
0722             .vmux = 1,
0723             .amux = TV,
0724         },{
0725             .type = SAA7134_INPUT_COMPOSITE1,
0726             .vmux = 4,
0727             .amux = LINE2,
0728         },{
0729             .type = SAA7134_INPUT_SVIDEO,
0730             .vmux = 6,
0731             .amux = LINE2,
0732         }},
0733         .radio = {
0734             .type = SAA7134_INPUT_RADIO,
0735             .amux = LINE1,
0736         },
0737     },
0738     [SAA7134_BOARD_ASUSTeK_TVFM7135] = {
0739         .name           = "ASUS TV-FM 7135",
0740         .audio_clock    = 0x00187de7,
0741         .tuner_type     = TUNER_PHILIPS_TDA8290,
0742         .radio_type     = UNSET,
0743         .tuner_addr = ADDR_UNSET,
0744         .radio_addr = ADDR_UNSET,
0745         .gpiomask       = 0x200000,
0746         .inputs         = {{
0747             .type = SAA7134_INPUT_TV,
0748             .vmux = 1,
0749             .amux = TV,
0750             .gpio = 0x0000,
0751         },{
0752             .type = SAA7134_INPUT_COMPOSITE1,
0753             .vmux = 4,
0754             .amux = LINE2,
0755             .gpio = 0x0000,
0756         },{
0757             .type = SAA7134_INPUT_SVIDEO,
0758             .vmux = 6,
0759             .amux = LINE2,
0760             .gpio = 0x0000,
0761         }},
0762         .radio = {
0763             .type = SAA7134_INPUT_RADIO,
0764             .amux = TV,
0765             .gpio = 0x200000,
0766         },
0767         .mute  = {
0768             .type = SAA7134_INPUT_MUTE,
0769             .gpio = 0x0000,
0770         },
0771 
0772     },
0773     [SAA7134_BOARD_VA1000POWER] = {
0774         .name           = "AOPEN VA1000 POWER",
0775         .audio_clock    = 0x00187de7,
0776         .tuner_type     = TUNER_PHILIPS_NTSC,
0777         .radio_type     = UNSET,
0778         .tuner_addr = ADDR_UNSET,
0779         .radio_addr = ADDR_UNSET,
0780         .inputs         = {{
0781             .type = SAA7134_INPUT_SVIDEO,
0782             .vmux = 8,
0783             .amux = LINE1,
0784         },{
0785             .type = SAA7134_INPUT_COMPOSITE1,
0786             .vmux = 3,
0787             .amux = LINE1,
0788         },{
0789             .type = SAA7134_INPUT_TV,
0790             .vmux = 1,
0791             .amux = LINE2,
0792         }},
0793     },
0794     [SAA7134_BOARD_10MOONSTVMASTER] = {
0795         /* "lilicheng" <llc@linuxfans.org> */
0796         .name           = "10MOONS PCI TV CAPTURE CARD",
0797         .audio_clock    = 0x00200000,
0798         .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
0799         .radio_type     = UNSET,
0800         .tuner_addr = ADDR_UNSET,
0801         .radio_addr = ADDR_UNSET,
0802         .gpiomask       = 0xe000,
0803         .inputs         = {{
0804             .type = SAA7134_INPUT_TV,
0805             .vmux = 1,
0806             .amux = LINE2,
0807             .gpio = 0x0000,
0808         },{
0809             .type = SAA7134_INPUT_COMPOSITE1,
0810             .vmux = 0,
0811             .amux = LINE2,
0812             .gpio = 0x4000,
0813         },{
0814             .type = SAA7134_INPUT_COMPOSITE2,
0815             .vmux = 3,
0816             .amux = LINE2,
0817             .gpio = 0x4000,
0818         },{
0819             .type = SAA7134_INPUT_SVIDEO,
0820             .vmux = 8,
0821             .amux = LINE2,
0822             .gpio = 0x4000,
0823         }},
0824         .radio = {
0825             .type = SAA7134_INPUT_RADIO,
0826             .amux = LINE2,
0827             .gpio = 0x2000,
0828         },
0829         .mute = {
0830             .type = SAA7134_INPUT_MUTE,
0831             .amux = LINE2,
0832             .gpio = 0x8000,
0833         },
0834     },
0835     [SAA7134_BOARD_BMK_MPEX_NOTUNER] = {
0836         /* "Andrew de Quincey" <adq@lidskialf.net> */
0837         .name       = "BMK MPEX No Tuner",
0838         .audio_clock    = 0x200000,
0839         .tuner_type = TUNER_ABSENT,
0840         .radio_type     = UNSET,
0841         .tuner_addr = ADDR_UNSET,
0842         .radio_addr = ADDR_UNSET,
0843         .empress_addr   = 0x20,
0844         .inputs         = {{
0845             .type = SAA7134_INPUT_COMPOSITE1,
0846             .vmux = 4,
0847             .amux = LINE1,
0848         },{
0849             .type = SAA7134_INPUT_COMPOSITE2,
0850             .vmux = 3,
0851             .amux = LINE1,
0852         },{
0853             .type = SAA7134_INPUT_COMPOSITE3,
0854             .vmux = 0,
0855             .amux = LINE1,
0856         },{
0857             .type = SAA7134_INPUT_COMPOSITE4,
0858             .vmux = 1,
0859             .amux = LINE1,
0860         },{
0861             .type = SAA7134_INPUT_SVIDEO,
0862             .vmux = 8,
0863             .amux = LINE1,
0864         }},
0865         .mpeg      = SAA7134_MPEG_EMPRESS,
0866         .video_out = CCIR656,
0867     },
0868     [SAA7134_BOARD_VIDEOMATE_TV] = {
0869         .name           = "Compro VideoMate TV",
0870         .audio_clock    = 0x00187de7,
0871         .tuner_type     = TUNER_PHILIPS_NTSC_M,
0872         .radio_type     = UNSET,
0873         .tuner_addr = ADDR_UNSET,
0874         .radio_addr = ADDR_UNSET,
0875         .inputs         = {{
0876             .type = SAA7134_INPUT_SVIDEO,
0877             .vmux = 8,
0878             .amux = LINE1,
0879         },{
0880             .type = SAA7134_INPUT_COMPOSITE1,
0881             .vmux = 3,
0882             .amux = LINE1,
0883         },{
0884             .type = SAA7134_INPUT_TV,
0885             .vmux = 1,
0886             .amux = LINE2,
0887         }},
0888     },
0889     [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS] = {
0890         .name           = "Compro VideoMate TV Gold+",
0891         .audio_clock    = 0x00187de7,
0892         .tuner_type     = TUNER_PHILIPS_NTSC_M,
0893         .gpiomask       = 0x800c0000,
0894         .radio_type     = UNSET,
0895         .tuner_addr = ADDR_UNSET,
0896         .radio_addr = ADDR_UNSET,
0897         .inputs         = {{
0898             .type = SAA7134_INPUT_SVIDEO,
0899             .vmux = 8,
0900             .amux = LINE1,
0901             .gpio = 0x06c00012,
0902         },{
0903             .type = SAA7134_INPUT_COMPOSITE1,
0904             .vmux = 3,
0905             .amux = LINE1,
0906             .gpio = 0x0ac20012,
0907         },{
0908             .type = SAA7134_INPUT_TV,
0909             .vmux = 1,
0910             .amux = LINE2,
0911             .gpio = 0x08c20012,
0912         }},             /* radio and probably mute is missing */
0913     },
0914     [SAA7134_BOARD_CRONOS_PLUS] = {
0915         /*
0916         gpio pins:
0917             0  .. 3   BASE_ID
0918             4  .. 7   PROTECT_ID
0919             8  .. 11  USER_OUT
0920             12 .. 13  USER_IN
0921             14 .. 15  VIDIN_SEL
0922         */
0923         .name           = "Matrox CronosPlus",
0924         .tuner_type     = TUNER_ABSENT,
0925         .radio_type     = UNSET,
0926         .tuner_addr = ADDR_UNSET,
0927         .radio_addr = ADDR_UNSET,
0928         .gpiomask       = 0xcf00,
0929         .inputs         = {{
0930             .type = SAA7134_INPUT_COMPOSITE1,
0931             .vmux = 0,
0932             .gpio = 2 << 14,
0933         },{
0934             .type = SAA7134_INPUT_COMPOSITE2,
0935             .vmux = 0,
0936             .gpio = 1 << 14,
0937         },{
0938             .type = SAA7134_INPUT_COMPOSITE3,
0939             .vmux = 0,
0940             .gpio = 0 << 14,
0941         },{
0942             .type = SAA7134_INPUT_COMPOSITE4,
0943             .vmux = 0,
0944             .gpio = 3 << 14,
0945         },{
0946             .type = SAA7134_INPUT_SVIDEO,
0947             .vmux = 8,
0948             .gpio = 2 << 14,
0949         }},
0950     },
0951     [SAA7134_BOARD_MD2819] = {
0952         .name           = "AverMedia M156 / Medion 2819",
0953         .audio_clock    = 0x00187de7,
0954         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
0955         .radio_type     = UNSET,
0956         .tuner_addr = ADDR_UNSET,
0957         .radio_addr = ADDR_UNSET,
0958         .tda9887_conf   = TDA9887_PRESENT,
0959         .gpiomask   = 0x03,
0960         .inputs         = {{
0961             .type = SAA7134_INPUT_TV,
0962             .vmux = 1,
0963             .amux = TV,
0964             .gpio = 0x00,
0965         }, {
0966             .type = SAA7134_INPUT_COMPOSITE1,
0967             .vmux = 3,
0968             .amux = LINE1,
0969             .gpio = 0x02,
0970         }, {
0971             .type = SAA7134_INPUT_COMPOSITE2,
0972             .vmux = 0,
0973             .amux = LINE1,
0974             .gpio = 0x02,
0975         }, {
0976             .type = SAA7134_INPUT_SVIDEO,
0977             .vmux = 8,
0978             .amux = LINE1,
0979             .gpio = 0x02,
0980         } },
0981         .radio = {
0982             .type = SAA7134_INPUT_RADIO,
0983             .amux = LINE1,
0984             .gpio = 0x01,
0985         },
0986         .mute  = {
0987             .type = SAA7134_INPUT_MUTE,
0988             .amux = TV,
0989             .gpio = 0x00,
0990         },
0991     },
0992     [SAA7134_BOARD_BMK_MPEX_TUNER] = {
0993         /* "Greg Wickham <greg.wickham@grangenet.net> */
0994         .name           = "BMK MPEX Tuner",
0995         .audio_clock    = 0x200000,
0996         .tuner_type     = TUNER_PHILIPS_PAL,
0997         .radio_type     = UNSET,
0998         .tuner_addr = ADDR_UNSET,
0999         .radio_addr = ADDR_UNSET,
1000         .empress_addr   = 0x20,
1001         .inputs         = {{
1002             .type = SAA7134_INPUT_COMPOSITE1,
1003             .vmux = 1,
1004             .amux = LINE1,
1005         },{
1006             .type = SAA7134_INPUT_SVIDEO,
1007             .vmux = 8,
1008             .amux = LINE1,
1009         },{
1010             .type = SAA7134_INPUT_TV,
1011             .vmux = 3,
1012             .amux = TV,
1013         }},
1014         .mpeg      = SAA7134_MPEG_EMPRESS,
1015         .video_out = CCIR656,
1016     },
1017     [SAA7134_BOARD_ASUSTEK_TVFM7133] = {
1018         .name           = "ASUS TV-FM 7133",
1019         .audio_clock    = 0x00187de7,
1020         /* probably wrong, the 7133 one is the NTSC version ...
1021         * .tuner_type  = TUNER_PHILIPS_FM1236_MK3 */
1022         .tuner_type     = TUNER_LG_NTSC_NEW_TAPC,
1023         .radio_type     = UNSET,
1024         .tuner_addr = ADDR_UNSET,
1025         .radio_addr = ADDR_UNSET,
1026         .tda9887_conf   = TDA9887_PRESENT,
1027         .inputs         = {{
1028             .type = SAA7134_INPUT_TV,
1029             .vmux = 1,
1030             .amux = TV,
1031 
1032         },{
1033             .type = SAA7134_INPUT_COMPOSITE1,
1034             .vmux = 4,
1035             .amux = LINE2,
1036         },{
1037             .type = SAA7134_INPUT_SVIDEO,
1038             .vmux = 6,
1039             .amux = LINE2,
1040         }},
1041         .radio = {
1042             .type = SAA7134_INPUT_RADIO,
1043             .amux = LINE1,
1044         },
1045     },
1046     [SAA7134_BOARD_PINNACLE_PCTV_STEREO] = {
1047         .name           = "Pinnacle PCTV Stereo (saa7134)",
1048         .audio_clock    = 0x00187de7,
1049         .tuner_type     = TUNER_MT2032,
1050         .radio_type     = UNSET,
1051         .tuner_addr = ADDR_UNSET,
1052         .radio_addr = ADDR_UNSET,
1053         .tda9887_conf   = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
1054         .inputs         = {{
1055             .type = SAA7134_INPUT_TV,
1056             .vmux = 3,
1057             .amux = TV,
1058         },{
1059             .type = SAA7134_INPUT_COMPOSITE1,
1060             .vmux = 0,
1061             .amux = LINE2,
1062         },{
1063             .type = SAA7134_INPUT_COMPOSITE2,
1064             .vmux = 1,
1065             .amux = LINE2,
1066         },{
1067             .type = SAA7134_INPUT_SVIDEO,
1068             .vmux = 8,
1069             .amux = LINE2,
1070         }},
1071     },
1072     [SAA7134_BOARD_MANLI_MTV002] = {
1073         /* Ognjen Nastic <ognjen@logosoft.ba> */
1074         .name           = "Manli MuchTV M-TV002",
1075         .audio_clock    = 0x00200000,
1076         .tuner_type     = TUNER_PHILIPS_PAL,
1077         .radio_type     = UNSET,
1078         .tuner_addr = ADDR_UNSET,
1079         .radio_addr = ADDR_UNSET,
1080         .inputs         = {{
1081             .type = SAA7134_INPUT_SVIDEO,
1082             .vmux = 8,
1083             .amux = LINE1,
1084         },{
1085             .type = SAA7134_INPUT_COMPOSITE1,
1086             .vmux   = 1,
1087             .amux   = LINE1,
1088         },{
1089             .type = SAA7134_INPUT_TV,
1090             .vmux = 3,
1091             .amux = LINE2,
1092         }},
1093         .radio = {
1094             .type = SAA7134_INPUT_RADIO,
1095             .amux = LINE2,
1096         },
1097     },
1098     [SAA7134_BOARD_MANLI_MTV001] = {
1099         /* Ognjen Nastic <ognjen@logosoft.ba> UNTESTED */
1100         .name           = "Manli MuchTV M-TV001",
1101         .audio_clock    = 0x00200000,
1102         .tuner_type     = TUNER_PHILIPS_PAL,
1103         .radio_type     = UNSET,
1104         .tuner_addr = ADDR_UNSET,
1105         .radio_addr = ADDR_UNSET,
1106         .inputs         = {{
1107             .type = SAA7134_INPUT_SVIDEO,
1108             .vmux = 8,
1109             .amux = LINE1,
1110         },{
1111             .type = SAA7134_INPUT_COMPOSITE1,
1112             .vmux = 1,
1113             .amux = LINE1,
1114         },{
1115             .type = SAA7134_INPUT_TV,
1116             .vmux = 3,
1117             .amux = LINE2,
1118         }},
1119         .mute = {
1120             .type = SAA7134_INPUT_MUTE,
1121             .amux = LINE1,
1122         },
1123     },
1124     [SAA7134_BOARD_TG3000TV] = {
1125         /* TransGear 3000TV */
1126         .name           = "Nagase Sangyo TransGear 3000TV",
1127         .audio_clock    = 0x00187de7,
1128         .tuner_type     = TUNER_PHILIPS_NTSC_M,
1129         .radio_type     = UNSET,
1130         .tuner_addr = ADDR_UNSET,
1131         .radio_addr = ADDR_UNSET,
1132         .inputs         = {{
1133             .type = SAA7134_INPUT_TV,
1134             .vmux = 1,
1135             .amux = LINE2,
1136         },{
1137             .type = SAA7134_INPUT_COMPOSITE1,
1138             .vmux = 3,
1139             .amux = LINE2,
1140         },{
1141             .type = SAA7134_INPUT_SVIDEO,
1142             .vmux = 8,
1143             .amux = LINE2,
1144         }},
1145     },
1146     [SAA7134_BOARD_ECS_TVP3XP] = {
1147         .name           = "Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) ",
1148         .audio_clock    = 0x187de7,  /* xtal 32.1 MHz */
1149         .tuner_type     = TUNER_PHILIPS_PAL,
1150         .radio_type     = UNSET,
1151         .tuner_addr = ADDR_UNSET,
1152         .radio_addr = ADDR_UNSET,
1153         .inputs         = {{
1154             .type = SAA7134_INPUT_TV,
1155             .vmux   = 1,
1156             .amux   = TV,
1157         },{
1158             .type = SAA7134_INPUT_TV_MONO,
1159             .vmux   = 1,
1160             .amux   = LINE2,
1161         },{
1162             .type = SAA7134_INPUT_COMPOSITE1,
1163             .vmux   = 3,
1164             .amux   = LINE1,
1165         },{
1166             .type = SAA7134_INPUT_SVIDEO,
1167             .vmux   = 8,
1168             .amux   = LINE1,
1169         },{
1170             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
1171             .vmux   = 0,
1172             .amux   = LINE1,
1173         }},
1174         .radio = {
1175             .type = SAA7134_INPUT_RADIO,
1176             .amux   = LINE2,
1177         },
1178     },
1179     [SAA7134_BOARD_ECS_TVP3XP_4CB5] = {
1180         .name           = "Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)",
1181         .audio_clock    = 0x187de7,
1182         .tuner_type     = TUNER_PHILIPS_NTSC,
1183         .radio_type     = UNSET,
1184         .tuner_addr = ADDR_UNSET,
1185         .radio_addr = ADDR_UNSET,
1186         .inputs         = {{
1187             .type = SAA7134_INPUT_TV,
1188             .vmux   = 1,
1189             .amux   = TV,
1190         },{
1191             .type = SAA7134_INPUT_TV_MONO,
1192             .vmux   = 1,
1193             .amux   = LINE2,
1194         },{
1195             .type = SAA7134_INPUT_COMPOSITE1,
1196             .vmux   = 3,
1197             .amux   = LINE1,
1198         },{
1199             .type = SAA7134_INPUT_SVIDEO,
1200             .vmux   = 8,
1201             .amux   = LINE1,
1202         },{
1203             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
1204             .vmux   = 0,
1205             .amux   = LINE1,
1206         }},
1207         .radio = {
1208             .type = SAA7134_INPUT_RADIO,
1209             .amux   = LINE2,
1210         },
1211     },
1212     [SAA7134_BOARD_ECS_TVP3XP_4CB6] = {
1213         /* Barry Scott <barry.scott@onelan.co.uk> */
1214         .name       = "Elitegroup ECS TVP3XP FM1246 Tuner Card (PAL,FM)",
1215         .audio_clock    = 0x187de7,
1216         .tuner_type     = TUNER_PHILIPS_PAL_I,
1217         .radio_type     = UNSET,
1218         .tuner_addr = ADDR_UNSET,
1219         .radio_addr = ADDR_UNSET,
1220         .inputs         = {{
1221             .type = SAA7134_INPUT_TV,
1222             .vmux   = 1,
1223             .amux   = TV,
1224         },{
1225             .type = SAA7134_INPUT_TV_MONO,
1226             .vmux   = 1,
1227             .amux   = LINE2,
1228         },{
1229             .type = SAA7134_INPUT_COMPOSITE1,
1230             .vmux   = 3,
1231             .amux   = LINE1,
1232         },{
1233             .type = SAA7134_INPUT_SVIDEO,
1234             .vmux   = 8,
1235             .amux   = LINE1,
1236         },{
1237             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
1238             .vmux   = 0,
1239             .amux   = LINE1,
1240         }},
1241         .radio = {
1242             .type = SAA7134_INPUT_RADIO,
1243             .amux   = LINE2,
1244         },
1245     },
1246     [SAA7134_BOARD_AVACSSMARTTV] = {
1247         /* Roman Pszonczenko <romka@kolos.math.uni.lodz.pl> */
1248         .name           = "AVACS SmartTV",
1249         .audio_clock    = 0x00187de7,
1250         .tuner_type     = TUNER_PHILIPS_PAL,
1251         .radio_type     = UNSET,
1252         .tuner_addr = ADDR_UNSET,
1253         .radio_addr = ADDR_UNSET,
1254         .inputs         = {{
1255             .type = SAA7134_INPUT_TV,
1256             .vmux = 1,
1257             .amux = TV,
1258         },{
1259             .type = SAA7134_INPUT_TV_MONO,
1260             .vmux = 1,
1261             .amux = LINE2,
1262         },{
1263             .type = SAA7134_INPUT_COMPOSITE1,
1264             .vmux = 0,
1265             .amux = LINE2,
1266         },{
1267             .type = SAA7134_INPUT_COMPOSITE2,
1268             .vmux = 3,
1269             .amux = LINE2,
1270         },{
1271             .type = SAA7134_INPUT_SVIDEO,
1272             .vmux = 8,
1273             .amux = LINE2,
1274         }},
1275         .radio = {
1276             .type = SAA7134_INPUT_RADIO,
1277             .amux = LINE2,
1278             .gpio = 0x200000,
1279         },
1280     },
1281     [SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER] = {
1282         /* Michael Smith <msmith@cbnco.com> */
1283         .name           = "AVerMedia DVD EZMaker",
1284         .audio_clock    = 0x00187de7,
1285         .tuner_type     = TUNER_ABSENT,
1286         .radio_type     = UNSET,
1287         .tuner_addr = ADDR_UNSET,
1288         .radio_addr = ADDR_UNSET,
1289         .inputs         = {{
1290             .type = SAA7134_INPUT_COMPOSITE1,
1291             .vmux = 3,
1292         },{
1293             .type = SAA7134_INPUT_SVIDEO,
1294             .vmux = 8,
1295         }},
1296     },
1297     [SAA7134_BOARD_AVERMEDIA_M103] = {
1298         /* Massimo Piccioni <dafastidio@libero.it> */
1299         .name           = "AVerMedia MiniPCI DVB-T Hybrid M103",
1300         .audio_clock    = 0x187de7,
1301         .tuner_type     = TUNER_XC2028,
1302         .radio_type     = UNSET,
1303         .tuner_addr     = ADDR_UNSET,
1304         .radio_addr     = ADDR_UNSET,
1305          .mpeg           = SAA7134_MPEG_DVB,
1306          .inputs         = {{
1307              .type = SAA7134_INPUT_TV,
1308              .vmux = 1,
1309              .amux = TV,
1310          } },
1311     },
1312     [SAA7134_BOARD_NOVAC_PRIMETV7133] = {
1313         /* toshii@netbsd.org */
1314         .name           = "Noval Prime TV 7133",
1315         .audio_clock    = 0x00200000,
1316         .tuner_type     = TUNER_ALPS_TSBH1_NTSC,
1317         .radio_type     = UNSET,
1318         .tuner_addr = ADDR_UNSET,
1319         .radio_addr = ADDR_UNSET,
1320         .inputs         = {{
1321             .type = SAA7134_INPUT_COMPOSITE1,
1322             .vmux = 3,
1323         },{
1324             .type = SAA7134_INPUT_TV,
1325             .vmux = 1,
1326             .amux = TV,
1327         },{
1328             .type = SAA7134_INPUT_SVIDEO,
1329             .vmux = 8,
1330         }},
1331     },
1332     [SAA7134_BOARD_AVERMEDIA_STUDIO_305] = {
1333         .name           = "AverMedia AverTV Studio 305",
1334         .audio_clock    = 0x00187de7,
1335         .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
1336         .radio_type     = UNSET,
1337         .tuner_addr = ADDR_UNSET,
1338         .radio_addr = ADDR_UNSET,
1339         .tda9887_conf   = TDA9887_PRESENT,
1340         .inputs         = {{
1341             .type = SAA7134_INPUT_TV,
1342             .vmux = 1,
1343             .amux = LINE2,
1344         },{
1345             .type = SAA7134_INPUT_COMPOSITE1,
1346             .vmux = 0,
1347             .amux = LINE2,
1348         },{
1349             .type = SAA7134_INPUT_COMPOSITE2,
1350             .vmux = 3,
1351             .amux = LINE2,
1352         },{
1353             .type = SAA7134_INPUT_SVIDEO,
1354             .vmux = 8,
1355             .amux = LINE2,
1356         }},
1357         .radio = {
1358             .type = SAA7134_INPUT_RADIO,
1359             .amux = LINE2,
1360         },
1361         .mute = {
1362             .type = SAA7134_INPUT_MUTE,
1363             .amux = LINE1,
1364         },
1365     },
1366     [SAA7134_BOARD_AVERMEDIA_STUDIO_505] = {
1367         /* Vasiliy Temnikov <vaka@newmail.ru> */
1368         .name           = "AverMedia AverTV Studio 505",
1369         .audio_clock    = 0x00187de7,
1370         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
1371         .radio_type     = UNSET,
1372         .tuner_addr = ADDR_UNSET,
1373         .radio_addr = ADDR_UNSET,
1374         .tda9887_conf   = TDA9887_PRESENT,
1375         .inputs         = { {
1376             .type = SAA7134_INPUT_TV,
1377             .vmux = 1,
1378             .amux = LINE2,
1379         }, {
1380             .type = SAA7134_INPUT_COMPOSITE1,
1381             .vmux = 0,
1382             .amux = LINE2,
1383         }, {
1384             .type = SAA7134_INPUT_COMPOSITE2,
1385             .vmux = 3,
1386             .amux = LINE2,
1387         },{
1388             .type = SAA7134_INPUT_SVIDEO,
1389             .vmux = 8,
1390             .amux = LINE2,
1391         } },
1392         .radio = {
1393             .type = SAA7134_INPUT_RADIO,
1394             .amux = LINE2,
1395         },
1396         .mute = {
1397             .type = SAA7134_INPUT_MUTE,
1398             .amux = LINE1,
1399         },
1400     },
1401     [SAA7134_BOARD_UPMOST_PURPLE_TV] = {
1402         .name           = "UPMOST PURPLE TV",
1403         .audio_clock    = 0x00187de7,
1404         .tuner_type     = TUNER_PHILIPS_FM1236_MK3,
1405         .radio_type     = UNSET,
1406         .tuner_addr = ADDR_UNSET,
1407         .radio_addr = ADDR_UNSET,
1408         .tda9887_conf   = TDA9887_PRESENT,
1409         .inputs         = {{
1410             .type = SAA7134_INPUT_TV,
1411             .vmux = 7,
1412             .amux = TV,
1413         },{
1414             .type = SAA7134_INPUT_SVIDEO,
1415             .vmux = 7,
1416             .amux = LINE1,
1417         }},
1418     },
1419     [SAA7134_BOARD_ITEMS_MTV005] = {
1420         /* Norman Jonas <normanjonas@arcor.de> */
1421         .name           = "Items MuchTV Plus / IT-005",
1422         .audio_clock    = 0x00187de7,
1423         .tuner_type     = TUNER_PHILIPS_PAL,
1424         .radio_type     = UNSET,
1425         .tuner_addr = ADDR_UNSET,
1426         .radio_addr = ADDR_UNSET,
1427         .inputs         = {{
1428             .type = SAA7134_INPUT_TV,
1429             .vmux = 3,
1430             .amux = TV,
1431         },{
1432             .type = SAA7134_INPUT_COMPOSITE1,
1433             .vmux   = 1,
1434             .amux   = LINE1,
1435         },{
1436             .type = SAA7134_INPUT_SVIDEO,
1437             .vmux = 8,
1438             .amux = LINE1,
1439         }},
1440         .radio = {
1441             .type = SAA7134_INPUT_RADIO,
1442             .amux = LINE2,
1443         },
1444     },
1445     [SAA7134_BOARD_CINERGY200] = {
1446         .name           = "Terratec Cinergy 200 TV",
1447         .audio_clock    = 0x00200000,
1448         .tuner_type     = TUNER_PHILIPS_PAL,
1449         .radio_type     = UNSET,
1450         .tuner_addr = ADDR_UNSET,
1451         .radio_addr = ADDR_UNSET,
1452         .inputs         = {{
1453             .type = SAA7134_INPUT_TV,
1454             .vmux = 1,
1455             .amux = LINE2,
1456         },{
1457             .type = SAA7134_INPUT_COMPOSITE1,
1458             .vmux = 4,
1459             .amux = LINE1,
1460         },{
1461             .type = SAA7134_INPUT_SVIDEO,
1462             .vmux = 8,
1463             .amux = LINE1,
1464         },{
1465             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
1466             .vmux = 0,
1467             .amux = LINE1,
1468         }},
1469         .mute = {
1470             .type = SAA7134_INPUT_MUTE,
1471             .amux = LINE2,
1472         },
1473     },
1474     [SAA7134_BOARD_VIDEOMATE_TV_PVR] = {
1475         /* Alain St-Denis <alain@topaze.homeip.net> */
1476         .name           = "Compro VideoMate TV PVR/FM",
1477         .audio_clock    = 0x00187de7,
1478         .tuner_type     = TUNER_PHILIPS_NTSC_M,
1479         .radio_type     = UNSET,
1480         .tuner_addr = ADDR_UNSET,
1481         .radio_addr = ADDR_UNSET,
1482         .gpiomask   = 0x808c0080,
1483         .inputs         = {{
1484             .type = SAA7134_INPUT_SVIDEO,
1485             .vmux = 8,
1486             .amux = LINE1,
1487             .gpio = 0x00080,
1488         },{
1489             .type = SAA7134_INPUT_COMPOSITE1,
1490             .vmux = 3,
1491             .amux = LINE1,
1492             .gpio = 0x00080,
1493         },{
1494             .type = SAA7134_INPUT_TV,
1495             .vmux = 1,
1496             .amux = LINE2_LEFT,
1497             .gpio = 0x00080,
1498         }},
1499         .radio = {
1500             .type = SAA7134_INPUT_RADIO,
1501             .amux = LINE2,
1502             .gpio = 0x80000,
1503         },
1504         .mute = {
1505             .type = SAA7134_INPUT_MUTE,
1506             .amux = LINE2,
1507             .gpio = 0x40000,
1508         },
1509     },
1510     [SAA7134_BOARD_SABRENT_SBTTVFM] = {
1511         /* Michael Rodriguez-Torrent <mrtorrent@asu.edu> */
1512         .name           = "Sabrent SBT-TVFM (saa7130)",
1513         .audio_clock    = 0x00187de7,
1514         .tuner_type     = TUNER_PHILIPS_NTSC_M,
1515         .radio_type     = UNSET,
1516         .tuner_addr = ADDR_UNSET,
1517         .radio_addr = ADDR_UNSET,
1518         .inputs         = {{
1519             .type = SAA7134_INPUT_COMPOSITE1,
1520             .vmux = 1,
1521             .amux = LINE1,
1522         },{
1523             .type = SAA7134_INPUT_TV,
1524             .vmux = 3,
1525             .amux = LINE2,
1526         },{
1527             .type = SAA7134_INPUT_SVIDEO,
1528             .vmux = 8,
1529             .amux = LINE1,
1530         }},
1531         .radio = {
1532             .type = SAA7134_INPUT_RADIO,
1533             .amux   = LINE2,
1534         },
1535     },
1536     [SAA7134_BOARD_ZOLID_XPERT_TV7134] = {
1537         /* Helge Jensen <helge.jensen@slog.dk> */
1538         .name           = ":Zolid Xpert TV7134",
1539         .audio_clock    = 0x00187de7,
1540         .tuner_type     = TUNER_PHILIPS_NTSC,
1541         .radio_type     = UNSET,
1542         .tuner_addr = ADDR_UNSET,
1543         .radio_addr = ADDR_UNSET,
1544         .inputs         = {{
1545             .type = SAA7134_INPUT_SVIDEO,
1546             .vmux = 8,
1547             .amux = LINE1,
1548         },{
1549             .type = SAA7134_INPUT_COMPOSITE1,
1550             .vmux = 3,
1551             .amux = LINE1,
1552         },{
1553             .type = SAA7134_INPUT_TV,
1554             .vmux = 1,
1555             .amux = LINE2,
1556         }},
1557     },
1558     [SAA7134_BOARD_EMPIRE_PCI_TV_RADIO_LE] = {
1559         /* "Matteo Az" <matte.az@nospam.libero.it> ;-) */
1560         .name           = "Empire PCI TV-Radio LE",
1561         .audio_clock    = 0x00187de7,
1562         .tuner_type     = TUNER_PHILIPS_PAL,
1563         .radio_type     = UNSET,
1564         .tuner_addr = ADDR_UNSET,
1565         .radio_addr = ADDR_UNSET,
1566         .gpiomask       = 0x4000,
1567         .inputs         = {{
1568             .type = SAA7134_INPUT_TV_MONO,
1569             .vmux = 1,
1570             .amux = LINE2,
1571             .gpio = 0x8000,
1572         },{
1573             .type = SAA7134_INPUT_COMPOSITE1,
1574             .vmux = 3,
1575             .amux = LINE1,
1576             .gpio = 0x8000,
1577         },{
1578             .type = SAA7134_INPUT_SVIDEO,
1579             .vmux = 6,
1580             .amux = LINE1,
1581             .gpio = 0x8000,
1582         }},
1583         .radio = {
1584             .type = SAA7134_INPUT_RADIO,
1585             .amux = LINE1,
1586             .gpio = 0x8000,
1587         },
1588         .mute = {
1589             .type = SAA7134_INPUT_MUTE,
1590             .amux = TV,
1591             .gpio =0x8000,
1592         }
1593     },
1594     [SAA7134_BOARD_AVERMEDIA_STUDIO_307] = {
1595         /*
1596         Nickolay V. Shmyrev <nshmyrev@yandex.ru>
1597         Lots of thanks to Andrey Zolotarev <zolotarev_andrey@mail.ru>
1598         */
1599         .name           = "Avermedia AVerTV Studio 307",
1600         .audio_clock    = 0x00187de7,
1601         .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
1602         .radio_type     = UNSET,
1603         .tuner_addr = ADDR_UNSET,
1604         .radio_addr = ADDR_UNSET,
1605         .tda9887_conf   = TDA9887_PRESENT,
1606         .gpiomask       = 0x03,
1607         .inputs         = {{
1608             .type = SAA7134_INPUT_TV,
1609             .vmux = 1,
1610             .amux = TV,
1611             .gpio = 0x00,
1612         },{
1613             .type = SAA7134_INPUT_COMPOSITE,
1614             .vmux = 3,
1615             .amux = LINE1,
1616             .gpio = 0x02,
1617         },{
1618             .type = SAA7134_INPUT_SVIDEO,
1619             .vmux = 8,
1620             .amux = LINE1,
1621             .gpio = 0x02,
1622         }},
1623         .radio = {
1624             .type = SAA7134_INPUT_RADIO,
1625             .amux = LINE1,
1626             .gpio = 0x01,
1627         },
1628         .mute  = {
1629             .type = SAA7134_INPUT_MUTE,
1630             .amux = LINE1,
1631             .gpio = 0x00,
1632         },
1633     },
1634     [SAA7134_BOARD_AVERMEDIA_GO_007_FM] = {
1635         .name           = "Avermedia AVerTV GO 007 FM",
1636         .audio_clock    = 0x00187de7,
1637         .tuner_type     = TUNER_PHILIPS_TDA8290,
1638         .radio_type     = UNSET,
1639         .tuner_addr = ADDR_UNSET,
1640         .radio_addr = ADDR_UNSET,
1641         .gpiomask       = 0x00300003,
1642         /* .gpiomask       = 0x8c240003, */
1643         .inputs         = {{
1644             .type = SAA7134_INPUT_TV,
1645             .vmux = 1,
1646             .amux = TV,
1647             .gpio = 0x01,
1648         },{
1649             .type = SAA7134_INPUT_COMPOSITE1,
1650             .vmux = 0,
1651             .amux = LINE1,
1652             .gpio = 0x02,
1653         },{
1654             .type = SAA7134_INPUT_SVIDEO,
1655             .vmux = 6,
1656             .amux = LINE1,
1657             .gpio = 0x02,
1658         }},
1659         .radio = {
1660             .type = SAA7134_INPUT_RADIO,
1661             .amux = TV,
1662             .gpio = 0x00300001,
1663         },
1664         .mute = {
1665             .type = SAA7134_INPUT_MUTE,
1666             .amux = TV,
1667             .gpio = 0x01,
1668         },
1669     },
1670     [SAA7134_BOARD_AVERMEDIA_CARDBUS] = {
1671         /* Kees.Blom@cwi.nl */
1672         .name           = "AVerMedia Cardbus TV/Radio (E500)",
1673         .audio_clock    = 0x187de7,
1674         .tuner_type     = TUNER_PHILIPS_TDA8290,
1675         .radio_type     = UNSET,
1676         .tuner_addr = ADDR_UNSET,
1677         .radio_addr = ADDR_UNSET,
1678         .inputs         = {{
1679             .type = SAA7134_INPUT_TV,
1680             .vmux = 1,
1681             .amux = TV,
1682         },{
1683             .type = SAA7134_INPUT_COMPOSITE1,
1684             .vmux = 3,
1685             .amux = LINE2,
1686         },{
1687             .type = SAA7134_INPUT_SVIDEO,
1688             .vmux = 8,
1689             .amux = LINE1,
1690         }},
1691         .radio = {
1692             .type = SAA7134_INPUT_RADIO,
1693             .amux = LINE1,
1694         },
1695     },
1696     [SAA7134_BOARD_AVERMEDIA_CARDBUS_501] = {
1697         /* Oldrich Jedlicka <oldium.pro@seznam.cz> */
1698         .name           = "AVerMedia Cardbus TV/Radio (E501R)",
1699         .audio_clock    = 0x187de7,
1700         .tuner_type     = TUNER_ALPS_TSBE5_PAL,
1701         .radio_type     = TUNER_TEA5767,
1702         .tuner_addr = 0x61,
1703         .radio_addr = 0x60,
1704         .tda9887_conf   = TDA9887_PRESENT,
1705         .gpiomask       = 0x08000000,
1706         .inputs         = { {
1707             .type = SAA7134_INPUT_TV,
1708             .vmux = 1,
1709             .amux = TV,
1710             .gpio = 0x08000000,
1711         }, {
1712             .type = SAA7134_INPUT_COMPOSITE1,
1713             .vmux = 3,
1714             .amux = LINE1,
1715             .gpio = 0x08000000,
1716         }, {
1717             .type = SAA7134_INPUT_SVIDEO,
1718             .vmux = 8,
1719             .amux = LINE1,
1720             .gpio = 0x08000000,
1721         } },
1722         .radio = {
1723             .type = SAA7134_INPUT_RADIO,
1724             .amux = LINE2,
1725             .gpio = 0x00000000,
1726         },
1727     },
1728     [SAA7134_BOARD_CINERGY400_CARDBUS] = {
1729         .name           = "Terratec Cinergy 400 mobile",
1730         .audio_clock    = 0x187de7,
1731         .tuner_type     = TUNER_ALPS_TSBE5_PAL,
1732         .radio_type     = UNSET,
1733         .tuner_addr = ADDR_UNSET,
1734         .radio_addr = ADDR_UNSET,
1735         .tda9887_conf   = TDA9887_PRESENT,
1736         .inputs         = {{
1737             .type = SAA7134_INPUT_TV,
1738             .vmux = 1,
1739             .amux = TV,
1740         },{
1741             .type = SAA7134_INPUT_TV_MONO,
1742             .vmux = 1,
1743             .amux = LINE2,
1744         },{
1745             .type = SAA7134_INPUT_COMPOSITE1,
1746             .vmux = 3,
1747             .amux = LINE1,
1748         },{
1749             .type = SAA7134_INPUT_SVIDEO,
1750             .vmux = 8,
1751             .amux = LINE1,
1752         }},
1753     },
1754     [SAA7134_BOARD_CINERGY600_MK3] = {
1755         .name           = "Terratec Cinergy 600 TV MK3",
1756         .audio_clock    = 0x00200000,
1757         .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
1758         .radio_type     = UNSET,
1759         .tuner_addr = ADDR_UNSET,
1760         .radio_addr = ADDR_UNSET,
1761         .rds_addr   = 0x10,
1762         .tda9887_conf   = TDA9887_PRESENT,
1763         .inputs         = {{
1764             .type = SAA7134_INPUT_TV,
1765             .vmux = 1,
1766             .amux = TV,
1767         },{
1768             .type = SAA7134_INPUT_COMPOSITE1,
1769             .vmux = 4,
1770             .amux = LINE1,
1771         },{
1772             .type = SAA7134_INPUT_SVIDEO,
1773             .vmux = 8,
1774             .amux = LINE1,
1775         },{
1776             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
1777             .vmux = 0,
1778             .amux = LINE1,
1779         }},
1780         .radio = {
1781             .type = SAA7134_INPUT_RADIO,
1782             .amux = LINE2,
1783         },
1784     },
1785     [SAA7134_BOARD_VIDEOMATE_GOLD_PLUS] = {
1786         /* Dylan Walkden <dylan_walkden@hotmail.com> */
1787         .name       = "Compro VideoMate Gold+ Pal",
1788         .audio_clock    = 0x00187de7,
1789         .tuner_type     = TUNER_PHILIPS_PAL,
1790         .radio_type     = UNSET,
1791         .tuner_addr = ADDR_UNSET,
1792         .radio_addr = ADDR_UNSET,
1793         .gpiomask   = 0x1ce780,
1794         .inputs     = {{
1795             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
1796             .vmux = 0,
1797             .amux = LINE1,
1798             .gpio = 0x008080,
1799         },{
1800             .type = SAA7134_INPUT_COMPOSITE1,
1801             .vmux = 3,
1802             .amux = LINE1,
1803             .gpio = 0x008080,
1804         },{
1805             .type = SAA7134_INPUT_TV,
1806             .vmux = 1,
1807             .amux = TV,
1808             .gpio = 0x008080,
1809         }},
1810         .radio = {
1811             .type = SAA7134_INPUT_RADIO,
1812             .amux = LINE2,
1813             .gpio = 0x80000,
1814         },
1815         .mute = {
1816             .type = SAA7134_INPUT_MUTE,
1817             .amux = LINE2,
1818             .gpio = 0x0c8000,
1819         },
1820     },
1821     [SAA7134_BOARD_PINNACLE_300I_DVBT_PAL] = {
1822         .name           = "Pinnacle PCTV 300i DVB-T + PAL",
1823         .audio_clock    = 0x00187de7,
1824         .tuner_type     = TUNER_MT2032,
1825         .radio_type     = UNSET,
1826         .tuner_addr = ADDR_UNSET,
1827         .radio_addr = ADDR_UNSET,
1828         .tda9887_conf   = TDA9887_PRESENT | TDA9887_INTERCARRIER | TDA9887_PORT2_INACTIVE,
1829         .mpeg           = SAA7134_MPEG_DVB,
1830         .inputs         = {{
1831             .type = SAA7134_INPUT_TV,
1832             .vmux = 3,
1833             .amux = TV,
1834         },{
1835             .type = SAA7134_INPUT_COMPOSITE1,
1836             .vmux = 0,
1837             .amux = LINE2,
1838         },{
1839             .type = SAA7134_INPUT_COMPOSITE2,
1840             .vmux = 1,
1841             .amux = LINE2,
1842         },{
1843             .type = SAA7134_INPUT_SVIDEO,
1844             .vmux = 8,
1845             .amux = LINE2,
1846         }},
1847     },
1848     [SAA7134_BOARD_PROVIDEO_PV952] = {
1849         /* andreas.kretschmer@web.de */
1850         .name       = "ProVideo PV952",
1851         .audio_clock    = 0x00187de7,
1852         .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
1853         .radio_type     = UNSET,
1854         .tuner_addr = ADDR_UNSET,
1855         .radio_addr = ADDR_UNSET,
1856         .tda9887_conf   = TDA9887_PRESENT,
1857         .inputs         = {{
1858             .type = SAA7134_INPUT_COMPOSITE1,
1859             .vmux = 0,
1860             .amux = LINE1,
1861         },{
1862             .type = SAA7134_INPUT_TV,
1863             .vmux = 1,
1864             .amux = TV,
1865         },{
1866             .type = SAA7134_INPUT_TV_MONO,
1867             .vmux = 1,
1868             .amux = LINE2,
1869         }},
1870         .radio = {
1871             .type = SAA7134_INPUT_RADIO,
1872             .amux = LINE2,
1873         },
1874     },
1875     [SAA7134_BOARD_AVERMEDIA_305] = {
1876         /* much like the "studio" version but without radio
1877         * and another tuner (sirspiritus@yandex.ru) */
1878         .name           = "AverMedia AverTV/305",
1879         .audio_clock    = 0x00187de7,
1880         .tuner_type     = TUNER_PHILIPS_FQ1216ME,
1881         .radio_type     = UNSET,
1882         .tuner_addr = ADDR_UNSET,
1883         .radio_addr = ADDR_UNSET,
1884         .tda9887_conf   = TDA9887_PRESENT,
1885         .inputs         = {{
1886             .type = SAA7134_INPUT_TV,
1887             .vmux = 1,
1888             .amux = LINE2,
1889         },{
1890             .type = SAA7134_INPUT_COMPOSITE1,
1891             .vmux = 0,
1892             .amux = LINE2,
1893         },{
1894             .type = SAA7134_INPUT_COMPOSITE2,
1895             .vmux = 3,
1896             .amux = LINE2,
1897         },{
1898             .type = SAA7134_INPUT_SVIDEO,
1899             .vmux = 8,
1900             .amux = LINE2,
1901         }},
1902         .mute = {
1903             .type = SAA7134_INPUT_MUTE,
1904             .amux = LINE1,
1905         },
1906     },
1907     [SAA7134_BOARD_FLYDVBTDUO] = {
1908         /* LifeView FlyDVB-T DUO */
1909         /* "Nico Sabbi <nsabbi@tiscali.it>  Hartmut Hackmann hartmut.hackmann@t-online.de*/
1910         .name           = "LifeView FlyDVB-T DUO / MSI TV@nywhere Duo",
1911         .audio_clock    = 0x00200000,
1912         .tuner_type     = TUNER_PHILIPS_TDA8290,
1913         .radio_type     = UNSET,
1914         .tuner_addr = ADDR_UNSET,
1915         .radio_addr = ADDR_UNSET,
1916         .gpiomask   = 0x00200000,
1917         .mpeg           = SAA7134_MPEG_DVB,
1918         .inputs         = {{
1919             .type = SAA7134_INPUT_TV,
1920             .vmux = 1,
1921             .amux = TV,
1922             .gpio = 0x200000,   /* GPIO21=High for TV input */
1923         },{
1924             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
1925             .vmux = 0,
1926             .amux = LINE2,
1927         },{
1928             .type = SAA7134_INPUT_COMPOSITE,
1929             .vmux = 3,
1930             .amux = LINE2,
1931         },{
1932             .type = SAA7134_INPUT_SVIDEO,
1933             .vmux = 8,
1934             .amux = LINE2,
1935         }},
1936         .radio = {
1937             .type = SAA7134_INPUT_RADIO,
1938             .amux = TV,
1939             .gpio = 0x000000,   /* GPIO21=Low for FM radio antenna */
1940         },
1941     },
1942     [SAA7134_BOARD_PHILIPS_TOUGH] = {
1943         .name           = "Philips TOUGH DVB-T reference design",
1944         .tuner_type = TUNER_ABSENT,
1945         .audio_clock    = 0x00187de7,
1946         .radio_type     = UNSET,
1947         .tuner_addr = ADDR_UNSET,
1948         .radio_addr = ADDR_UNSET,
1949         .mpeg           = SAA7134_MPEG_DVB,
1950         .inputs = {{
1951             .type = SAA7134_INPUT_COMPOSITE1,
1952             .vmux   = 0,
1953             .amux   = LINE1,
1954         },{
1955             .type = SAA7134_INPUT_SVIDEO,
1956             .vmux   = 8,
1957             .amux   = LINE1,
1958         }},
1959     },
1960     [SAA7134_BOARD_AVERMEDIA_307] = {
1961         /*
1962         Davydov Vladimir <vladimir@iqmedia.com>
1963         */
1964         .name           = "Avermedia AVerTV 307",
1965         .audio_clock    = 0x00187de7,
1966         .tuner_type     = TUNER_PHILIPS_FQ1216ME,
1967         .radio_type     = UNSET,
1968         .tuner_addr = ADDR_UNSET,
1969         .radio_addr = ADDR_UNSET,
1970         .tda9887_conf   = TDA9887_PRESENT,
1971         .inputs         = {{
1972             .type = SAA7134_INPUT_TV,
1973             .vmux = 1,
1974             .amux = TV,
1975         },{
1976             .type = SAA7134_INPUT_COMPOSITE1,
1977             .vmux = 0,
1978             .amux = LINE1,
1979         },{
1980             .type = SAA7134_INPUT_COMPOSITE2,
1981             .vmux = 3,
1982             .amux = LINE1,
1983         },{
1984             .type = SAA7134_INPUT_SVIDEO,
1985             .vmux = 8,
1986             .amux = LINE1,
1987         }},
1988     },
1989     [SAA7134_BOARD_ADS_INSTANT_TV] = {
1990         .name           = "ADS Tech Instant TV (saa7135)",
1991         .audio_clock    = 0x00187de7,
1992         .tuner_type     = TUNER_PHILIPS_TDA8290,
1993         .radio_type     = UNSET,
1994         .tuner_addr = ADDR_UNSET,
1995         .radio_addr = ADDR_UNSET,
1996         .inputs         = {{
1997             .type = SAA7134_INPUT_TV,
1998             .vmux = 1,
1999             .amux = TV,
2000         },{
2001             .type = SAA7134_INPUT_COMPOSITE1,
2002             .vmux = 3,
2003             .amux = LINE2,
2004         },{
2005             .type = SAA7134_INPUT_SVIDEO,
2006             .vmux = 8,
2007             .amux = LINE2,
2008         }},
2009     },
2010     [SAA7134_BOARD_KWORLD_VSTREAM_XPERT] = {
2011         .name           = "Kworld/Tevion V-Stream Xpert TV PVR7134",
2012         .audio_clock    = 0x00187de7,
2013         .tuner_type     = TUNER_PHILIPS_PAL_I,
2014         .radio_type     = UNSET,
2015         .tuner_addr = ADDR_UNSET,
2016         .radio_addr = ADDR_UNSET,
2017         .gpiomask   = 0x0700,
2018         .inputs = {{
2019             .type = SAA7134_INPUT_TV,
2020             .vmux   = 1,
2021             .amux   = TV,
2022             .gpio   = 0x000,
2023         },{
2024             .type = SAA7134_INPUT_COMPOSITE1,
2025             .vmux   = 3,
2026             .amux   = LINE1,
2027             .gpio   = 0x200,        /* gpio by DScaler */
2028         },{
2029             .type = SAA7134_INPUT_SVIDEO,
2030             .vmux   = 0,
2031             .amux   = LINE1,
2032             .gpio   = 0x200,
2033         }},
2034         .radio = {
2035             .type = SAA7134_INPUT_RADIO,
2036             .amux   = LINE1,
2037             .gpio   = 0x100,
2038         },
2039         .mute  = {
2040             .type = SAA7134_INPUT_MUTE,
2041             .amux = TV,
2042             .gpio = 0x000,
2043         },
2044     },
2045     [SAA7134_BOARD_FLYDVBT_DUO_CARDBUS] = {
2046         .name       = "LifeView/Typhoon/Genius FlyDVB-T Duo Cardbus",
2047         .audio_clock    = 0x00200000,
2048         .tuner_type     = TUNER_PHILIPS_TDA8290,
2049         .radio_type     = UNSET,
2050         .tuner_addr = ADDR_UNSET,
2051         .radio_addr = ADDR_UNSET,
2052         .mpeg           = SAA7134_MPEG_DVB,
2053         .gpiomask   = 0x00200000,
2054         .inputs         = {{
2055             .type = SAA7134_INPUT_TV,
2056             .vmux = 1,
2057             .amux = TV,
2058             .gpio = 0x200000,   /* GPIO21=High for TV input */
2059         },{
2060             .type = SAA7134_INPUT_SVIDEO,
2061             .vmux = 8,
2062             .amux = LINE2,
2063         },{
2064             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
2065             .vmux = 0,
2066             .amux = LINE2,
2067         },{
2068             .type = SAA7134_INPUT_COMPOSITE2,
2069             .vmux = 3,
2070             .amux = LINE2,
2071         }},
2072         .radio = {
2073             .type = SAA7134_INPUT_RADIO,
2074             .amux = TV,
2075             .gpio = 0x000000,   /* GPIO21=Low for FM radio antenna */
2076         },
2077     },
2078     [SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII] = {
2079         .name           = "Compro VideoMate TV Gold+II",
2080         .audio_clock    = 0x002187de7,
2081         .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
2082         .radio_type     = TUNER_TEA5767,
2083         .tuner_addr     = 0x63,
2084         .radio_addr     = 0x60,
2085         .gpiomask       = 0x8c1880,
2086         .inputs         = {{
2087             .type = SAA7134_INPUT_SVIDEO,
2088             .vmux = 0,
2089             .amux = LINE1,
2090             .gpio = 0x800800,
2091         },{
2092             .type = SAA7134_INPUT_COMPOSITE1,
2093             .vmux = 3,
2094             .amux = LINE1,
2095             .gpio = 0x801000,
2096         },{
2097             .type = SAA7134_INPUT_TV,
2098             .vmux = 1,
2099             .amux = TV,
2100             .gpio = 0x800000,
2101         }},
2102         .radio = {
2103             .type = SAA7134_INPUT_RADIO,
2104             .amux = TV,
2105             .gpio = 0x880000,
2106         },
2107         .mute = {
2108             .type = SAA7134_INPUT_MUTE,
2109             .amux = LINE2,
2110             .gpio = 0x840000,
2111         },
2112     },
2113     [SAA7134_BOARD_KWORLD_XPERT] = {
2114         /*
2115         FIXME:
2116         - Remote control doesn't initialize properly.
2117         - Audio volume starts muted,
2118         then gradually increases after channel change.
2119         - Overlay scaling problems (application error?)
2120         - Composite S-Video untested.
2121         From: Konrad Rzepecki <hannibal@megapolis.pl>
2122         */
2123         .name           = "Kworld Xpert TV PVR7134",
2124         .audio_clock    = 0x00187de7,
2125         .tuner_type     = TUNER_TENA_9533_DI,
2126         .radio_type     = TUNER_TEA5767,
2127         .tuner_addr = 0x61,
2128         .radio_addr = 0x60,
2129         .gpiomask   = 0x0700,
2130         .inputs = {{
2131             .type = SAA7134_INPUT_TV,
2132             .vmux   = 1,
2133             .amux   = TV,
2134             .gpio   = 0x000,
2135         },{
2136             .type = SAA7134_INPUT_COMPOSITE1,
2137             .vmux   = 3,
2138             .amux   = LINE1,
2139             .gpio   = 0x200,        /* gpio by DScaler */
2140         },{
2141             .type = SAA7134_INPUT_SVIDEO,
2142             .vmux   = 0,
2143             .amux   = LINE1,
2144             .gpio   = 0x200,
2145         }},
2146         .radio = {
2147             .type = SAA7134_INPUT_RADIO,
2148             .amux   = LINE1,
2149             .gpio   = 0x100,
2150         },
2151         .mute = {
2152             .type = SAA7134_INPUT_MUTE,
2153             .amux = TV,
2154             .gpio = 0x000,
2155         },
2156     },
2157     [SAA7134_BOARD_FLYTV_DIGIMATRIX] = {
2158         .name       = "FlyTV mini Asus Digimatrix",
2159         .audio_clock    = 0x00200000,
2160         .tuner_type = TUNER_LG_TALN,
2161         .radio_type     = UNSET,
2162         .tuner_addr = ADDR_UNSET,
2163         .radio_addr = ADDR_UNSET,
2164         .inputs         = {{
2165             .type = SAA7134_INPUT_TV,
2166             .vmux = 1,
2167             .amux = TV,
2168         },{
2169             .type = SAA7134_INPUT_TV_MONO,
2170             .vmux = 1,
2171             .amux = LINE2,
2172         },{
2173             .type = SAA7134_INPUT_COMPOSITE1,
2174             .vmux = 0,
2175             .amux = LINE2,
2176         },{
2177             .type = SAA7134_INPUT_COMPOSITE2,
2178             .vmux = 3,
2179             .amux = LINE2,
2180         },{
2181             .type = SAA7134_INPUT_SVIDEO,
2182             .vmux = 8,
2183             .amux = LINE2,
2184         }},
2185         .radio = {
2186             .type = SAA7134_INPUT_RADIO,        /* radio unconfirmed */
2187             .amux = LINE2,
2188         },
2189     },
2190     [SAA7134_BOARD_KWORLD_TERMINATOR] = {
2191         /* Kworld V-Stream Studio TV Terminator */
2192         /* "James Webb <jrwebb@qwest.net> */
2193         .name           = "V-Stream Studio TV Terminator",
2194         .audio_clock    = 0x00187de7,
2195         .tuner_type     = TUNER_PHILIPS_TDA8290,
2196         .radio_type     = UNSET,
2197         .tuner_addr     = ADDR_UNSET,
2198         .radio_addr     = ADDR_UNSET,
2199         .gpiomask       = 1 << 21,
2200         .inputs         = {{
2201             .type = SAA7134_INPUT_TV,
2202             .vmux = 1,
2203             .amux = TV,
2204             .gpio = 0x0000000,
2205         },{
2206             .type = SAA7134_INPUT_COMPOSITE1,
2207             .vmux = 3,
2208             .amux = LINE2,
2209             .gpio = 0x0000000,
2210         },{
2211             .type = SAA7134_INPUT_SVIDEO,
2212             .vmux = 8,
2213             .amux = LINE2,
2214             .gpio = 0x0000000,
2215         }},
2216         .radio = {
2217             .type = SAA7134_INPUT_RADIO,
2218             .amux = TV,
2219             .gpio = 0x0200000,
2220         },
2221     },
2222     [SAA7134_BOARD_YUAN_TUN900] = {
2223         /* FIXME:
2224          * S-Video and composite sources untested.
2225          * Radio not working.
2226          * Remote control not yet implemented.
2227          * From : codemaster@webgeeks.be */
2228         .name           = "Yuan TUN-900 (saa7135)",
2229         .audio_clock    = 0x00187de7,
2230         .tuner_type     = TUNER_PHILIPS_TDA8290,
2231         .radio_type     = UNSET,
2232         .tuner_addr= ADDR_UNSET,
2233         .radio_addr= ADDR_UNSET,
2234         .gpiomask       = 0x00010003,
2235         .inputs         = {{
2236             .type = SAA7134_INPUT_TV,
2237             .vmux = 1,
2238             .amux = TV,
2239             .gpio = 0x01,
2240         },{
2241             .type = SAA7134_INPUT_COMPOSITE1,
2242             .vmux = 0,
2243             .amux = LINE2,
2244             .gpio = 0x02,
2245         },{
2246             .type = SAA7134_INPUT_SVIDEO,
2247             .vmux = 6,
2248             .amux = LINE2,
2249             .gpio = 0x02,
2250         }},
2251         .radio = {
2252             .type = SAA7134_INPUT_RADIO,
2253             .amux = LINE1,
2254             .gpio = 0x00010003,
2255         },
2256         .mute = {
2257             .type = SAA7134_INPUT_MUTE,
2258             .amux = TV,
2259             .gpio = 0x01,
2260         },
2261     },
2262     [SAA7134_BOARD_BEHOLD_409FM] = {
2263         /* <http://tuner.beholder.ru>, Sergey <skiv@orel.ru> */
2264         /*       Beholder Intl. Ltd. 2008      */
2265         /*Dmitry Belimov <d.belimov@gmail.com> */
2266         .name           = "Beholder BeholdTV 409 FM",
2267         .audio_clock    = 0x00187de7,
2268         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
2269         .radio_type     = UNSET,
2270         .tuner_addr     = ADDR_UNSET,
2271         .radio_addr     = ADDR_UNSET,
2272         .tda9887_conf   = TDA9887_PRESENT,
2273         .gpiomask       = 0x00008000,
2274         .inputs         = {{
2275               .type = SAA7134_INPUT_TV,
2276               .vmux = 3,
2277               .amux = TV,
2278         },{
2279               .type = SAA7134_INPUT_COMPOSITE1,
2280               .vmux = 1,
2281               .amux = LINE1,
2282         },{
2283               .type = SAA7134_INPUT_SVIDEO,
2284               .vmux = 8,
2285               .amux = LINE1,
2286         }},
2287         .radio = {
2288               .type = SAA7134_INPUT_RADIO,
2289               .amux = LINE2,
2290         },
2291     },
2292     [SAA7134_BOARD_GOTVIEW_7135] = {
2293         /* Mike Baikov <mike@baikov.com> */
2294         /* Andrey Cvetcov <ays14@yandex.ru> */
2295         .name            = "GoTView 7135 PCI",
2296         .audio_clock     = 0x00187de7,
2297         .tuner_type      = TUNER_PHILIPS_FM1216ME_MK3,
2298         .radio_type      = UNSET,
2299         .tuner_addr      = ADDR_UNSET,
2300         .radio_addr      = ADDR_UNSET,
2301         .tda9887_conf    = TDA9887_PRESENT,
2302         .gpiomask        = 0x00200003,
2303         .inputs          = {{
2304             .type = SAA7134_INPUT_TV,
2305             .vmux = 1,
2306             .amux = TV,
2307             .gpio = 0x00200003,
2308         },{
2309             .type = SAA7134_INPUT_TV_MONO,
2310             .vmux = 1,
2311             .amux = LINE2,
2312             .gpio = 0x00200003,
2313         },{
2314             .type = SAA7134_INPUT_COMPOSITE1,
2315             .vmux = 3,
2316             .amux = LINE1,
2317             .gpio = 0x00200003,
2318         },{
2319             .type = SAA7134_INPUT_SVIDEO,
2320             .vmux = 8,
2321             .amux = LINE1,
2322             .gpio = 0x00200003,
2323         }},
2324         .radio = {
2325             .type = SAA7134_INPUT_RADIO,
2326             .amux = LINE2,
2327             .gpio = 0x00200003,
2328         },
2329         .mute = {
2330             .type = SAA7134_INPUT_MUTE,
2331             .amux = TV,
2332             .gpio = 0x00200003,
2333         },
2334     },
2335     [SAA7134_BOARD_PHILIPS_EUROPA] = {
2336         .name           = "Philips EUROPA V3 reference design",
2337         .audio_clock    = 0x00187de7,
2338         .tuner_type     = TUNER_PHILIPS_TD1316,
2339         .radio_type     = UNSET,
2340         .tuner_addr = 0x61,
2341         .radio_addr = ADDR_UNSET,
2342         .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
2343         .mpeg           = SAA7134_MPEG_DVB,
2344         .inputs = {{
2345             .type = SAA7134_INPUT_TV,
2346             .vmux   = 3,
2347             .amux   = TV,
2348         },{
2349             .type = SAA7134_INPUT_COMPOSITE1,
2350             .vmux   = 0,
2351             .amux   = LINE2,
2352         },{
2353             .type = SAA7134_INPUT_SVIDEO,
2354             .vmux   = 8,
2355             .amux   = LINE2,
2356         }},
2357     },
2358     [SAA7134_BOARD_VIDEOMATE_DVBT_300] = {
2359         .name           = "Compro Videomate DVB-T300",
2360         .audio_clock    = 0x00187de7,
2361         .tuner_type     = TUNER_PHILIPS_TD1316,
2362         .radio_type     = UNSET,
2363         .tuner_addr = 0x61,
2364         .radio_addr = ADDR_UNSET,
2365         .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
2366         .mpeg           = SAA7134_MPEG_DVB,
2367         .inputs = {{
2368             .type = SAA7134_INPUT_TV,
2369             .vmux   = 3,
2370             .amux   = TV,
2371         },{
2372             .type = SAA7134_INPUT_COMPOSITE1,
2373             .vmux   = 1,
2374             .amux   = LINE2,
2375         },{
2376             .type = SAA7134_INPUT_SVIDEO,
2377             .vmux   = 8,
2378             .amux   = LINE2,
2379         }},
2380     },
2381     [SAA7134_BOARD_VIDEOMATE_DVBT_200] = {
2382         .name           = "Compro Videomate DVB-T200",
2383         .tuner_type = TUNER_ABSENT,
2384         .audio_clock    = 0x00187de7,
2385         .radio_type     = UNSET,
2386         .tuner_addr = ADDR_UNSET,
2387         .radio_addr = ADDR_UNSET,
2388         .mpeg           = SAA7134_MPEG_DVB,
2389         .inputs = {{
2390             .type = SAA7134_INPUT_COMPOSITE1,
2391             .vmux   = 0,
2392             .amux   = LINE1,
2393         },{
2394             .type = SAA7134_INPUT_SVIDEO,
2395             .vmux   = 8,
2396             .amux   = LINE1,
2397         }},
2398     },
2399     [SAA7134_BOARD_RTD_VFG7350] = {
2400         .name       = "RTD Embedded Technologies VFG7350",
2401         .audio_clock    = 0x00200000,
2402         .tuner_type = TUNER_ABSENT,
2403         .radio_type = UNSET,
2404         .tuner_addr = ADDR_UNSET,
2405         .radio_addr = ADDR_UNSET,
2406         .empress_addr   = 0x21,
2407         .inputs     = {{
2408             .type = SAA7134_INPUT_COMPOSITE0,
2409             .vmux   = 0,
2410             .amux   = LINE1,
2411         },{
2412             .type = SAA7134_INPUT_COMPOSITE1,
2413             .vmux   = 1,
2414             .amux   = LINE2,
2415         },{
2416             .type = SAA7134_INPUT_COMPOSITE2,
2417             .vmux   = 2,
2418             .amux   = LINE1,
2419         },{
2420             .type = SAA7134_INPUT_COMPOSITE3,
2421             .vmux   = 3,
2422             .amux   = LINE2,
2423         },{
2424             .type = SAA7134_INPUT_SVIDEO0,
2425 
2426             .vmux   = 8,
2427             .amux   = LINE1,
2428         },{
2429             .type = SAA7134_INPUT_SVIDEO1,
2430             .vmux   = 9,
2431             .amux   = LINE2,
2432         }},
2433         .mpeg           = SAA7134_MPEG_EMPRESS,
2434         .video_out      = CCIR656,
2435         .vid_port_opts  = ( SET_T_CODE_POLARITY_NON_INVERTED |
2436                     SET_CLOCK_NOT_DELAYED |
2437                     SET_CLOCK_INVERTED |
2438                     SET_VSYNC_OFF ),
2439     },
2440     [SAA7134_BOARD_RTD_VFG7330] = {
2441         .name       = "RTD Embedded Technologies VFG7330",
2442         .audio_clock    = 0x00200000,
2443         .tuner_type = TUNER_ABSENT,
2444         .radio_type = UNSET,
2445         .tuner_addr = ADDR_UNSET,
2446         .radio_addr = ADDR_UNSET,
2447         .inputs     = {{
2448             .type = SAA7134_INPUT_COMPOSITE0,
2449             .vmux   = 0,
2450             .amux   = LINE1,
2451         },{
2452             .type = SAA7134_INPUT_COMPOSITE1,
2453             .vmux   = 1,
2454             .amux   = LINE2,
2455         },{
2456             .type = SAA7134_INPUT_COMPOSITE2,
2457             .vmux   = 2,
2458             .amux   = LINE1,
2459         },{
2460             .type = SAA7134_INPUT_COMPOSITE3,
2461             .vmux   = 3,
2462             .amux   = LINE2,
2463         },{
2464             .type = SAA7134_INPUT_SVIDEO0,
2465             .vmux   = 8,
2466             .amux   = LINE1,
2467         },{
2468             .type = SAA7134_INPUT_SVIDEO1,
2469             .vmux   = 9,
2470             .amux   = LINE2,
2471         }},
2472     },
2473     [SAA7134_BOARD_FLYTVPLATINUM_MINI2] = {
2474         .name           = "LifeView FlyTV Platinum Mini2",
2475         .audio_clock    = 0x00200000,
2476         .tuner_type     = TUNER_PHILIPS_TDA8290,
2477         .radio_type     = UNSET,
2478         .tuner_addr = ADDR_UNSET,
2479         .radio_addr = ADDR_UNSET,
2480 
2481         .inputs         = {{
2482             .type = SAA7134_INPUT_TV,
2483             .vmux = 1,
2484             .amux = TV,
2485         },{
2486             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
2487             .vmux = 0,
2488             .amux = LINE2,
2489         },{
2490             .type = SAA7134_INPUT_COMPOSITE,
2491             .vmux = 3,
2492             .amux = LINE2,
2493         },{
2494             .type = SAA7134_INPUT_SVIDEO,
2495             .vmux = 8,
2496             .amux = LINE2,
2497         }},
2498     },
2499     [SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180] = {
2500         /* Michael Krufky <mkrufky@linuxtv.org>
2501          * Uses Alps Electric TDHU2, containing NXT2004 ATSC Decoder
2502          * AFAIK, there is no analog demod, thus,
2503          * no support for analog television.
2504          */
2505         .name           = "AVerMedia AVerTVHD MCE A180",
2506         .audio_clock    = 0x00187de7,
2507         .tuner_type     = TUNER_ABSENT,
2508         .radio_type     = UNSET,
2509         .tuner_addr     = ADDR_UNSET,
2510         .radio_addr     = ADDR_UNSET,
2511         .mpeg           = SAA7134_MPEG_DVB,
2512         .inputs         = {{
2513             .type = SAA7134_INPUT_COMPOSITE1,
2514             .vmux = 3,
2515             .amux = LINE2,
2516         },{
2517             .type = SAA7134_INPUT_SVIDEO,
2518             .vmux = 8,
2519             .amux = LINE2,
2520         }},
2521     },
2522     [SAA7134_BOARD_MONSTERTV_MOBILE] = {
2523         .name           = "SKNet MonsterTV Mobile",
2524         .audio_clock    = 0x00187de7,
2525         .tuner_type     = TUNER_PHILIPS_TDA8290,
2526         .radio_type     = UNSET,
2527         .tuner_addr = ADDR_UNSET,
2528         .radio_addr = ADDR_UNSET,
2529 
2530         .inputs         = {{
2531               .type = SAA7134_INPUT_TV,
2532               .vmux = 1,
2533               .amux = TV,
2534         },{
2535               .type = SAA7134_INPUT_COMPOSITE1,
2536               .vmux = 3,
2537               .amux = LINE1,
2538         },{
2539               .type = SAA7134_INPUT_SVIDEO,
2540               .vmux = 6,
2541               .amux = LINE1,
2542         }},
2543     },
2544     [SAA7134_BOARD_PINNACLE_PCTV_110i] = {
2545            .name           = "Pinnacle PCTV 40i/50i/110i (saa7133)",
2546         .audio_clock    = 0x00187de7,
2547         .tuner_type     = TUNER_PHILIPS_TDA8290,
2548         .radio_type     = UNSET,
2549         .tuner_addr     = ADDR_UNSET,
2550         .radio_addr     = ADDR_UNSET,
2551         .gpiomask       = 0x080200000,
2552         .inputs         = { {
2553             .type = SAA7134_INPUT_TV,
2554             .vmux = 4,
2555             .amux = TV,
2556         }, {
2557             .type = SAA7134_INPUT_COMPOSITE1,
2558             .vmux = 1,
2559             .amux = LINE2,
2560         }, {
2561             .type = SAA7134_INPUT_COMPOSITE2,
2562             .vmux = 0,
2563             .amux = LINE2,
2564         }, {
2565             .type = SAA7134_INPUT_SVIDEO,
2566             .vmux = 8,
2567             .amux = LINE2,
2568         } },
2569         .radio = {
2570             .type = SAA7134_INPUT_RADIO,
2571             .amux = TV,
2572             .gpio = 0x0200000,
2573         },
2574     },
2575     [SAA7134_BOARD_ASUSTeK_P7131_DUAL] = {
2576         .name           = "ASUSTeK P7131 Dual",
2577         .audio_clock    = 0x00187de7,
2578         .tuner_type     = TUNER_PHILIPS_TDA8290,
2579         .radio_type     = UNSET,
2580         .tuner_addr = ADDR_UNSET,
2581         .radio_addr = ADDR_UNSET,
2582         .gpiomask   = 1 << 21,
2583         .mpeg           = SAA7134_MPEG_DVB,
2584         .inputs         = {{
2585             .type = SAA7134_INPUT_TV,
2586             .vmux = 1,
2587             .amux = TV,
2588             .gpio = 0x0000000,
2589         },{
2590             .type = SAA7134_INPUT_COMPOSITE1,
2591             .vmux = 3,
2592             .amux = LINE2,
2593             .gpio = 0x0200000,
2594         },{
2595             .type = SAA7134_INPUT_COMPOSITE2,
2596             .vmux = 0,
2597             .amux = LINE2,
2598             .gpio = 0x0200000,
2599         },{
2600             .type = SAA7134_INPUT_SVIDEO,
2601             .vmux = 8,
2602             .amux = LINE2,
2603             .gpio = 0x0200000,
2604         }},
2605         .radio = {
2606             .type = SAA7134_INPUT_RADIO,
2607             .amux = TV,
2608             .gpio = 0x0200000,
2609         },
2610     },
2611     [SAA7134_BOARD_SEDNA_PC_TV_CARDBUS] = {
2612         /* Paul Tom Zalac <pzalac@gmail.com> */
2613         /* Pavel Mihaylov <bin@bash.info> */
2614         .name           = "Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)",
2615                 /* Sedna/MuchTV (OEM) Cardbus TV Tuner */
2616         .audio_clock    = 0x00187de7,
2617         .tuner_type     = TUNER_PHILIPS_TDA8290,
2618         .radio_type     = UNSET,
2619         .tuner_addr     = ADDR_UNSET,
2620         .radio_addr     = ADDR_UNSET,
2621         .gpiomask       = 0xe880c0,
2622         .inputs         = {{
2623             .type = SAA7134_INPUT_TV,
2624             .vmux = 3,
2625             .amux = TV,
2626         },{
2627             .type = SAA7134_INPUT_COMPOSITE1,
2628             .vmux = 1,
2629             .amux = LINE1,
2630         },{
2631             .type = SAA7134_INPUT_SVIDEO,
2632             .vmux = 6,
2633             .amux = LINE1,
2634         }},
2635         .radio = {
2636             .type = SAA7134_INPUT_RADIO,
2637             .amux = LINE2,
2638         },
2639     },
2640     [SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV] = {
2641         /* "Cyril Lacoux (Yack)" <clacoux@ifeelgood.org> */
2642         .name           = "ASUS Digimatrix TV",
2643         .audio_clock    = 0x00200000,
2644         .tuner_type     = TUNER_PHILIPS_FQ1216ME,
2645         .tda9887_conf   = TDA9887_PRESENT,
2646         .radio_type     = UNSET,
2647         .tuner_addr     = ADDR_UNSET,
2648         .radio_addr     = ADDR_UNSET,
2649         .inputs         = {{
2650             .type = SAA7134_INPUT_TV,
2651             .vmux = 1,
2652             .amux = TV,
2653         },{
2654             .type = SAA7134_INPUT_COMPOSITE1,
2655             .vmux = 3,
2656             .amux = LINE1,
2657         },{
2658             .type = SAA7134_INPUT_SVIDEO,
2659             .vmux = 8,
2660             .amux = LINE1,
2661         }},
2662     },
2663     [SAA7134_BOARD_PHILIPS_TIGER] = {
2664         .name           = "Philips Tiger reference design",
2665         .audio_clock    = 0x00187de7,
2666         .tuner_type     = TUNER_PHILIPS_TDA8290,
2667         .radio_type     = UNSET,
2668         .tuner_addr = ADDR_UNSET,
2669         .radio_addr = ADDR_UNSET,
2670         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_OFF },
2671         .mpeg           = SAA7134_MPEG_DVB,
2672         .gpiomask       = 0x0200000,
2673         .inputs = {{
2674             .type = SAA7134_INPUT_TV,
2675             .vmux   = 1,
2676             .amux   = TV,
2677         },{
2678             .type = SAA7134_INPUT_COMPOSITE1,
2679             .vmux   = 3,
2680             .amux   = LINE1,
2681         },{
2682             .type = SAA7134_INPUT_SVIDEO,
2683             .vmux   = 8,
2684             .amux   = LINE1,
2685         }},
2686         .radio = {
2687             .type = SAA7134_INPUT_RADIO,
2688             .amux   = TV,
2689             .gpio   = 0x0200000,
2690         },
2691     },
2692     [SAA7134_BOARD_MSI_TVATANYWHERE_PLUS] = {
2693         .name           = "MSI TV@Anywhere plus",
2694         .audio_clock    = 0x00187de7,
2695         .tuner_type     = TUNER_PHILIPS_TDA8290,
2696         .radio_type     = UNSET,
2697         .tuner_addr = ADDR_UNSET,
2698         .radio_addr = ADDR_UNSET,
2699         .gpiomask       = 1 << 21,
2700         .inputs = {{
2701             .type = SAA7134_INPUT_TV,
2702             .vmux   = 1,
2703             .amux   = TV,
2704         },{
2705             .type = SAA7134_INPUT_COMPOSITE,
2706             .vmux   = 3,
2707             .amux   = LINE2,    /* unconfirmed, taken from Philips driver */
2708         },{
2709             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
2710             .vmux   = 0,        /* untested */
2711             .amux   = LINE2,
2712         },{
2713             .type = SAA7134_INPUT_SVIDEO,
2714             .vmux   = 8,
2715             .amux   = LINE2,
2716         }},
2717         .radio = {
2718             .type = SAA7134_INPUT_RADIO,
2719             .amux   = TV,
2720             .gpio   = 0x0200000,
2721         },
2722     },
2723     [SAA7134_BOARD_CINERGY250PCI] = {
2724         /* remote-control does not work. The signal about a
2725            key press comes in via gpio, but the key code
2726            doesn't. Neither does it have an i2c remote control
2727            interface. */
2728         .name           = "Terratec Cinergy 250 PCI TV",
2729         .audio_clock    = 0x00187de7,
2730         .tuner_type     = TUNER_PHILIPS_TDA8290,
2731         .radio_type     = UNSET,
2732         .tuner_addr = ADDR_UNSET,
2733         .radio_addr = ADDR_UNSET,
2734         .gpiomask       = 0x80200000,
2735         .inputs         = {{
2736             .type = SAA7134_INPUT_TV,
2737             .vmux = 1,
2738             .amux = TV,
2739         },{
2740             .type = SAA7134_INPUT_SVIDEO,  /* NOT tested */
2741             .vmux = 8,
2742             .amux = LINE1,
2743         }},
2744         .radio = {
2745             .type = SAA7134_INPUT_RADIO,
2746             .amux   = TV,
2747             .gpio   = 0x0200000,
2748         },
2749     },
2750     [SAA7134_BOARD_FLYDVB_TRIO] = {
2751         /* LifeView LR319 FlyDVB Trio */
2752         /* Peter Missel <peter.missel@onlinehome.de> */
2753         .name           = "LifeView FlyDVB Trio",
2754         .audio_clock    = 0x00200000,
2755         .tuner_type     = TUNER_PHILIPS_TDA8290,
2756         .radio_type     = UNSET,
2757         .tuner_addr = ADDR_UNSET,
2758         .radio_addr = ADDR_UNSET,
2759         .gpiomask   = 0x00200000,
2760         .mpeg           = SAA7134_MPEG_DVB,
2761         .inputs         = {{
2762             .type = SAA7134_INPUT_TV,   /* Analog broadcast/cable TV */
2763             .vmux = 1,
2764             .amux = TV,
2765             .gpio = 0x200000,   /* GPIO21=High for TV input */
2766         },{
2767             .type = SAA7134_INPUT_SVIDEO,
2768             .vmux = 8,
2769             .amux = LINE2,
2770         },{
2771             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
2772             .vmux = 0,
2773             .amux = LINE2,
2774         },{
2775             .type = SAA7134_INPUT_COMPOSITE2,
2776             .vmux = 3,
2777             .amux = LINE2,
2778         }},
2779         .radio = {
2780             .type = SAA7134_INPUT_RADIO,
2781             .amux = TV,
2782             .gpio = 0x000000,   /* GPIO21=Low for FM radio antenna */
2783         },
2784     },
2785     [SAA7134_BOARD_AVERMEDIA_777] = {
2786         .name           = "AverTV DVB-T 777",
2787         .audio_clock    = 0x00187de7,
2788         .tuner_type     = TUNER_ABSENT,
2789         .radio_type     = UNSET,
2790         .tuner_addr = ADDR_UNSET,
2791         .radio_addr = ADDR_UNSET,
2792         .mpeg           = SAA7134_MPEG_DVB,
2793         .inputs = {{
2794             .type = SAA7134_INPUT_COMPOSITE1,
2795             .vmux   = 1,
2796             .amux   = LINE1,
2797         },{
2798             .type = SAA7134_INPUT_SVIDEO,
2799             .vmux   = 8,
2800             .amux   = LINE1,
2801         }},
2802     },
2803     [SAA7134_BOARD_FLYDVBT_LR301] = {
2804         /* LifeView FlyDVB-T */
2805         /* Giampiero Giancipoli <gianci@libero.it> */
2806         .name           = "LifeView FlyDVB-T / Genius VideoWonder DVB-T",
2807         .audio_clock    = 0x00200000,
2808         .tuner_type     = TUNER_ABSENT,
2809         .radio_type     = UNSET,
2810         .tuner_addr = ADDR_UNSET,
2811         .radio_addr = ADDR_UNSET,
2812         .mpeg           = SAA7134_MPEG_DVB,
2813         .inputs         = {{
2814             .type = SAA7134_INPUT_COMPOSITE1,
2815             .vmux = 3,
2816             .amux = LINE2,
2817         },{
2818             .type = SAA7134_INPUT_SVIDEO,
2819             .vmux = 8,
2820             .amux = LINE2,
2821         }},
2822     },
2823     [SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331] = {
2824         .name           = "ADS Instant TV Duo Cardbus PTV331",
2825         .audio_clock    = 0x00200000,
2826         .tuner_type     = TUNER_PHILIPS_TDA8290,
2827         .radio_type     = UNSET,
2828         .tuner_addr = ADDR_UNSET,
2829         .radio_addr = ADDR_UNSET,
2830         .mpeg           = SAA7134_MPEG_DVB,
2831         .gpiomask       = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
2832         .inputs = {{
2833             .type = SAA7134_INPUT_TV,
2834             .vmux   = 1,
2835             .amux   = TV,
2836             .gpio   = 0x00200000,
2837         }},
2838     },
2839     [SAA7134_BOARD_TEVION_DVBT_220RF] = {
2840         .name           = "Tevion/KWorld DVB-T 220RF",
2841         .audio_clock    = 0x00187de7,
2842         .tuner_type     = TUNER_PHILIPS_TDA8290,
2843         .radio_type     = UNSET,
2844         .tuner_addr     = ADDR_UNSET,
2845         .radio_addr     = ADDR_UNSET,
2846         .mpeg           = SAA7134_MPEG_DVB,
2847         .gpiomask       = 1 << 21,
2848         .inputs = {{
2849             .type = SAA7134_INPUT_TV,
2850             .vmux   = 1,
2851             .amux   = TV,
2852         },{
2853             .type = SAA7134_INPUT_COMPOSITE1,
2854             .vmux   = 3,
2855             .amux   = LINE1,
2856         },{
2857             .type = SAA7134_INPUT_COMPOSITE2,
2858             .vmux   = 0,
2859             .amux   = LINE1,
2860         },{
2861             .type = SAA7134_INPUT_SVIDEO,
2862             .vmux   = 8,
2863             .amux   = LINE1,
2864         }},
2865         .radio = {
2866             .type = SAA7134_INPUT_RADIO,
2867             .amux   = TV,
2868             .gpio   = 0x0200000,
2869         },
2870     },
2871     [SAA7134_BOARD_KWORLD_DVBT_210] = {
2872         .name           = "KWorld DVB-T 210",
2873         .audio_clock    = 0x00187de7,
2874         .tuner_type     = TUNER_PHILIPS_TDA8290,
2875         .radio_type     = UNSET,
2876         .tuner_addr = ADDR_UNSET,
2877         .radio_addr = ADDR_UNSET,
2878         .mpeg           = SAA7134_MPEG_DVB,
2879         .gpiomask       = 1 << 21,
2880         .inputs = {{
2881             .type = SAA7134_INPUT_TV,
2882             .vmux   = 1,
2883             .amux   = TV,
2884         },{
2885             .type = SAA7134_INPUT_COMPOSITE1,
2886             .vmux   = 3,
2887             .amux   = LINE1,
2888         },{
2889             .type = SAA7134_INPUT_SVIDEO,
2890             .vmux   = 8,
2891             .amux   = LINE1,
2892         }},
2893         .radio = {
2894             .type = SAA7134_INPUT_RADIO,
2895             .amux   = TV,
2896             .gpio   = 0x0200000,
2897         },
2898     },
2899     [SAA7134_BOARD_KWORLD_ATSC110] = {
2900         .name           = "Kworld ATSC110/115",
2901         .audio_clock    = 0x00187de7,
2902         .tuner_type     = TUNER_PHILIPS_TUV1236D,
2903         .radio_type     = UNSET,
2904         .tuner_addr     = ADDR_UNSET,
2905         .radio_addr     = ADDR_UNSET,
2906         .tda9887_conf   = TDA9887_PRESENT,
2907         .mpeg           = SAA7134_MPEG_DVB,
2908         .inputs         = {{
2909             .type = SAA7134_INPUT_TV,
2910             .vmux = 1,
2911             .amux = TV,
2912         },{
2913             .type = SAA7134_INPUT_COMPOSITE1,
2914             .vmux = 3,
2915             .amux = LINE2,
2916         },{
2917             .type = SAA7134_INPUT_SVIDEO,
2918             .vmux = 8,
2919             .amux = LINE2,
2920         }},
2921     },
2922     [SAA7134_BOARD_AVERMEDIA_A169_B] = {
2923         /* AVerMedia A169  */
2924         /* Rickard Osser <ricky@osser.se>  */
2925         /* This card has two saa7134 chips on it,
2926            but only one of them is currently working. */
2927         .name       = "AVerMedia A169 B",
2928         .audio_clock    = 0x02187de7,
2929         .tuner_type = TUNER_LG_TALN,
2930         .radio_type     = UNSET,
2931         .tuner_addr = ADDR_UNSET,
2932         .radio_addr = ADDR_UNSET,
2933         .tda9887_conf   = TDA9887_PRESENT,
2934         .gpiomask       = 0x0a60000,
2935     },
2936     [SAA7134_BOARD_AVERMEDIA_A169_B1] = {
2937         /* AVerMedia A169 */
2938         /* Rickard Osser <ricky@osser.se> */
2939         .name       = "AVerMedia A169 B1",
2940         .audio_clock    = 0x02187de7,
2941         .tuner_type = TUNER_LG_TALN,
2942         .radio_type     = UNSET,
2943         .tuner_addr = ADDR_UNSET,
2944         .radio_addr = ADDR_UNSET,
2945         .tda9887_conf   = TDA9887_PRESENT,
2946         .gpiomask       = 0xca60000,
2947         .inputs         = {{
2948             .type = SAA7134_INPUT_TV,
2949             .vmux = 4,
2950             .amux = TV,
2951             .gpio = 0x04a61000,
2952         },{
2953             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
2954             .vmux = 1,
2955             .amux = LINE2,
2956         },{
2957             .type = SAA7134_INPUT_SVIDEO,
2958             .vmux = 9,           /* 9 is correct as S-VIDEO1 according to a169.inf! */
2959             .amux = LINE1,
2960         }},
2961     },
2962     [SAA7134_BOARD_MD7134_BRIDGE_2] = {
2963         /* The second saa7134 on this card only serves as DVB-S host bridge */
2964         .name           = "Medion 7134 Bridge #2",
2965         .audio_clock    = 0x00187de7,
2966         .radio_type     = UNSET,
2967         .tuner_addr = ADDR_UNSET,
2968         .radio_addr = ADDR_UNSET,
2969         .mpeg           = SAA7134_MPEG_DVB,
2970     },
2971     [SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS] = {
2972         .name       = "LifeView FlyDVB-T Hybrid Cardbus/MSI TV @nywhere A/D NB",
2973         .audio_clock    = 0x00200000,
2974         .tuner_type     = TUNER_PHILIPS_TDA8290,
2975         .radio_type     = UNSET,
2976         .tuner_addr = ADDR_UNSET,
2977         .radio_addr = ADDR_UNSET,
2978         .mpeg           = SAA7134_MPEG_DVB,
2979         .gpiomask       = 0x00600000, /* Bit 21 0=Radio, Bit 22 0=TV */
2980         .inputs         = {{
2981             .type = SAA7134_INPUT_TV,
2982             .vmux = 1,
2983             .amux = TV,
2984             .gpio = 0x200000,   /* GPIO21=High for TV input */
2985         },{
2986             .type = SAA7134_INPUT_SVIDEO,
2987             .vmux = 8,
2988             .amux = LINE2,
2989         },{
2990             .type = SAA7134_INPUT_COMPOSITE_OVER_SVIDEO,
2991             .vmux = 0,
2992             .amux = LINE2,
2993         },{
2994             .type = SAA7134_INPUT_COMPOSITE,
2995             .vmux = 3,
2996             .amux = LINE2,
2997         }},
2998         .radio = {
2999             .type = SAA7134_INPUT_RADIO,
3000             .amux = TV,
3001             .gpio = 0x000000,   /* GPIO21=Low for FM radio antenna */
3002         },
3003     },
3004     [SAA7134_BOARD_FLYVIDEO3000_NTSC] = {
3005         /* "Zac Bowling" <zac@zacbowling.com> */
3006         .name           = "LifeView FlyVIDEO3000 (NTSC)",
3007         .audio_clock    = 0x00200000,
3008         .tuner_type     = TUNER_PHILIPS_NTSC,
3009         .radio_type     = UNSET,
3010         .tuner_addr     = ADDR_UNSET,
3011         .radio_addr     = ADDR_UNSET,
3012 
3013         .gpiomask       = 0xe000,
3014         .inputs         = {{
3015             .type = SAA7134_INPUT_TV,
3016             .vmux = 1,
3017             .amux = TV,
3018             .gpio = 0x8000,
3019         },{
3020             .type = SAA7134_INPUT_TV_MONO,
3021             .vmux = 1,
3022             .amux = LINE2,
3023             .gpio = 0x0000,
3024         },{
3025             .type = SAA7134_INPUT_COMPOSITE1,
3026             .vmux = 0,
3027             .amux = LINE2,
3028             .gpio = 0x4000,
3029         },{
3030             .type = SAA7134_INPUT_COMPOSITE2,
3031             .vmux = 3,
3032             .amux = LINE2,
3033             .gpio = 0x4000,
3034         },{
3035             .type = SAA7134_INPUT_SVIDEO,
3036             .vmux = 8,
3037             .amux = LINE2,
3038             .gpio = 0x4000,
3039         }},
3040         .radio = {
3041             .type = SAA7134_INPUT_RADIO,
3042             .amux = LINE2,
3043             .gpio = 0x2000,
3044         },
3045             .mute = {
3046             .type = SAA7134_INPUT_MUTE,
3047             .amux = TV,
3048             .gpio = 0x8000,
3049         },
3050     },
3051     [SAA7134_BOARD_MEDION_MD8800_QUADRO] = {
3052         .name           = "Medion Md8800 Quadro",
3053         .audio_clock    = 0x00187de7,
3054         .tuner_type     = TUNER_PHILIPS_TDA8290,
3055         .radio_type     = UNSET,
3056         .tuner_addr     = ADDR_UNSET,
3057         .radio_addr     = ADDR_UNSET,
3058         .mpeg           = SAA7134_MPEG_DVB,
3059         .inputs = {{
3060             .type = SAA7134_INPUT_TV,
3061             .vmux   = 1,
3062             .amux   = TV,
3063         },{
3064             .type = SAA7134_INPUT_COMPOSITE1,
3065             .vmux   = 0,
3066             .amux   = LINE1,
3067         },{
3068             .type = SAA7134_INPUT_SVIDEO,
3069             .vmux   = 8,
3070             .amux   = LINE1,
3071         }},
3072     },
3073     [SAA7134_BOARD_FLYDVBS_LR300] = {
3074         /* LifeView FlyDVB-s */
3075         /* Igor M. Liplianin <liplianin@tut.by> */
3076         .name           = "LifeView FlyDVB-S /Acorp TV134DS",
3077         .audio_clock    = 0x00200000,
3078         .tuner_type     = TUNER_ABSENT,
3079         .radio_type     = UNSET,
3080         .tuner_addr = ADDR_UNSET,
3081         .radio_addr = ADDR_UNSET,
3082         .mpeg           = SAA7134_MPEG_DVB,
3083         .inputs         = {{
3084             .type = SAA7134_INPUT_COMPOSITE1,
3085             .vmux = 3,
3086             .amux = LINE1,
3087         },{
3088             .type = SAA7134_INPUT_SVIDEO,
3089             .vmux = 8,
3090             .amux = LINE1,
3091         }},
3092     },
3093     [SAA7134_BOARD_PROTEUS_2309] = {
3094         .name           = "Proteus Pro 2309",
3095         .audio_clock    = 0x00187de7,
3096         .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
3097         .radio_type     = UNSET,
3098         .tuner_addr = ADDR_UNSET,
3099         .radio_addr = ADDR_UNSET,
3100         .tda9887_conf   = TDA9887_PRESENT,
3101         .inputs         = {{
3102             .type = SAA7134_INPUT_TV,
3103             .vmux = 1,
3104             .amux = LINE2,
3105         },{
3106             .type = SAA7134_INPUT_COMPOSITE1,
3107             .vmux = 0,
3108             .amux = LINE2,
3109         },{
3110             .type = SAA7134_INPUT_COMPOSITE2,
3111             .vmux = 3,
3112             .amux = LINE2,
3113         },{
3114             .type = SAA7134_INPUT_SVIDEO,
3115             .vmux = 8,
3116             .amux = LINE2,
3117         }},
3118         .mute = {
3119             .type = SAA7134_INPUT_MUTE,
3120             .amux = LINE1,
3121         },
3122     },
3123     [SAA7134_BOARD_AVERMEDIA_A16AR] = {
3124         /* Petr Baudis <pasky@ucw.cz> */
3125         .name           = "AVerMedia TV Hybrid A16AR",
3126         .audio_clock    = 0x187de7,
3127         .tuner_type     = TUNER_PHILIPS_TD1316, /* untested */
3128         .radio_type     = TUNER_TEA5767, /* untested */
3129         .tuner_addr     = ADDR_UNSET,
3130         .radio_addr     = 0x60,
3131         .tda9887_conf   = TDA9887_PRESENT,
3132         .mpeg           = SAA7134_MPEG_DVB,
3133         .inputs         = {{
3134             .type = SAA7134_INPUT_TV,
3135             .vmux = 1,
3136             .amux = TV,
3137         },{
3138             .type = SAA7134_INPUT_COMPOSITE1,
3139             .vmux = 3,
3140             .amux = LINE2,
3141         },{
3142             .type = SAA7134_INPUT_SVIDEO,
3143             .vmux = 8,
3144             .amux = LINE1,
3145         }},
3146         .radio = {
3147             .type = SAA7134_INPUT_RADIO,
3148             .amux = LINE1,
3149         },
3150     },
3151     [SAA7134_BOARD_ASUS_EUROPA2_HYBRID] = {
3152         .name           = "Asus Europa2 OEM",
3153         .audio_clock    = 0x00187de7,
3154         .tuner_type     = TUNER_PHILIPS_FMD1216ME_MK3,
3155         .radio_type     = UNSET,
3156         .tuner_addr = ADDR_UNSET,
3157         .radio_addr = ADDR_UNSET,
3158         .tda9887_conf   = TDA9887_PRESENT| TDA9887_PORT1_ACTIVE | TDA9887_PORT2_ACTIVE,
3159         .mpeg           = SAA7134_MPEG_DVB,
3160         .inputs = {{
3161             .type = SAA7134_INPUT_TV,
3162             .vmux   = 3,
3163             .amux   = TV,
3164         },{
3165             .type = SAA7134_INPUT_COMPOSITE1,
3166             .vmux   = 4,
3167             .amux   = LINE2,
3168         },{
3169             .type = SAA7134_INPUT_SVIDEO,
3170             .vmux   = 8,
3171             .amux   = LINE2,
3172         }},
3173         .radio = {
3174             .type = SAA7134_INPUT_RADIO,
3175             .amux   = LINE1,
3176         },
3177     },
3178     [SAA7134_BOARD_PINNACLE_PCTV_310i] = {
3179         .name           = "Pinnacle PCTV 310i",
3180         .audio_clock    = 0x00187de7,
3181         .tuner_type     = TUNER_PHILIPS_TDA8290,
3182         .radio_type     = UNSET,
3183         .tuner_addr     = ADDR_UNSET,
3184         .radio_addr     = ADDR_UNSET,
3185         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_ON },
3186         .mpeg           = SAA7134_MPEG_DVB,
3187         .gpiomask       = 0x000200000,
3188         .inputs         = {{
3189             .type = SAA7134_INPUT_TV,
3190             .vmux = 4,
3191             .amux = TV,
3192         },{
3193             .type = SAA7134_INPUT_COMPOSITE1,
3194             .vmux = 1,
3195             .amux = LINE2,
3196         },{
3197             .type = SAA7134_INPUT_COMPOSITE2,
3198             .vmux = 0,
3199             .amux = LINE2,
3200         },{
3201             .type = SAA7134_INPUT_SVIDEO,
3202             .vmux = 8,
3203             .amux = LINE2,
3204         }},
3205         .radio = {
3206             .type = SAA7134_INPUT_RADIO,
3207             .amux   = TV,
3208             .gpio   = 0x0200000,
3209         },
3210     },
3211     [SAA7134_BOARD_AVERMEDIA_STUDIO_507] = {
3212         /* Mikhail Fedotov <mo_fedotov@mail.ru> */
3213         .name           = "Avermedia AVerTV Studio 507",
3214         .audio_clock    = 0x00187de7,
3215         .tuner_type     = TUNER_PHILIPS_FM1256_IH3,
3216         .radio_type     = UNSET,
3217         .tuner_addr = ADDR_UNSET,
3218         .radio_addr = ADDR_UNSET,
3219         .tda9887_conf   = TDA9887_PRESENT,
3220         .gpiomask       = 0x03,
3221         .inputs         = {{
3222             .type = SAA7134_INPUT_TV,
3223             .vmux = 1,
3224             .amux = TV,
3225             .gpio = 0x00,
3226         },{
3227             .type = SAA7134_INPUT_COMPOSITE1,
3228             .vmux = 0,
3229             .amux = LINE2,
3230             .gpio = 0x00,
3231         },{
3232             .type = SAA7134_INPUT_COMPOSITE2,
3233             .vmux = 3,
3234             .amux = LINE2,
3235             .gpio = 0x00,
3236         },{
3237             .type = SAA7134_INPUT_SVIDEO,
3238             .vmux = 8,
3239             .amux = LINE2,
3240             .gpio = 0x00,
3241         }},
3242         .radio = {
3243             .type = SAA7134_INPUT_RADIO,
3244             .amux = LINE2,
3245             .gpio = 0x01,
3246         },
3247         .mute  = {
3248             .type = SAA7134_INPUT_MUTE,
3249             .amux = LINE1,
3250             .gpio = 0x00,
3251         },
3252     },
3253     [SAA7134_BOARD_VIDEOMATE_DVBT_200A] = {
3254         /* Francis Barber <fedora@barber-family.id.au> */
3255         .name           = "Compro Videomate DVB-T200A",
3256         .audio_clock    = 0x00187de7,
3257         .tuner_type     = TUNER_ABSENT,
3258         .radio_type     = UNSET,
3259         .tuner_addr = ADDR_UNSET,
3260         .radio_addr = ADDR_UNSET,
3261         .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
3262         .mpeg           = SAA7134_MPEG_DVB,
3263         .inputs = {{
3264             .type = SAA7134_INPUT_TV,
3265             .vmux   = 3,
3266             .amux   = TV,
3267         },{
3268             .type = SAA7134_INPUT_COMPOSITE1,
3269             .vmux   = 1,
3270             .amux   = LINE2,
3271         },{
3272             .type = SAA7134_INPUT_SVIDEO,
3273             .vmux   = 8,
3274             .amux   = LINE2,
3275         }},
3276     },
3277     [SAA7134_BOARD_HAUPPAUGE_HVR1110] = {
3278         /* Thomas Genty <tomlohave@gmail.com> */
3279         /* David Bentham <db260179@hotmail.com> */
3280         .name           = "Hauppauge WinTV-HVR1110 DVB-T/Hybrid",
3281         .audio_clock    = 0x00187de7,
3282         .tuner_type     = TUNER_PHILIPS_TDA8290,
3283         .radio_type     = UNSET,
3284         .tuner_addr     = ADDR_UNSET,
3285         .radio_addr     = ADDR_UNSET,
3286         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_ON },
3287         .mpeg           = SAA7134_MPEG_DVB,
3288         .gpiomask       = 0x0200100,
3289         .inputs         = {{
3290             .type = SAA7134_INPUT_TV,
3291             .vmux = 1,
3292             .amux = TV,
3293             .gpio = 0x0000100,
3294         }, {
3295             .type = SAA7134_INPUT_COMPOSITE1,
3296             .vmux = 3,
3297             .amux = LINE1,
3298         }, {
3299             .type = SAA7134_INPUT_SVIDEO,
3300             .vmux = 8,
3301             .amux = LINE1,
3302         } },
3303         .radio = {
3304             .type = SAA7134_INPUT_RADIO,
3305             .amux = TV,
3306             .gpio = 0x0200100,
3307         },
3308     },
3309     [SAA7134_BOARD_HAUPPAUGE_HVR1150] = {
3310         .name           = "Hauppauge WinTV-HVR1150 ATSC/QAM-Hybrid",
3311         .audio_clock    = 0x00187de7,
3312         .tuner_type     = TUNER_PHILIPS_TDA8290,
3313         .radio_type     = UNSET,
3314         .tuner_addr     = ADDR_UNSET,
3315         .radio_addr     = ADDR_UNSET,
3316         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_ON_BRIDGE },
3317         .mpeg           = SAA7134_MPEG_DVB,
3318         .ts_type    = SAA7134_MPEG_TS_SERIAL,
3319         .ts_force_val   = 1,
3320         .gpiomask       = 0x0800100, /* GPIO 21 is an INPUT */
3321         .inputs         = {{
3322             .type = SAA7134_INPUT_TV,
3323             .vmux = 1,
3324             .amux = TV,
3325             .gpio = 0x0000100,
3326         }, {
3327             .type = SAA7134_INPUT_COMPOSITE1,
3328             .vmux = 3,
3329             .amux = LINE1,
3330         }, {
3331             .type = SAA7134_INPUT_SVIDEO,
3332             .vmux = 8,
3333             .amux = LINE1,
3334         } },
3335         .radio = {
3336             .type = SAA7134_INPUT_RADIO,
3337             .amux = TV,
3338             .gpio = 0x0800100, /* GPIO 23 HI for FM */
3339         },
3340     },
3341     [SAA7134_BOARD_HAUPPAUGE_HVR1120] = {
3342         .name           = "Hauppauge WinTV-HVR1120 DVB-T/Hybrid",
3343         .audio_clock    = 0x00187de7,
3344         .tuner_type     = TUNER_PHILIPS_TDA8290,
3345         .radio_type     = UNSET,
3346         .tuner_addr     = ADDR_UNSET,
3347         .radio_addr     = ADDR_UNSET,
3348         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_ON_BRIDGE },
3349         .mpeg           = SAA7134_MPEG_DVB,
3350         .ts_type    = SAA7134_MPEG_TS_SERIAL,
3351         .gpiomask       = 0x0800100, /* GPIO 21 is an INPUT */
3352         .inputs         = {{
3353             .type = SAA7134_INPUT_TV,
3354             .vmux = 1,
3355             .amux = TV,
3356             .gpio = 0x0000100,
3357         }, {
3358             .type = SAA7134_INPUT_COMPOSITE1,
3359             .vmux = 3,
3360             .amux = LINE1,
3361         }, {
3362             .type = SAA7134_INPUT_SVIDEO,
3363             .vmux = 8,
3364             .amux = LINE1,
3365         } },
3366         .radio = {
3367             .type = SAA7134_INPUT_RADIO,
3368             .amux = TV,
3369             .gpio = 0x0800100, /* GPIO 23 HI for FM */
3370         },
3371     },
3372     [SAA7134_BOARD_CINERGY_HT_PCMCIA] = {
3373         .name           = "Terratec Cinergy HT PCMCIA",
3374         .audio_clock    = 0x00187de7,
3375         .tuner_type     = TUNER_PHILIPS_TDA8290,
3376         .radio_type     = UNSET,
3377         .tuner_addr = ADDR_UNSET,
3378         .radio_addr = ADDR_UNSET,
3379         .mpeg           = SAA7134_MPEG_DVB,
3380         .inputs = {{
3381             .type = SAA7134_INPUT_TV,
3382             .vmux   = 1,
3383             .amux   = TV,
3384         },{
3385             .type = SAA7134_INPUT_COMPOSITE1,
3386             .vmux   = 0,
3387             .amux   = LINE1,
3388         },{
3389             .type = SAA7134_INPUT_SVIDEO,
3390             .vmux   = 6,
3391             .amux   = LINE1,
3392         }},
3393     },
3394     [SAA7134_BOARD_ENCORE_ENLTV] = {
3395     /* Steven Walter <stevenrwalter@gmail.com>
3396        Juan Pablo Sormani <sorman@gmail.com> */
3397         .name           = "Encore ENLTV",
3398         .audio_clock    = 0x00200000,
3399         .tuner_type     = TUNER_TNF_5335MF,
3400         .radio_type     = UNSET,
3401         .tuner_addr = ADDR_UNSET,
3402         .radio_addr = ADDR_UNSET,
3403         .inputs         = {{
3404             .type = SAA7134_INPUT_TV,
3405             .vmux = 1,
3406             .amux = 3,
3407         },{
3408             .type = SAA7134_INPUT_TV_MONO,
3409             .vmux = 7,
3410             .amux = 4,
3411         },{
3412             .type = SAA7134_INPUT_COMPOSITE1,
3413             .vmux = 3,
3414             .amux = 2,
3415         },{
3416             .type = SAA7134_INPUT_SVIDEO,
3417             .vmux = 0,
3418             .amux = 2,
3419         }},
3420         .radio = {
3421             .type = SAA7134_INPUT_RADIO,
3422             .amux = LINE2,
3423 /*          .gpio = 0x00300001,*/
3424             .gpio = 0x20000,
3425 
3426         },
3427         .mute = {
3428             .type = SAA7134_INPUT_MUTE,
3429             .amux = 0,
3430         },
3431     },
3432     [SAA7134_BOARD_ENCORE_ENLTV_FM] = {
3433   /*    Juan Pablo Sormani <sorman@gmail.com> */
3434         .name           = "Encore ENLTV-FM",
3435         .audio_clock    = 0x00200000,
3436         .tuner_type     = TUNER_PHILIPS_FCV1236D,
3437         .radio_type     = UNSET,
3438         .tuner_addr = ADDR_UNSET,
3439         .radio_addr = ADDR_UNSET,
3440         .inputs         = {{
3441             .type = SAA7134_INPUT_TV,
3442             .vmux = 1,
3443             .amux = 3,
3444         },{
3445             .type = SAA7134_INPUT_TV_MONO,
3446             .vmux = 7,
3447             .amux = 4,
3448         },{
3449             .type = SAA7134_INPUT_COMPOSITE1,
3450             .vmux = 3,
3451             .amux = 2,
3452         },{
3453             .type = SAA7134_INPUT_SVIDEO,
3454             .vmux = 0,
3455             .amux = 2,
3456         }},
3457         .radio = {
3458             .type = SAA7134_INPUT_RADIO,
3459             .amux = LINE2,
3460             .gpio = 0x20000,
3461 
3462         },
3463         .mute = {
3464             .type = SAA7134_INPUT_MUTE,
3465             .amux = 0,
3466         },
3467     },
3468     [SAA7134_BOARD_ENCORE_ENLTV_FM53] = {
3469         .name           = "Encore ENLTV-FM v5.3",
3470         .audio_clock    = 0x00200000,
3471         .tuner_type     = TUNER_TNF_5335MF,
3472         .radio_type     = UNSET,
3473         .tuner_addr = ADDR_UNSET,
3474         .radio_addr = ADDR_UNSET,
3475         .gpiomask   = 0x7000,
3476         .inputs         = { {
3477             .type = SAA7134_INPUT_TV,
3478             .vmux = 1,
3479             .amux = 1,
3480             .gpio = 0x50000,
3481         }, {
3482             .type = SAA7134_INPUT_COMPOSITE1,
3483             .vmux = 3,
3484             .amux = 2,
3485             .gpio = 0x2000,
3486         }, {
3487             .type = SAA7134_INPUT_SVIDEO,
3488             .vmux = 8,
3489             .amux = 2,
3490             .gpio = 0x2000,
3491         } },
3492         .radio = {
3493             .type = SAA7134_INPUT_RADIO,
3494             .vmux = 1,
3495             .amux = 1,
3496         },
3497         .mute = {
3498             .type = SAA7134_INPUT_MUTE,
3499             .gpio = 0xf000,
3500             .amux = 0,
3501         },
3502     },
3503     [SAA7134_BOARD_ENCORE_ENLTV_FM3] = {
3504         .name           = "Encore ENLTV-FM 3",
3505         .audio_clock    = 0x02187de7,
3506         .tuner_type     = TUNER_TENA_TNF_5337,
3507         .radio_type     = TUNER_TEA5767,
3508         .tuner_addr = 0x61,
3509         .radio_addr = 0x60,
3510         .inputs         = { {
3511             .type = SAA7134_INPUT_TV,
3512             .vmux = 1,
3513             .amux = LINE2,
3514         }, {
3515             .type = SAA7134_INPUT_COMPOSITE1,
3516             .vmux = 3,
3517             .amux = LINE1,
3518         }, {
3519             .type = SAA7134_INPUT_SVIDEO,
3520             .vmux = 8,
3521             .amux = LINE1,
3522         } },
3523         .radio = {
3524             .type = SAA7134_INPUT_RADIO,
3525             .vmux = 1,
3526             .amux = LINE1,
3527         },
3528         .mute = {
3529             .type = SAA7134_INPUT_MUTE,
3530             .amux = LINE1,
3531             .gpio = 0x43000,
3532         },
3533     },
3534     [SAA7134_BOARD_CINERGY_HT_PCI] = {
3535         .name           = "Terratec Cinergy HT PCI",
3536         .audio_clock    = 0x00187de7,
3537         .tuner_type     = TUNER_PHILIPS_TDA8290,
3538         .radio_type     = UNSET,
3539         .tuner_addr = ADDR_UNSET,
3540         .radio_addr = ADDR_UNSET,
3541         .mpeg           = SAA7134_MPEG_DVB,
3542         .inputs = {{
3543             .type = SAA7134_INPUT_TV,
3544             .vmux   = 1,
3545             .amux   = TV,
3546         },{
3547             .type = SAA7134_INPUT_COMPOSITE1,
3548             .vmux   = 0,
3549             .amux   = LINE1,
3550         },{
3551             .type = SAA7134_INPUT_SVIDEO,
3552             .vmux   = 6,
3553             .amux   = LINE1,
3554         }},
3555     },
3556     [SAA7134_BOARD_PHILIPS_TIGER_S] = {
3557         .name           = "Philips Tiger - S Reference design",
3558         .audio_clock    = 0x00187de7,
3559         .tuner_type     = TUNER_PHILIPS_TDA8290,
3560         .radio_type     = UNSET,
3561         .tuner_addr = ADDR_UNSET,
3562         .radio_addr = ADDR_UNSET,
3563         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
3564         .mpeg           = SAA7134_MPEG_DVB,
3565         .gpiomask       = 0x0200000,
3566         .inputs = {{
3567             .type = SAA7134_INPUT_TV,
3568             .vmux   = 1,
3569             .amux   = TV,
3570         },{
3571             .type = SAA7134_INPUT_COMPOSITE1,
3572             .vmux   = 3,
3573             .amux   = LINE1,
3574         },{
3575             .type = SAA7134_INPUT_SVIDEO,
3576             .vmux   = 8,
3577             .amux   = LINE1,
3578         }},
3579         .radio = {
3580             .type = SAA7134_INPUT_RADIO,
3581             .amux   = TV,
3582             .gpio   = 0x0200000,
3583         },
3584     },
3585     [SAA7134_BOARD_AVERMEDIA_M102] = {
3586         .name           = "Avermedia M102",
3587         .audio_clock    = 0x00187de7,
3588         .tuner_type     = TUNER_PHILIPS_TDA8290,
3589         .radio_type     = UNSET,
3590         .tuner_addr = ADDR_UNSET,
3591         .radio_addr = ADDR_UNSET,
3592         .gpiomask       = 1<<21,
3593         .inputs         = {{
3594             .type = SAA7134_INPUT_TV,
3595             .vmux = 1,
3596             .amux = TV,
3597         },{
3598             .type = SAA7134_INPUT_COMPOSITE1,
3599             .vmux = 0,
3600             .amux = LINE2,
3601         },{
3602             .type = SAA7134_INPUT_SVIDEO,
3603             .vmux = 6,
3604             .amux = LINE2,
3605         }},
3606     },
3607     [SAA7134_BOARD_ASUS_P7131_4871] = {
3608         .name           = "ASUS P7131 4871",
3609         .audio_clock    = 0x00187de7,
3610         .tuner_type     = TUNER_PHILIPS_TDA8290,
3611         .radio_type     = UNSET,
3612         .tuner_addr = ADDR_UNSET,
3613         .radio_addr = ADDR_UNSET,
3614         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
3615         .mpeg           = SAA7134_MPEG_DVB,
3616         .gpiomask       = 0x0200000,
3617         .inputs = {{
3618             .type = SAA7134_INPUT_TV,
3619             .vmux   = 1,
3620             .amux   = TV,
3621             .gpio   = 0x0200000,
3622         },{
3623             .type = SAA7134_INPUT_COMPOSITE1,
3624             .vmux = 3,
3625             .amux = LINE2,
3626             .gpio = 0x0200000,
3627         },{
3628             .type = SAA7134_INPUT_COMPOSITE2,
3629             .vmux = 0,
3630             .amux = LINE2,
3631             .gpio = 0x0200000,
3632         },{
3633             .type = SAA7134_INPUT_SVIDEO,
3634             .vmux = 8,
3635             .amux = LINE2,
3636             .gpio = 0x0200000,
3637         }},
3638     },
3639     [SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA] = {
3640         .name           = "ASUSTeK P7131 Hybrid",
3641         .audio_clock    = 0x00187de7,
3642         .tuner_type     = TUNER_PHILIPS_TDA8290,
3643         .radio_type     = UNSET,
3644         .tuner_addr = ADDR_UNSET,
3645         .radio_addr = ADDR_UNSET,
3646         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
3647         .gpiomask   = 1 << 21,
3648         .mpeg           = SAA7134_MPEG_DVB,
3649         .inputs         = {{
3650             .type = SAA7134_INPUT_TV,
3651             .vmux = 1,
3652             .amux = TV,
3653             .gpio = 0x0000000,
3654         },{
3655             .type = SAA7134_INPUT_COMPOSITE1,
3656             .vmux = 3,
3657             .amux = LINE2,
3658             .gpio = 0x0200000,
3659         },{
3660             .type = SAA7134_INPUT_COMPOSITE2,
3661             .vmux = 0,
3662             .amux = LINE2,
3663             .gpio = 0x0200000,
3664         },{
3665             .type = SAA7134_INPUT_SVIDEO,
3666             .vmux = 8,
3667             .amux = LINE2,
3668             .gpio = 0x0200000,
3669         }},
3670         .radio = {
3671             .type = SAA7134_INPUT_RADIO,
3672             .amux = TV,
3673             .gpio = 0x0200000,
3674         },
3675     },
3676     [SAA7134_BOARD_ASUSTeK_P7131_ANALOG] = {
3677            .name           = "ASUSTeK P7131 Analog",
3678            .audio_clock    = 0x00187de7,
3679            .tuner_type     = TUNER_PHILIPS_TDA8290,
3680            .radio_type     = UNSET,
3681            .tuner_addr     = ADDR_UNSET,
3682            .radio_addr     = ADDR_UNSET,
3683            .gpiomask       = 1 << 21,
3684            .inputs         = {{
3685                .type = SAA7134_INPUT_TV,
3686                .vmux = 1,
3687                .amux = TV,
3688                .gpio = 0x0000000,
3689            }, {
3690                .type = SAA7134_INPUT_COMPOSITE1,
3691                .vmux = 3,
3692                .amux = LINE2,
3693            }, {
3694                .type = SAA7134_INPUT_COMPOSITE2,
3695                .vmux = 0,
3696                .amux = LINE2,
3697            }, {
3698                .type = SAA7134_INPUT_SVIDEO,
3699                .vmux = 8,
3700                .amux = LINE2,
3701            } },
3702            .radio = {
3703                .type = SAA7134_INPUT_RADIO,
3704                .amux = TV,
3705                .gpio = 0x0200000,
3706            },
3707     },
3708     [SAA7134_BOARD_SABRENT_TV_PCB05] = {
3709         .name           = "Sabrent PCMCIA TV-PCB05",
3710         .audio_clock    = 0x00187de7,
3711         .tuner_type     = TUNER_PHILIPS_TDA8290,
3712         .radio_type     = UNSET,
3713         .tuner_addr     = ADDR_UNSET,
3714         .radio_addr     = ADDR_UNSET,
3715         .inputs         = {{
3716             .type = SAA7134_INPUT_TV,
3717             .vmux = 1,
3718             .amux = TV,
3719         },{
3720             .type = SAA7134_INPUT_COMPOSITE1,
3721             .vmux = 3,
3722             .amux = LINE1,
3723         },{
3724             .type = SAA7134_INPUT_COMPOSITE2,
3725             .vmux = 0,
3726             .amux = LINE1,
3727         },{
3728             .type = SAA7134_INPUT_SVIDEO,
3729             .vmux = 8,
3730             .amux = LINE1,
3731         }},
3732         .mute = {
3733             .type = SAA7134_INPUT_MUTE,
3734             .amux = TV,
3735         },
3736     },
3737     [SAA7134_BOARD_10MOONSTVMASTER3] = {
3738         /* Tony Wan <aloha_cn@hotmail.com> */
3739         .name           = "10MOONS TM300 TV Card",
3740         .audio_clock    = 0x00200000,
3741         .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
3742         .radio_type     = UNSET,
3743         .tuner_addr     = ADDR_UNSET,
3744         .radio_addr     = ADDR_UNSET,
3745         .gpiomask       = 0x7000,
3746         .inputs         = {{
3747             .type = SAA7134_INPUT_TV,
3748             .vmux = 1,
3749             .amux = LINE2,
3750             .gpio = 0x0000,
3751         },{
3752             .type = SAA7134_INPUT_COMPOSITE1,
3753             .vmux = 3,
3754             .amux = LINE1,
3755             .gpio = 0x2000,
3756         },{
3757             .type = SAA7134_INPUT_SVIDEO,
3758             .vmux = 8,
3759             .amux = LINE1,
3760             .gpio = 0x2000,
3761         }},
3762         .mute = {
3763             .type = SAA7134_INPUT_MUTE,
3764             .amux = LINE2,
3765             .gpio = 0x3000,
3766         },
3767     },
3768     [SAA7134_BOARD_AVERMEDIA_SUPER_007] = {
3769         .name           = "Avermedia Super 007",
3770         .audio_clock    = 0x00187de7,
3771         .tuner_type     = TUNER_PHILIPS_TDA8290,
3772         .radio_type     = UNSET,
3773         .tuner_addr     = ADDR_UNSET,
3774         .radio_addr     = ADDR_UNSET,
3775         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_OFF },
3776         .mpeg           = SAA7134_MPEG_DVB,
3777         .inputs = {{
3778             .type = SAA7134_INPUT_TV, /* FIXME: analog tv untested */
3779             .vmux   = 1,
3780             .amux   = TV,
3781         }},
3782     },
3783     [SAA7134_BOARD_AVERMEDIA_M135A] = {
3784         .name           = "Avermedia PCI pure analog (M135A)",
3785         .audio_clock    = 0x00187de7,
3786         .tuner_type     = TUNER_PHILIPS_TDA8290,
3787         .radio_type     = UNSET,
3788         .tuner_addr     = ADDR_UNSET,
3789         .radio_addr     = ADDR_UNSET,
3790         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
3791         .gpiomask       = 0x020200000,
3792         .inputs         = {{
3793             .type = SAA7134_INPUT_TV,
3794             .vmux = 1,
3795             .amux = TV,
3796         }, {
3797             .type = SAA7134_INPUT_COMPOSITE1,
3798             .vmux = 3,
3799             .amux = LINE1,
3800         }, {
3801             .type = SAA7134_INPUT_SVIDEO,
3802             .vmux = 8,
3803             .amux = LINE1,
3804         } },
3805         .radio = {
3806             .type = SAA7134_INPUT_RADIO,
3807             .amux = TV,
3808             .gpio = 0x00200000,
3809         },
3810         .mute = {
3811             .type = SAA7134_INPUT_MUTE,
3812             .amux = TV,
3813             .gpio = 0x01,
3814         },
3815     },
3816     [SAA7134_BOARD_AVERMEDIA_M733A] = {
3817         .name       = "Avermedia PCI M733A",
3818         .audio_clock    = 0x00187de7,
3819         .tuner_type = TUNER_PHILIPS_TDA8290,
3820         .radio_type = UNSET,
3821         .tuner_addr = ADDR_UNSET,
3822         .radio_addr = ADDR_UNSET,
3823         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_OFF },
3824         .gpiomask   = 0x020200000,
3825         .inputs     = {{
3826             .type = SAA7134_INPUT_TV,
3827             .vmux = 1,
3828             .amux = TV,
3829         }, {
3830             .type = SAA7134_INPUT_COMPOSITE1,
3831             .vmux = 3,
3832             .amux = LINE1,
3833         }, {
3834             .type = SAA7134_INPUT_SVIDEO,
3835             .vmux = 8,
3836             .amux = LINE1,
3837         } },
3838         .radio = {
3839             .type = SAA7134_INPUT_RADIO,
3840             .amux = TV,
3841             .gpio = 0x00200000,
3842         },
3843         .mute = {
3844             .type = SAA7134_INPUT_MUTE,
3845             .amux = TV,
3846             .gpio = 0x01,
3847         },
3848     },
3849     [SAA7134_BOARD_BEHOLD_401] = {
3850         /*       Beholder Intl. Ltd. 2008      */
3851         /*Dmitry Belimov <d.belimov@gmail.com> */
3852         .name           = "Beholder BeholdTV 401",
3853         .audio_clock    = 0x00187de7,
3854         .tuner_type     = TUNER_PHILIPS_FQ1216ME,
3855         .radio_type     = UNSET,
3856         .tuner_addr = ADDR_UNSET,
3857         .radio_addr = ADDR_UNSET,
3858         .gpiomask       = 0x00008000,
3859         .inputs         = {{
3860             .type = SAA7134_INPUT_SVIDEO,
3861             .vmux = 8,
3862             .amux = LINE1,
3863         },{
3864             .type = SAA7134_INPUT_COMPOSITE1,
3865             .vmux = 1,
3866             .amux = LINE1,
3867         },{
3868             .type = SAA7134_INPUT_TV,
3869             .vmux = 3,
3870             .amux = LINE2,
3871         }},
3872         .mute = {
3873             .type = SAA7134_INPUT_MUTE,
3874             .amux = LINE1,
3875         },
3876     },
3877     [SAA7134_BOARD_BEHOLD_403] = {
3878         /*       Beholder Intl. Ltd. 2008      */
3879         /*Dmitry Belimov <d.belimov@gmail.com> */
3880         .name           = "Beholder BeholdTV 403",
3881         .audio_clock    = 0x00187de7,
3882         .tuner_type     = TUNER_PHILIPS_FQ1216ME,
3883         .radio_type     = UNSET,
3884         .tuner_addr = ADDR_UNSET,
3885         .radio_addr = ADDR_UNSET,
3886         .gpiomask       = 0x00008000,
3887         .inputs         = {{
3888             .type = SAA7134_INPUT_SVIDEO,
3889             .vmux = 8,
3890             .amux = LINE1,
3891         },{
3892             .type = SAA7134_INPUT_COMPOSITE1,
3893             .vmux   = 1,
3894             .amux   = LINE1,
3895         },{
3896             .type = SAA7134_INPUT_TV,
3897             .vmux = 3,
3898             .amux = LINE2,
3899         }},
3900     },
3901     [SAA7134_BOARD_BEHOLD_403FM] = {
3902         /*       Beholder Intl. Ltd. 2008      */
3903         /*Dmitry Belimov <d.belimov@gmail.com> */
3904         .name           = "Beholder BeholdTV 403 FM",
3905         .audio_clock    = 0x00187de7,
3906         .tuner_type     = TUNER_PHILIPS_FQ1216ME,
3907         .radio_type     = UNSET,
3908         .tuner_addr = ADDR_UNSET,
3909         .radio_addr = ADDR_UNSET,
3910         .gpiomask       = 0x00008000,
3911         .inputs         = {{
3912             .type = SAA7134_INPUT_SVIDEO,
3913             .vmux = 8,
3914             .amux = LINE1,
3915         },{
3916             .type = SAA7134_INPUT_COMPOSITE1,
3917             .vmux   = 1,
3918             .amux   = LINE1,
3919         },{
3920             .type = SAA7134_INPUT_TV,
3921             .vmux = 3,
3922             .amux = LINE2,
3923         }},
3924         .radio = {
3925             .type = SAA7134_INPUT_RADIO,
3926             .amux = LINE2,
3927         },
3928     },
3929     [SAA7134_BOARD_BEHOLD_405] = {
3930         /*       Beholder Intl. Ltd. 2008      */
3931         /*Dmitry Belimov <d.belimov@gmail.com> */
3932         .name           = "Beholder BeholdTV 405",
3933         .audio_clock    = 0x00187de7,
3934         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
3935         .radio_type     = UNSET,
3936         .tuner_addr     = ADDR_UNSET,
3937         .radio_addr     = ADDR_UNSET,
3938         .tda9887_conf   = TDA9887_PRESENT,
3939         .gpiomask       = 0x00008000,
3940         .inputs         = {{
3941             .type = SAA7134_INPUT_SVIDEO,
3942             .vmux = 8,
3943             .amux = LINE1,
3944         },{
3945             .type = SAA7134_INPUT_COMPOSITE1,
3946             .vmux = 3,
3947             .amux = LINE1,
3948         },{
3949             .type = SAA7134_INPUT_TV,
3950             .vmux = 3,
3951             .amux = LINE2,
3952         }},
3953     },
3954     [SAA7134_BOARD_BEHOLD_405FM] = {
3955         /* Sergey <skiv@orel.ru> */
3956         /*       Beholder Intl. Ltd. 2008      */
3957         /*Dmitry Belimov <d.belimov@gmail.com> */
3958         .name           = "Beholder BeholdTV 405 FM",
3959         .audio_clock    = 0x00187de7,
3960         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
3961         .radio_type     = UNSET,
3962         .tuner_addr     = ADDR_UNSET,
3963         .radio_addr     = ADDR_UNSET,
3964         .tda9887_conf   = TDA9887_PRESENT,
3965         .gpiomask       = 0x00008000,
3966         .inputs         = {{
3967             .type = SAA7134_INPUT_SVIDEO,
3968             .vmux = 8,
3969             .amux = LINE1,
3970         },{
3971             .type = SAA7134_INPUT_COMPOSITE1,
3972             .vmux = 3,
3973             .amux = LINE1,
3974         },{
3975             .type = SAA7134_INPUT_TV,
3976             .vmux = 3,
3977             .amux = LINE2,
3978         }},
3979         .radio = {
3980             .type = SAA7134_INPUT_RADIO,
3981             .amux = LINE2,
3982         },
3983     },
3984     [SAA7134_BOARD_BEHOLD_407] = {
3985         /*       Beholder Intl. Ltd. 2008      */
3986         /*Dmitry Belimov <d.belimov@gmail.com> */
3987         .name       = "Beholder BeholdTV 407",
3988         .audio_clock    = 0x00187de7,
3989         .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
3990         .radio_type = UNSET,
3991         .tuner_addr = ADDR_UNSET,
3992         .radio_addr = ADDR_UNSET,
3993         .tda9887_conf   = TDA9887_PRESENT,
3994         .gpiomask       = 0x00008000,
3995         .inputs = {{
3996             .type = SAA7134_INPUT_SVIDEO,
3997             .vmux = 8,
3998             .amux = LINE1,
3999             .gpio = 0xc0c000,
4000         },{
4001             .type = SAA7134_INPUT_COMPOSITE1,
4002             .vmux = 1,
4003             .amux = LINE1,
4004             .gpio = 0xc0c000,
4005         },{
4006             .type = SAA7134_INPUT_TV,
4007             .vmux = 3,
4008             .amux = TV,
4009             .gpio = 0xc0c000,
4010         }},
4011     },
4012     [SAA7134_BOARD_BEHOLD_407FM] = {
4013         /*       Beholder Intl. Ltd. 2008      */
4014         /*Dmitry Belimov <d.belimov@gmail.com> */
4015         .name       = "Beholder BeholdTV 407 FM",
4016         .audio_clock    = 0x00187de7,
4017         .tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
4018         .radio_type = UNSET,
4019         .tuner_addr = ADDR_UNSET,
4020         .radio_addr = ADDR_UNSET,
4021         .tda9887_conf   = TDA9887_PRESENT,
4022         .gpiomask       = 0x00008000,
4023         .inputs = {{
4024             .type = SAA7134_INPUT_SVIDEO,
4025             .vmux = 8,
4026             .amux = LINE1,
4027             .gpio = 0xc0c000,
4028         },{
4029             .type = SAA7134_INPUT_COMPOSITE1,
4030             .vmux = 1,
4031             .amux = LINE1,
4032             .gpio = 0xc0c000,
4033         },{
4034             .type = SAA7134_INPUT_TV,
4035             .vmux = 3,
4036             .amux = TV,
4037             .gpio = 0xc0c000,
4038         }},
4039         .radio = {
4040             .type = SAA7134_INPUT_RADIO,
4041             .amux = LINE2,
4042             .gpio = 0xc0c000,
4043         },
4044     },
4045     [SAA7134_BOARD_BEHOLD_409] = {
4046         /*       Beholder Intl. Ltd. 2008      */
4047         /*Dmitry Belimov <d.belimov@gmail.com> */
4048         .name           = "Beholder BeholdTV 409",
4049         .audio_clock    = 0x00187de7,
4050         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4051         .radio_type     = UNSET,
4052         .tuner_addr     = ADDR_UNSET,
4053         .radio_addr     = ADDR_UNSET,
4054         .tda9887_conf   = TDA9887_PRESENT,
4055         .gpiomask       = 0x00008000,
4056         .inputs         = {{
4057             .type = SAA7134_INPUT_TV,
4058             .vmux = 3,
4059             .amux = TV,
4060         },{
4061             .type = SAA7134_INPUT_COMPOSITE1,
4062             .vmux = 1,
4063             .amux = LINE1,
4064         },{
4065             .type = SAA7134_INPUT_SVIDEO,
4066             .vmux = 8,
4067             .amux = LINE1,
4068         }},
4069     },
4070     [SAA7134_BOARD_BEHOLD_505FM] = {
4071         /*       Beholder Intl. Ltd. 2008      */
4072         /*Dmitry Belimov <d.belimov@gmail.com> */
4073         .name           = "Beholder BeholdTV 505 FM",
4074         .audio_clock    = 0x00200000,
4075         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4076         .radio_type     = UNSET,
4077         .tuner_addr     = ADDR_UNSET,
4078         .radio_addr     = ADDR_UNSET,
4079         .tda9887_conf   = TDA9887_PRESENT,
4080         .gpiomask       = 0x00008000,
4081         .inputs         = {{
4082             .type = SAA7134_INPUT_TV,
4083             .vmux = 3,
4084             .amux = LINE2,
4085         }, {
4086             .type = SAA7134_INPUT_COMPOSITE1,
4087             .vmux = 1,
4088             .amux = LINE1,
4089         }, {
4090             .type = SAA7134_INPUT_SVIDEO,
4091             .vmux = 8,
4092             .amux = LINE1,
4093         } },
4094         .mute = {
4095             .type = SAA7134_INPUT_MUTE,
4096             .amux = LINE1,
4097         },
4098         .radio = {
4099             .type = SAA7134_INPUT_RADIO,
4100             .amux = LINE2,
4101         },
4102     },
4103     [SAA7134_BOARD_BEHOLD_505RDS_MK5] = {
4104         /*       Beholder Intl. Ltd. 2008      */
4105         /*Dmitry Belimov <d.belimov@gmail.com> */
4106         .name           = "Beholder BeholdTV 505 RDS",
4107         .audio_clock    = 0x00200000,
4108         .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4109         .radio_type     = UNSET,
4110         .tuner_addr     = ADDR_UNSET,
4111         .radio_addr     = ADDR_UNSET,
4112         .rds_addr   = 0x10,
4113         .tda9887_conf   = TDA9887_PRESENT,
4114         .gpiomask       = 0x00008000,
4115         .inputs         = {{
4116             .type = SAA7134_INPUT_TV,
4117             .vmux = 3,
4118             .amux = LINE2,
4119         },{
4120             .type = SAA7134_INPUT_COMPOSITE1,
4121             .vmux = 1,
4122             .amux = LINE1,
4123         },{
4124             .type = SAA7134_INPUT_SVIDEO,
4125             .vmux = 8,
4126             .amux = LINE1,
4127         }},
4128         .mute = {
4129             .type = SAA7134_INPUT_MUTE,
4130             .amux = LINE1,
4131         },
4132         .radio = {
4133             .type = SAA7134_INPUT_RADIO,
4134             .amux = LINE2,
4135         },
4136     },
4137     [SAA7134_BOARD_BEHOLD_507_9FM] = {
4138         /*       Beholder Intl. Ltd. 2008      */
4139         /*Dmitry Belimov <d.belimov@gmail.com> */
4140         .name           = "Beholder BeholdTV 507 FM / BeholdTV 509 FM",
4141         .audio_clock    = 0x00187de7,
4142         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4143         .radio_type     = UNSET,
4144         .tuner_addr     = ADDR_UNSET,
4145         .radio_addr     = ADDR_UNSET,
4146         .tda9887_conf   = TDA9887_PRESENT,
4147         .gpiomask       = 0x00008000,
4148         .inputs         = {{
4149             .type = SAA7134_INPUT_TV,
4150             .vmux = 3,
4151             .amux = TV,
4152         },{
4153             .type = SAA7134_INPUT_COMPOSITE1,
4154             .vmux = 1,
4155             .amux = LINE1,
4156         },{
4157             .type = SAA7134_INPUT_SVIDEO,
4158             .vmux = 8,
4159             .amux = LINE1,
4160         }},
4161             .radio = {
4162             .type = SAA7134_INPUT_RADIO,
4163             .amux = LINE2,
4164         },
4165     },
4166     [SAA7134_BOARD_BEHOLD_507RDS_MK5] = {
4167         /*       Beholder Intl. Ltd. 2008      */
4168         /*Dmitry Belimov <d.belimov@gmail.com> */
4169         .name           = "Beholder BeholdTV 507 RDS",
4170         .audio_clock    = 0x00187de7,
4171         .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4172         .radio_type     = UNSET,
4173         .tuner_addr     = ADDR_UNSET,
4174         .radio_addr     = ADDR_UNSET,
4175         .rds_addr   = 0x10,
4176         .tda9887_conf   = TDA9887_PRESENT,
4177         .gpiomask       = 0x00008000,
4178         .inputs         = {{
4179             .type = SAA7134_INPUT_TV,
4180             .vmux = 3,
4181             .amux = TV,
4182         }, {
4183             .type = SAA7134_INPUT_COMPOSITE1,
4184             .vmux = 1,
4185             .amux = LINE1,
4186         }, {
4187             .type = SAA7134_INPUT_SVIDEO,
4188             .vmux = 8,
4189             .amux = LINE1,
4190         } },
4191             .radio = {
4192             .type = SAA7134_INPUT_RADIO,
4193             .amux = LINE2,
4194         },
4195     },
4196     [SAA7134_BOARD_BEHOLD_507RDS_MK3] = {
4197         /*       Beholder Intl. Ltd. 2008      */
4198         /*Dmitry Belimov <d.belimov@gmail.com> */
4199         .name           = "Beholder BeholdTV 507 RDS",
4200         .audio_clock    = 0x00187de7,
4201         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4202         .radio_type     = UNSET,
4203         .tuner_addr     = ADDR_UNSET,
4204         .radio_addr     = ADDR_UNSET,
4205         .rds_addr   = 0x10,
4206         .tda9887_conf   = TDA9887_PRESENT,
4207         .gpiomask       = 0x00008000,
4208         .inputs         = {{
4209             .type = SAA7134_INPUT_TV,
4210             .vmux = 3,
4211             .amux = TV,
4212         }, {
4213             .type = SAA7134_INPUT_COMPOSITE1,
4214             .vmux = 1,
4215             .amux = LINE1,
4216         }, {
4217             .type = SAA7134_INPUT_SVIDEO,
4218             .vmux = 8,
4219             .amux = LINE1,
4220         } },
4221             .radio = {
4222             .type = SAA7134_INPUT_RADIO,
4223             .amux = LINE2,
4224         },
4225     },
4226     [SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM] = {
4227         /*       Beholder Intl. Ltd. 2008      */
4228         /* Dmitry Belimov <d.belimov@gmail.com> */
4229         .name           = "Beholder BeholdTV Columbus TV/FM",
4230         .audio_clock    = 0x00187de7,
4231         .tuner_type     = TUNER_ALPS_TSBE5_PAL,
4232         .radio_type     = TUNER_TEA5767,
4233         .tuner_addr     = 0xc2 >> 1,
4234         .radio_addr     = 0xc0 >> 1,
4235         .tda9887_conf   = TDA9887_PRESENT,
4236         .gpiomask       = 0x000A8004,
4237         .inputs         = {{
4238             .type = SAA7134_INPUT_TV,
4239             .vmux = 3,
4240             .amux = TV,
4241             .gpio = 0x000A8004,
4242         }, {
4243             .type = SAA7134_INPUT_COMPOSITE1,
4244             .vmux = 1,
4245             .amux = LINE1,
4246             .gpio = 0x000A8000,
4247         }, {
4248             .type = SAA7134_INPUT_SVIDEO,
4249             .vmux = 8,
4250             .amux = LINE1,
4251             .gpio = 0x000A8000,
4252         } },
4253         .radio = {
4254             .type = SAA7134_INPUT_RADIO,
4255             .amux = LINE2,
4256             .gpio = 0x000A8000,
4257         },
4258     },
4259     [SAA7134_BOARD_BEHOLD_607FM_MK3] = {
4260         /* Andrey Melnikoff <temnota@kmv.ru> */
4261         .name           = "Beholder BeholdTV 607 FM",
4262         .audio_clock    = 0x00187de7,
4263         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4264         .radio_type     = UNSET,
4265         .tuner_addr     = ADDR_UNSET,
4266         .radio_addr     = ADDR_UNSET,
4267         .tda9887_conf   = TDA9887_PRESENT,
4268         .inputs         = {{
4269             .type = SAA7134_INPUT_TV,
4270             .vmux = 3,
4271             .amux = TV,
4272         }, {
4273             .type = SAA7134_INPUT_COMPOSITE1,
4274             .vmux = 1,
4275             .amux = LINE1,
4276         }, {
4277             .type = SAA7134_INPUT_SVIDEO,
4278             .vmux = 8,
4279             .amux = LINE1,
4280         } },
4281         .radio = {
4282             .type = SAA7134_INPUT_RADIO,
4283             .amux = LINE2,
4284         },
4285     },
4286     [SAA7134_BOARD_BEHOLD_609FM_MK3] = {
4287         /* Andrey Melnikoff <temnota@kmv.ru> */
4288         .name           = "Beholder BeholdTV 609 FM",
4289         .audio_clock    = 0x00187de7,
4290         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4291         .radio_type     = UNSET,
4292         .tuner_addr     = ADDR_UNSET,
4293         .radio_addr     = ADDR_UNSET,
4294         .tda9887_conf   = TDA9887_PRESENT,
4295         .inputs         = {{
4296             .type = SAA7134_INPUT_TV,
4297             .vmux = 3,
4298             .amux = TV,
4299         }, {
4300             .type = SAA7134_INPUT_COMPOSITE1,
4301             .vmux = 1,
4302             .amux = LINE1,
4303         }, {
4304             .type = SAA7134_INPUT_SVIDEO,
4305             .vmux = 8,
4306             .amux = LINE1,
4307         } },
4308         .radio = {
4309             .type = SAA7134_INPUT_RADIO,
4310             .amux = LINE2,
4311         },
4312     },
4313     [SAA7134_BOARD_BEHOLD_607FM_MK5] = {
4314         /* Andrey Melnikoff <temnota@kmv.ru> */
4315         .name           = "Beholder BeholdTV 607 FM",
4316         .audio_clock    = 0x00187de7,
4317         .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4318         .radio_type     = UNSET,
4319         .tuner_addr     = ADDR_UNSET,
4320         .radio_addr     = ADDR_UNSET,
4321         .tda9887_conf   = TDA9887_PRESENT,
4322         .inputs         = {{
4323             .type = SAA7134_INPUT_TV,
4324             .vmux = 3,
4325             .amux = TV,
4326         }, {
4327             .type = SAA7134_INPUT_COMPOSITE1,
4328             .vmux = 1,
4329             .amux = LINE1,
4330         }, {
4331             .type = SAA7134_INPUT_SVIDEO,
4332             .vmux = 8,
4333             .amux = LINE1,
4334         } },
4335         .radio = {
4336             .type = SAA7134_INPUT_RADIO,
4337             .amux = LINE2,
4338         },
4339     },
4340     [SAA7134_BOARD_BEHOLD_609FM_MK5] = {
4341         /* Andrey Melnikoff <temnota@kmv.ru> */
4342         .name           = "Beholder BeholdTV 609 FM",
4343         .audio_clock    = 0x00187de7,
4344         .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4345         .radio_type     = UNSET,
4346         .tuner_addr     = ADDR_UNSET,
4347         .radio_addr     = ADDR_UNSET,
4348         .tda9887_conf   = TDA9887_PRESENT,
4349         .inputs         = {{
4350             .type = SAA7134_INPUT_TV,
4351             .vmux = 3,
4352             .amux = TV,
4353         }, {
4354             .type = SAA7134_INPUT_COMPOSITE1,
4355             .vmux = 1,
4356             .amux = LINE1,
4357         }, {
4358             .type = SAA7134_INPUT_SVIDEO,
4359             .vmux = 8,
4360             .amux = LINE1,
4361         } },
4362         .radio = {
4363             .type = SAA7134_INPUT_RADIO,
4364             .amux = LINE2,
4365         },
4366     },
4367     [SAA7134_BOARD_BEHOLD_607RDS_MK3] = {
4368         /* Andrey Melnikoff <temnota@kmv.ru> */
4369         .name           = "Beholder BeholdTV 607 RDS",
4370         .audio_clock    = 0x00187de7,
4371         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4372         .radio_type     = UNSET,
4373         .tuner_addr     = ADDR_UNSET,
4374         .radio_addr     = ADDR_UNSET,
4375         .rds_addr   = 0x10,
4376         .tda9887_conf   = TDA9887_PRESENT,
4377         .inputs         = {{
4378             .type = SAA7134_INPUT_TV,
4379             .vmux = 3,
4380             .amux = TV,
4381         }, {
4382             .type = SAA7134_INPUT_COMPOSITE1,
4383             .vmux = 1,
4384             .amux = LINE1,
4385         }, {
4386             .type = SAA7134_INPUT_SVIDEO,
4387             .vmux = 8,
4388             .amux = LINE1,
4389         } },
4390         .radio = {
4391             .type = SAA7134_INPUT_RADIO,
4392             .amux = LINE2,
4393         },
4394     },
4395     [SAA7134_BOARD_BEHOLD_609RDS_MK3] = {
4396         /* Andrey Melnikoff <temnota@kmv.ru> */
4397         .name           = "Beholder BeholdTV 609 RDS",
4398         .audio_clock    = 0x00187de7,
4399         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4400         .radio_type     = UNSET,
4401         .tuner_addr     = ADDR_UNSET,
4402         .radio_addr     = ADDR_UNSET,
4403         .rds_addr   = 0x10,
4404         .tda9887_conf   = TDA9887_PRESENT,
4405         .inputs         = {{
4406             .type = SAA7134_INPUT_TV,
4407             .vmux = 3,
4408             .amux = TV,
4409         }, {
4410             .type = SAA7134_INPUT_COMPOSITE1,
4411             .vmux = 1,
4412             .amux = LINE1,
4413         }, {
4414             .type = SAA7134_INPUT_SVIDEO,
4415             .vmux = 8,
4416             .amux = LINE1,
4417         } },
4418         .radio = {
4419             .type = SAA7134_INPUT_RADIO,
4420             .amux = LINE2,
4421         },
4422     },
4423     [SAA7134_BOARD_BEHOLD_607RDS_MK5] = {
4424         /* Andrey Melnikoff <temnota@kmv.ru> */
4425         .name           = "Beholder BeholdTV 607 RDS",
4426         .audio_clock    = 0x00187de7,
4427         .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4428         .radio_type     = UNSET,
4429         .tuner_addr     = ADDR_UNSET,
4430         .radio_addr     = ADDR_UNSET,
4431         .rds_addr   = 0x10,
4432         .tda9887_conf   = TDA9887_PRESENT,
4433         .inputs         = {{
4434             .type = SAA7134_INPUT_TV,
4435             .vmux = 3,
4436             .amux = TV,
4437         }, {
4438             .type = SAA7134_INPUT_COMPOSITE1,
4439             .vmux = 1,
4440             .amux = LINE1,
4441         }, {
4442             .type = SAA7134_INPUT_SVIDEO,
4443             .vmux = 8,
4444             .amux = LINE1,
4445         } },
4446         .radio = {
4447             .type = SAA7134_INPUT_RADIO,
4448             .amux = LINE2,
4449         },
4450     },
4451     [SAA7134_BOARD_BEHOLD_609RDS_MK5] = {
4452         /* Andrey Melnikoff <temnota@kmv.ru> */
4453         .name           = "Beholder BeholdTV 609 RDS",
4454         .audio_clock    = 0x00187de7,
4455         .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4456         .radio_type     = UNSET,
4457         .tuner_addr     = ADDR_UNSET,
4458         .radio_addr     = ADDR_UNSET,
4459         .rds_addr   = 0x10,
4460         .tda9887_conf   = TDA9887_PRESENT,
4461         .inputs         = {{
4462             .type = SAA7134_INPUT_TV,
4463             .vmux = 3,
4464             .amux = TV,
4465         },{
4466             .type = SAA7134_INPUT_COMPOSITE1,
4467             .vmux = 1,
4468             .amux = LINE1,
4469         },{
4470             .type = SAA7134_INPUT_SVIDEO,
4471             .vmux = 8,
4472             .amux = LINE1,
4473         }},
4474         .radio = {
4475             .type = SAA7134_INPUT_RADIO,
4476             .amux = LINE2,
4477         },
4478     },
4479     [SAA7134_BOARD_BEHOLD_M6] = {
4480         /* Igor Kuznetsov <igk@igk.ru> */
4481         /* Andrey Melnikoff <temnota@kmv.ru> */
4482         /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
4483         /* Alexey Osipov <lion-simba@pridelands.ru> */
4484         .name           = "Beholder BeholdTV M6",
4485         .audio_clock    = 0x00187de7,
4486         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4487         .radio_type     = UNSET,
4488         .tuner_addr     = ADDR_UNSET,
4489         .radio_addr     = ADDR_UNSET,
4490         .empress_addr   = 0x20,
4491         .tda9887_conf   = TDA9887_PRESENT,
4492         .inputs         = { {
4493             .type = SAA7134_INPUT_TV,
4494             .vmux = 3,
4495             .amux = TV,
4496         }, {
4497             .type = SAA7134_INPUT_COMPOSITE1,
4498             .vmux = 1,
4499             .amux = LINE1,
4500         }, {
4501             .type = SAA7134_INPUT_SVIDEO,
4502             .vmux = 8,
4503             .amux = LINE1,
4504         } },
4505         .radio = {
4506             .type = SAA7134_INPUT_RADIO,
4507             .amux = LINE2,
4508         },
4509         .mpeg  = SAA7134_MPEG_EMPRESS,
4510         .video_out = CCIR656,
4511         .vid_port_opts  = (SET_T_CODE_POLARITY_NON_INVERTED |
4512                     SET_CLOCK_NOT_DELAYED |
4513                     SET_CLOCK_INVERTED |
4514                     SET_VSYNC_OFF),
4515     },
4516     [SAA7134_BOARD_BEHOLD_M63] = {
4517         /* Igor Kuznetsov <igk@igk.ru> */
4518         /* Andrey Melnikoff <temnota@kmv.ru> */
4519         /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
4520         .name           = "Beholder BeholdTV M63",
4521         .audio_clock    = 0x00187de7,
4522         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
4523         .radio_type     = UNSET,
4524         .tuner_addr     = ADDR_UNSET,
4525         .radio_addr     = ADDR_UNSET,
4526         .empress_addr   = 0x20,
4527         .tda9887_conf   = TDA9887_PRESENT,
4528         .inputs         = { {
4529             .type = SAA7134_INPUT_TV,
4530             .vmux = 3,
4531             .amux = TV,
4532         }, {
4533             .type = SAA7134_INPUT_COMPOSITE1,
4534             .vmux = 1,
4535             .amux = LINE1,
4536         }, {
4537             .type = SAA7134_INPUT_SVIDEO,
4538             .vmux = 8,
4539             .amux = LINE1,
4540         } },
4541         .radio = {
4542             .type = SAA7134_INPUT_RADIO,
4543             .amux = LINE2,
4544         },
4545         .mpeg  = SAA7134_MPEG_EMPRESS,
4546         .video_out = CCIR656,
4547         .vid_port_opts  = (SET_T_CODE_POLARITY_NON_INVERTED |
4548                     SET_CLOCK_NOT_DELAYED |
4549                     SET_CLOCK_INVERTED |
4550                     SET_VSYNC_OFF),
4551     },
4552     [SAA7134_BOARD_BEHOLD_M6_EXTRA] = {
4553         /* Igor Kuznetsov <igk@igk.ru> */
4554         /* Andrey Melnikoff <temnota@kmv.ru> */
4555         /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
4556         /* Alexey Osipov <lion-simba@pridelands.ru> */
4557         .name           = "Beholder BeholdTV M6 Extra",
4558         .audio_clock    = 0x00187de7,
4559         .tuner_type     = TUNER_PHILIPS_FM1216MK5,
4560         .radio_type     = UNSET,
4561         .tuner_addr     = ADDR_UNSET,
4562         .radio_addr     = ADDR_UNSET,
4563         .rds_addr   = 0x10,
4564         .empress_addr   = 0x20,
4565         .tda9887_conf   = TDA9887_PRESENT,
4566         .inputs         = { {
4567             .type = SAA7134_INPUT_TV,
4568             .vmux = 3,
4569             .amux = TV,
4570         }, {
4571             .type = SAA7134_INPUT_COMPOSITE1,
4572             .vmux = 1,
4573             .amux = LINE1,
4574         }, {
4575             .type = SAA7134_INPUT_SVIDEO,
4576             .vmux = 8,
4577             .amux = LINE1,
4578         } },
4579         .radio = {
4580             .type = SAA7134_INPUT_RADIO,
4581             .amux = LINE2,
4582         },
4583         .mpeg  = SAA7134_MPEG_EMPRESS,
4584         .video_out = CCIR656,
4585         .vid_port_opts  = (SET_T_CODE_POLARITY_NON_INVERTED |
4586                     SET_CLOCK_NOT_DELAYED |
4587                     SET_CLOCK_INVERTED |
4588                     SET_VSYNC_OFF),
4589     },
4590     [SAA7134_BOARD_TWINHAN_DTV_DVB_3056] = {
4591         .name           = "Twinhan Hybrid DTV-DVB 3056 PCI",
4592         .audio_clock    = 0x00187de7,
4593         .tuner_type     = TUNER_PHILIPS_TDA8290,
4594         .radio_type     = UNSET,
4595         .tuner_addr = ADDR_UNSET,
4596         .radio_addr = ADDR_UNSET,
4597         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
4598         .mpeg           = SAA7134_MPEG_DVB,
4599         .gpiomask       = 0x0200000,
4600         .inputs = {{
4601             .type = SAA7134_INPUT_TV,
4602             .vmux   = 1,
4603             .amux   = TV,
4604         }, {
4605             .type = SAA7134_INPUT_COMPOSITE1,
4606             .vmux   = 3,
4607             .amux   = LINE1,
4608         }, {
4609             .type = SAA7134_INPUT_SVIDEO,
4610             .vmux   = 8,        /* untested */
4611             .amux   = LINE1,
4612         } },
4613         .radio = {
4614             .type = SAA7134_INPUT_RADIO,
4615             .amux   = TV,
4616             .gpio   = 0x0200000,
4617         },
4618     },
4619     [SAA7134_BOARD_GENIUS_TVGO_A11MCE] = {
4620         /* Adrian Pardini <pardo.bsso@gmail.com> */
4621         .name       = "Genius TVGO AM11MCE",
4622         .audio_clock    = 0x00200000,
4623         .tuner_type = TUNER_TNF_5335MF,
4624         .radio_type     = UNSET,
4625         .tuner_addr = ADDR_UNSET,
4626         .radio_addr = ADDR_UNSET,
4627         .gpiomask       = 0xf000,
4628         .inputs         = {{
4629             .type = SAA7134_INPUT_TV_MONO,
4630             .vmux = 1,
4631             .amux = LINE2,
4632             .gpio = 0x0000,
4633         }, {
4634             .type = SAA7134_INPUT_COMPOSITE1,
4635             .vmux = 3,
4636             .amux = LINE1,
4637             .gpio = 0x2000,
4638         }, {
4639             .type = SAA7134_INPUT_SVIDEO,
4640             .vmux = 8,
4641             .amux = LINE1,
4642             .gpio = 0x2000,
4643     } },
4644         .radio = {
4645             .type = SAA7134_INPUT_RADIO,
4646             .amux = LINE2,
4647             .gpio = 0x1000,
4648         },
4649         .mute = {
4650             .type = SAA7134_INPUT_MUTE,
4651             .amux = LINE2,
4652             .gpio = 0x6000,
4653         },
4654     },
4655     [SAA7134_BOARD_PHILIPS_SNAKE] = {
4656         .name           = "NXP Snake DVB-S reference design",
4657         .audio_clock    = 0x00200000,
4658         .tuner_type     = TUNER_ABSENT,
4659         .radio_type     = UNSET,
4660         .tuner_addr     = ADDR_UNSET,
4661         .radio_addr     = ADDR_UNSET,
4662         .mpeg           = SAA7134_MPEG_DVB,
4663         .inputs = {{
4664             .type = SAA7134_INPUT_COMPOSITE1,
4665             .vmux   = 3,
4666             .amux   = LINE1,
4667         }, {
4668             .type = SAA7134_INPUT_SVIDEO,
4669             .vmux   = 8,
4670             .amux   = LINE1,
4671         } },
4672     },
4673     [SAA7134_BOARD_CREATIX_CTX953] = {
4674         .name         = "Medion/Creatix CTX953 Hybrid",
4675         .audio_clock  = 0x00187de7,
4676         .tuner_type   = TUNER_PHILIPS_TDA8290,
4677         .radio_type   = UNSET,
4678         .tuner_addr   = ADDR_UNSET,
4679         .radio_addr   = ADDR_UNSET,
4680         .tda829x_conf = { .lna_cfg = TDA8290_LNA_OFF },
4681         .mpeg         = SAA7134_MPEG_DVB,
4682         .inputs       = {{
4683             .type = SAA7134_INPUT_TV,
4684             .vmux = 1,
4685             .amux = TV,
4686         }, {
4687             .type = SAA7134_INPUT_COMPOSITE1,
4688             .vmux = 0,
4689             .amux = LINE1,
4690         }, {
4691             .type = SAA7134_INPUT_SVIDEO,
4692             .vmux = 8,
4693             .amux = LINE1,
4694         } },
4695     },
4696     [SAA7134_BOARD_MSI_TVANYWHERE_AD11] = {
4697         .name           = "MSI TV@nywhere A/D v1.1",
4698         .audio_clock    = 0x00187de7,
4699         .tuner_type     = TUNER_PHILIPS_TDA8290,
4700         .radio_type     = UNSET,
4701         .tuner_addr = ADDR_UNSET,
4702         .radio_addr = ADDR_UNSET,
4703         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
4704         .mpeg           = SAA7134_MPEG_DVB,
4705         .gpiomask       = 0x0200000,
4706         .inputs = { {
4707             .type = SAA7134_INPUT_TV,
4708             .vmux   = 1,
4709             .amux   = TV,
4710         }, {
4711             .type = SAA7134_INPUT_COMPOSITE1,
4712             .vmux   = 3,
4713             .amux   = LINE1,
4714         }, {
4715             .type = SAA7134_INPUT_SVIDEO,
4716             .vmux   = 8,
4717             .amux   = LINE1,
4718         } },
4719         .radio = {
4720             .type = SAA7134_INPUT_RADIO,
4721             .amux   = TV,
4722             .gpio   = 0x0200000,
4723         },
4724     },
4725     [SAA7134_BOARD_AVERMEDIA_CARDBUS_506] = {
4726         .name           = "AVerMedia Cardbus TV/Radio (E506R)",
4727         .audio_clock    = 0x187de7,
4728         .tuner_type     = TUNER_XC2028,
4729         .radio_type     = UNSET,
4730         .tuner_addr = ADDR_UNSET,
4731         .radio_addr = ADDR_UNSET,
4732          .mpeg           = SAA7134_MPEG_DVB,
4733          .inputs         = {{
4734              .type = SAA7134_INPUT_TV,
4735              .vmux = 1,
4736              .amux = TV,
4737          }, {
4738              .type = SAA7134_INPUT_COMPOSITE1,
4739              .vmux = 3,
4740              .amux = LINE1,
4741          }, {
4742              .type = SAA7134_INPUT_SVIDEO,
4743              .vmux = 8,
4744              .amux = LINE2,
4745          } },
4746          .radio = {
4747              .type = SAA7134_INPUT_RADIO,
4748              .amux = TV,
4749          },
4750     },
4751     [SAA7134_BOARD_AVERMEDIA_A16D] = {
4752         .name           = "AVerMedia Hybrid TV/Radio (A16D)",
4753         .audio_clock    = 0x187de7,
4754         .tuner_type     = TUNER_XC2028,
4755         .radio_type     = UNSET,
4756         .tuner_addr = ADDR_UNSET,
4757         .radio_addr = ADDR_UNSET,
4758         .mpeg           = SAA7134_MPEG_DVB,
4759         .inputs         = {{
4760             .type = SAA7134_INPUT_TV,
4761             .vmux = 1,
4762             .amux = TV,
4763         }, {
4764             .type = SAA7134_INPUT_SVIDEO,
4765             .vmux = 8,
4766             .amux = LINE1,
4767         }, {
4768             .type = SAA7134_INPUT_COMPOSITE,
4769             .vmux = 0,
4770             .amux = LINE1,
4771         } },
4772         .radio = {
4773             .type = SAA7134_INPUT_RADIO,
4774             .amux = TV,
4775         },
4776     },
4777     [SAA7134_BOARD_AVERMEDIA_M115] = {
4778         .name           = "Avermedia M115",
4779         .audio_clock    = 0x187de7,
4780         .tuner_type     = TUNER_XC2028,
4781         .radio_type     = UNSET,
4782         .tuner_addr = ADDR_UNSET,
4783         .radio_addr = ADDR_UNSET,
4784         .inputs         = {{
4785             .type = SAA7134_INPUT_TV,
4786             .vmux = 1,
4787             .amux = TV,
4788         }, {
4789             .type = SAA7134_INPUT_COMPOSITE1,
4790             .vmux = 3,
4791             .amux = LINE1,
4792         }, {
4793             .type = SAA7134_INPUT_SVIDEO,
4794             .vmux = 8,
4795             .amux = LINE2,
4796         } },
4797     },
4798     [SAA7134_BOARD_VIDEOMATE_T750] = {
4799         /* John Newbigin <jn@it.swin.edu.au> */
4800         .name           = "Compro VideoMate T750",
4801         .audio_clock    = 0x00187de7,
4802         .tuner_type     = TUNER_XC2028,
4803         .radio_type     = UNSET,
4804         .tuner_addr = 0x61,
4805         .radio_addr = ADDR_UNSET,
4806         .mpeg           = SAA7134_MPEG_DVB,
4807         .inputs = {{
4808             .type = SAA7134_INPUT_TV,
4809             .vmux   = 3,
4810             .amux   = TV,
4811         }, {
4812             .type = SAA7134_INPUT_COMPOSITE1,
4813             .vmux   = 1,
4814             .amux   = LINE2,
4815         }, {
4816             .type = SAA7134_INPUT_SVIDEO,
4817             .vmux   = 8,
4818             .amux   = LINE2,
4819         } },
4820         .radio = {
4821             .type = SAA7134_INPUT_RADIO,
4822             .amux = TV,
4823         }
4824     },
4825     [SAA7134_BOARD_AVERMEDIA_A700_PRO] = {
4826         /* Matthias Schwarzott <zzam@gentoo.org> */
4827         .name           = "Avermedia DVB-S Pro A700",
4828         .audio_clock    = 0x00187de7,
4829         .tuner_type     = TUNER_ABSENT,
4830         .radio_type     = UNSET,
4831         .tuner_addr     = ADDR_UNSET,
4832         .radio_addr     = ADDR_UNSET,
4833         .mpeg           = SAA7134_MPEG_DVB,
4834         .inputs         = { {
4835             .type = SAA7134_INPUT_COMPOSITE,
4836             .vmux = 1,
4837             .amux = LINE1,
4838         }, {
4839             .type = SAA7134_INPUT_SVIDEO,
4840             .vmux = 6,
4841             .amux = LINE1,
4842         } },
4843     },
4844     [SAA7134_BOARD_AVERMEDIA_A700_HYBRID] = {
4845         /* Matthias Schwarzott <zzam@gentoo.org> */
4846         .name           = "Avermedia DVB-S Hybrid+FM A700",
4847         .audio_clock    = 0x00187de7,
4848         .tuner_type     = TUNER_XC2028,
4849         .radio_type     = UNSET,
4850         .tuner_addr     = ADDR_UNSET,
4851         .radio_addr     = ADDR_UNSET,
4852         .mpeg           = SAA7134_MPEG_DVB,
4853         .inputs         = { {
4854             .type = SAA7134_INPUT_TV,
4855             .vmux   = 4,
4856             .amux   = TV,
4857         }, {
4858             .type = SAA7134_INPUT_COMPOSITE,
4859             .vmux = 1,
4860             .amux = LINE1,
4861         }, {
4862             .type = SAA7134_INPUT_SVIDEO,
4863             .vmux = 6,
4864             .amux = LINE1,
4865         } },
4866         .radio = {
4867             .type = SAA7134_INPUT_RADIO,
4868             .amux = TV,
4869         },
4870     },
4871     [SAA7134_BOARD_BEHOLD_H6] = {
4872         /* Igor Kuznetsov <igk@igk.ru> */
4873         .name           = "Beholder BeholdTV H6",
4874         .audio_clock    = 0x00187de7,
4875         .tuner_type     = TUNER_PHILIPS_FMD1216MEX_MK3,
4876         .radio_type     = UNSET,
4877         .tuner_addr     = ADDR_UNSET,
4878         .radio_addr     = ADDR_UNSET,
4879         .tda9887_conf   = TDA9887_PRESENT,
4880         .mpeg           = SAA7134_MPEG_DVB,
4881         .inputs         = {{
4882             .type = SAA7134_INPUT_TV,
4883             .vmux = 3,
4884             .amux = TV,
4885         }, {
4886             .type = SAA7134_INPUT_COMPOSITE1,
4887             .vmux = 1,
4888             .amux = LINE1,
4889         }, {
4890             .type = SAA7134_INPUT_SVIDEO,
4891             .vmux = 8,
4892             .amux = LINE1,
4893         } },
4894         .radio = {
4895             .type = SAA7134_INPUT_RADIO,
4896             .amux = LINE2,
4897         },
4898     },
4899     [SAA7134_BOARD_ASUSTeK_TIGER_3IN1] = {
4900         .name           = "Asus Tiger 3in1",
4901         .audio_clock    = 0x00187de7,
4902         .tuner_type     = TUNER_PHILIPS_TDA8290,
4903         .radio_type     = UNSET,
4904         .tuner_addr     = ADDR_UNSET,
4905         .radio_addr     = ADDR_UNSET,
4906         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
4907         .gpiomask       = 1 << 21,
4908         .mpeg           = SAA7134_MPEG_DVB,
4909         .inputs         = {{
4910             .type = SAA7134_INPUT_TV,
4911             .vmux = 1,
4912             .amux = TV,
4913         }, {
4914             .type = SAA7134_INPUT_COMPOSITE,
4915             .vmux = 0,
4916             .amux = LINE2,
4917         }, {
4918             .type = SAA7134_INPUT_SVIDEO,
4919             .vmux = 8,
4920             .amux = LINE2,
4921         } },
4922         .radio = {
4923             .type = SAA7134_INPUT_RADIO,
4924             .amux = TV,
4925             .gpio = 0x0200000,
4926         },
4927     },
4928     [SAA7134_BOARD_ASUSTeK_PS3_100] = {
4929         .name           = "Asus My Cinema PS3-100",
4930         .audio_clock    = 0x00187de7,
4931         .tuner_type     = TUNER_PHILIPS_TDA8290,
4932         .radio_type     = UNSET,
4933         .tuner_addr     = ADDR_UNSET,
4934         .radio_addr     = ADDR_UNSET,
4935         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_GP0_HIGH_OFF },
4936         .gpiomask       = 1 << 21,
4937         .mpeg           = SAA7134_MPEG_DVB,
4938         .inputs         = {{
4939             .type = SAA7134_INPUT_TV,
4940             .vmux = 1,
4941             .amux = TV,
4942         }, {
4943             .type = SAA7134_INPUT_COMPOSITE,
4944             .vmux = 0,
4945             .amux = LINE2,
4946         }, {
4947             .type = SAA7134_INPUT_SVIDEO,
4948             .vmux = 8,
4949             .amux = LINE2,
4950         } },
4951         .radio = {
4952             .type = SAA7134_INPUT_RADIO,
4953             .amux = TV,
4954             .gpio = 0x0200000,
4955         },
4956     },
4957     [SAA7134_BOARD_REAL_ANGEL_220] = {
4958         .name           = "Zogis Real Angel 220",
4959         .audio_clock    = 0x00187de7,
4960         .tuner_type     = TUNER_TNF_5335MF,
4961         .radio_type     = UNSET,
4962         .tuner_addr     = ADDR_UNSET,
4963         .radio_addr     = ADDR_UNSET,
4964         .gpiomask       = 0x801a8087,
4965         .inputs = { {
4966             .type = SAA7134_INPUT_TV,
4967             .vmux   = 3,
4968             .amux   = LINE2,
4969             .gpio   = 0x624000,
4970         }, {
4971             .type = SAA7134_INPUT_COMPOSITE1,
4972             .vmux   = 1,
4973             .amux   = LINE1,
4974             .gpio   = 0x624000,
4975         }, {
4976             .type = SAA7134_INPUT_SVIDEO,
4977             .vmux   = 1,
4978             .amux   = LINE1,
4979             .gpio   = 0x624000,
4980         } },
4981         .radio = {
4982             .type = SAA7134_INPUT_RADIO,
4983             .amux   = LINE2,
4984             .gpio   = 0x624001,
4985         },
4986         .mute = {
4987             .type = SAA7134_INPUT_MUTE,
4988             .amux = TV,
4989         },
4990     },
4991     [SAA7134_BOARD_ADS_INSTANT_HDTV_PCI] = {
4992         .name           = "ADS Tech Instant HDTV",
4993         .audio_clock    = 0x00187de7,
4994         .tuner_type     = TUNER_PHILIPS_TUV1236D,
4995         .radio_type     = UNSET,
4996         .tuner_addr     = ADDR_UNSET,
4997         .radio_addr     = ADDR_UNSET,
4998         .tda9887_conf   = TDA9887_PRESENT,
4999         .mpeg           = SAA7134_MPEG_DVB,
5000         .inputs         = { {
5001             .type = SAA7134_INPUT_TV,
5002             .vmux = 1,
5003             .amux = TV,
5004         }, {
5005             .type = SAA7134_INPUT_COMPOSITE,
5006             .vmux = 4,
5007             .amux = LINE1,
5008         }, {
5009             .type = SAA7134_INPUT_SVIDEO,
5010             .vmux = 8,
5011             .amux = LINE1,
5012         } },
5013     },
5014     [SAA7134_BOARD_ASUSTeK_TIGER] = {
5015         .name           = "Asus Tiger Rev:1.00",
5016         .audio_clock    = 0x00187de7,
5017         .tuner_type     = TUNER_PHILIPS_TDA8290,
5018         .radio_type     = UNSET,
5019         .tuner_addr = ADDR_UNSET,
5020         .radio_addr = ADDR_UNSET,
5021         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_OFF },
5022         .mpeg           = SAA7134_MPEG_DVB,
5023         .gpiomask       = 0x0200000,
5024         .inputs = { {
5025             .type = SAA7134_INPUT_TV,
5026             .vmux   = 1,
5027             .amux   = TV,
5028         }, {
5029             .type = SAA7134_INPUT_COMPOSITE1,
5030             .vmux   = 3,
5031             .amux   = LINE2,
5032         }, {
5033             .type = SAA7134_INPUT_COMPOSITE2,
5034             .vmux   = 0,
5035             .amux   = LINE2,
5036         }, {
5037             .type = SAA7134_INPUT_SVIDEO,
5038             .vmux   = 8,
5039             .amux   = LINE2,
5040         } },
5041         .radio = {
5042             .type = SAA7134_INPUT_RADIO,
5043             .amux   = TV,
5044             .gpio   = 0x0200000,
5045         },
5046     },
5047     [SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG] = {
5048         .name           = "Kworld Plus TV Analog Lite PCI",
5049         .audio_clock    = 0x00187de7,
5050         .tuner_type     = TUNER_YMEC_TVF_5533MF,
5051         .radio_type     = TUNER_TEA5767,
5052         .tuner_addr     = ADDR_UNSET,
5053         .radio_addr     = 0x60,
5054         .gpiomask       = 0x80000700,
5055         .inputs = { {
5056             .type = SAA7134_INPUT_TV,
5057             .vmux   = 1,
5058             .amux   = LINE2,
5059             .gpio   = 0x100,
5060         }, {
5061             .type = SAA7134_INPUT_COMPOSITE1,
5062             .vmux   = 3,
5063             .amux   = LINE1,
5064             .gpio   = 0x200,
5065         }, {
5066             .type = SAA7134_INPUT_SVIDEO,
5067             .vmux   = 8,
5068             .amux   = LINE1,
5069             .gpio   = 0x200,
5070         } },
5071         .radio = {
5072             .type = SAA7134_INPUT_RADIO,
5073             .vmux   = 1,
5074             .amux   = LINE1,
5075             .gpio   = 0x100,
5076         },
5077         .mute = {
5078             .type = SAA7134_INPUT_MUTE,
5079             .vmux = 8,
5080             .amux = 2,
5081         },
5082     },
5083     [SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG] = {
5084         .name           = "Kworld PCI SBTVD/ISDB-T Full-Seg Hybrid",
5085         .audio_clock    = 0x00187de7,
5086         .tuner_type     = TUNER_PHILIPS_TDA8290,
5087         .tuner_addr     = ADDR_UNSET,
5088         .radio_type     = UNSET,
5089         .radio_addr = ADDR_UNSET,
5090         .gpiomask       = 0x8e054000,
5091         .mpeg           = SAA7134_MPEG_DVB,
5092         .ts_type    = SAA7134_MPEG_TS_PARALLEL,
5093         .inputs = { {
5094             .type = SAA7134_INPUT_TV,
5095             .vmux   = 1,
5096             .amux   = TV,
5097 #if 0   /* FIXME */
5098         }, {
5099             .type = SAA7134_INPUT_COMPOSITE1,
5100             .vmux   = 3,
5101             .amux   = LINE1,
5102             .gpio   = 0x200,
5103         }, {
5104             .type = SAA7134_INPUT_SVIDEO,
5105             .vmux   = 8,
5106             .amux   = LINE1,
5107             .gpio   = 0x200,
5108 #endif
5109         } },
5110 #if 0
5111         .radio = {
5112             .type = SAA7134_INPUT_RADIO,
5113             .vmux   = 1,
5114             .amux   = LINE1,
5115             .gpio   = 0x100,
5116         },
5117 #endif
5118         .mute = {
5119             .type = SAA7134_INPUT_MUTE,
5120             .vmux = 0,
5121             .amux = TV,
5122         },
5123     },
5124     [SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS] = {
5125         .name           = "Avermedia AVerTV GO 007 FM Plus",
5126         .audio_clock    = 0x00187de7,
5127         .tuner_type     = TUNER_PHILIPS_TDA8290,
5128         .radio_type     = UNSET,
5129         .tuner_addr = ADDR_UNSET,
5130         .radio_addr = ADDR_UNSET,
5131         .gpiomask       = 0x00300003,
5132         /* .gpiomask       = 0x8c240003, */
5133         .inputs         = { {
5134             .type = SAA7134_INPUT_TV,
5135             .vmux = 1,
5136             .amux = TV,
5137             .gpio = 0x01,
5138         }, {
5139             .type = SAA7134_INPUT_SVIDEO,
5140             .vmux = 6,
5141             .amux = LINE1,
5142             .gpio = 0x02,
5143         } },
5144         .radio = {
5145             .type = SAA7134_INPUT_RADIO,
5146             .amux = TV,
5147             .gpio = 0x00300001,
5148         },
5149         .mute = {
5150             .type = SAA7134_INPUT_MUTE,
5151             .amux = TV,
5152             .gpio = 0x01,
5153         },
5154     },
5155     [SAA7134_BOARD_AVERMEDIA_STUDIO_507UA] = {
5156         /* Andy Shevchenko <andy@smile.org.ua> */
5157         .name           = "Avermedia AVerTV Studio 507UA",
5158         .audio_clock    = 0x00187de7,
5159         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3, /* Should be MK5 */
5160         .radio_type     = UNSET,
5161         .tuner_addr     = ADDR_UNSET,
5162         .radio_addr     = ADDR_UNSET,
5163         .tda9887_conf   = TDA9887_PRESENT,
5164         .gpiomask       = 0x03,
5165         .inputs         = { {
5166             .type = SAA7134_INPUT_TV,
5167             .vmux = 1,
5168             .amux = TV,
5169             .gpio = 0x00,
5170         }, {
5171             .type = SAA7134_INPUT_COMPOSITE1,
5172             .vmux = 3,
5173             .amux = LINE1,
5174             .gpio = 0x00,
5175         }, {
5176             .type = SAA7134_INPUT_SVIDEO,
5177             .vmux = 8,
5178             .amux = LINE1,
5179             .gpio = 0x00,
5180         } },
5181         .radio = {
5182             .type = SAA7134_INPUT_RADIO,
5183             .amux = LINE2,
5184             .gpio = 0x01,
5185         },
5186         .mute  = {
5187             .type = SAA7134_INPUT_MUTE,
5188             .amux = LINE1,
5189             .gpio = 0x00,
5190         },
5191     },
5192     [SAA7134_BOARD_VIDEOMATE_S350] = {
5193         /* Jan D. Louw <jd.louw@mweb.co.za */
5194         .name       = "Compro VideoMate S350/S300",
5195         .audio_clock    = 0x00187de7,
5196         .tuner_type = TUNER_ABSENT,
5197         .radio_type = UNSET,
5198         .tuner_addr = ADDR_UNSET,
5199         .radio_addr = ADDR_UNSET,
5200         .mpeg       = SAA7134_MPEG_DVB,
5201         .inputs = { {
5202             .type = SAA7134_INPUT_COMPOSITE1,
5203             .vmux   = 0,
5204             .amux   = LINE1,
5205         }, {
5206             .type = SAA7134_INPUT_SVIDEO,
5207             .vmux   = 8, /* Not tested */
5208             .amux   = LINE1
5209         } },
5210     },
5211     [SAA7134_BOARD_BEHOLD_X7] = {
5212         /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
5213         .name           = "Beholder BeholdTV X7",
5214         .audio_clock    = 0x00187de7,
5215         .tuner_type     = TUNER_XC5000,
5216         .radio_type     = UNSET,
5217         .tuner_addr     = ADDR_UNSET,
5218         .radio_addr     = ADDR_UNSET,
5219         .mpeg           = SAA7134_MPEG_DVB,
5220         .inputs         = { {
5221             .type = SAA7134_INPUT_TV,
5222             .vmux = 2,
5223             .amux = TV,
5224         }, {
5225             .type = SAA7134_INPUT_COMPOSITE1,
5226             .vmux = 0,
5227             .amux = LINE1,
5228         }, {
5229             .type = SAA7134_INPUT_SVIDEO,
5230             .vmux = 9,
5231             .amux = LINE1,
5232         } },
5233         .radio = {
5234             .type = SAA7134_INPUT_RADIO,
5235             .amux = TV,
5236         },
5237     },
5238     [SAA7134_BOARD_ZOLID_HYBRID_PCI] = {
5239         .name           = "Zolid Hybrid TV Tuner PCI",
5240         .audio_clock    = 0x00187de7,
5241         .tuner_type     = TUNER_PHILIPS_TDA8290,
5242         .radio_type     = UNSET,
5243         .tuner_addr     = ADDR_UNSET,
5244         .radio_addr     = ADDR_UNSET,
5245         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_OFF },
5246         .mpeg           = SAA7134_MPEG_DVB,
5247         .ts_type    = SAA7134_MPEG_TS_PARALLEL,
5248         .inputs         = {{
5249             .type = SAA7134_INPUT_TV,
5250             .vmux = 1,
5251             .amux = TV,
5252         } },
5253         .radio = {  /* untested */
5254             .type = SAA7134_INPUT_RADIO,
5255             .amux = TV,
5256         },
5257     },
5258     [SAA7134_BOARD_ASUS_EUROPA_HYBRID] = {
5259         .name           = "Asus Europa Hybrid OEM",
5260         .audio_clock    = 0x00187de7,
5261         .tuner_type     = TUNER_PHILIPS_TD1316,
5262         .radio_type     = UNSET,
5263         .tuner_addr = 0x61,
5264         .radio_addr = ADDR_UNSET,
5265         .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
5266         .mpeg           = SAA7134_MPEG_DVB,
5267         .inputs = { {
5268             .type = SAA7134_INPUT_TV,
5269             .vmux   = 3,
5270             .amux   = TV,
5271         }, {
5272             .type = SAA7134_INPUT_COMPOSITE1,
5273             .vmux   = 4,
5274             .amux   = LINE2,
5275         }, {
5276             .type = SAA7134_INPUT_SVIDEO,
5277             .vmux   = 8,
5278             .amux   = LINE2,
5279         } },
5280     },
5281     [SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S] = {
5282         .name           = "Leadtek Winfast DTV1000S",
5283         .audio_clock    = 0x00187de7,
5284         .tuner_type     = TUNER_PHILIPS_TDA8290,
5285         .radio_type     = UNSET,
5286         .tuner_addr     = ADDR_UNSET,
5287         .radio_addr     = ADDR_UNSET,
5288         .mpeg           = SAA7134_MPEG_DVB,
5289         .inputs         = { {
5290             .type = SAA7134_INPUT_COMPOSITE1,
5291             .vmux = 3,
5292         }, {
5293             .type = SAA7134_INPUT_SVIDEO,
5294             .vmux = 8,
5295         } },
5296     },
5297     [SAA7134_BOARD_BEHOLD_505RDS_MK3] = {
5298         /*       Beholder Intl. Ltd. 2008      */
5299         /*Dmitry Belimov <d.belimov@gmail.com> */
5300         .name           = "Beholder BeholdTV 505 RDS",
5301         .audio_clock    = 0x00200000,
5302         .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3,
5303         .radio_type     = UNSET,
5304         .tuner_addr     = ADDR_UNSET,
5305         .radio_addr     = ADDR_UNSET,
5306         .rds_addr   = 0x10,
5307         .tda9887_conf   = TDA9887_PRESENT,
5308         .gpiomask       = 0x00008000,
5309         .inputs         = {{
5310             .type = SAA7134_INPUT_TV,
5311             .vmux = 3,
5312             .amux = LINE2,
5313         }, {
5314             .type = SAA7134_INPUT_COMPOSITE1,
5315             .vmux = 1,
5316             .amux = LINE1,
5317         }, {
5318             .type = SAA7134_INPUT_SVIDEO,
5319             .vmux = 8,
5320             .amux = LINE1,
5321         } },
5322         .mute = {
5323             .type = SAA7134_INPUT_MUTE,
5324             .amux = LINE1,
5325         },
5326         .radio = {
5327             .type = SAA7134_INPUT_RADIO,
5328             .amux = LINE2,
5329         },
5330     },
5331     [SAA7134_BOARD_HAWELL_HW_404M7] = {
5332         /* Hawell HW-404M7 & Hawell HW-808M7  */
5333         /* Bogoslovskiy Viktor <bogovic@bk.ru> */
5334         .name         = "Hawell HW-404M7",
5335         .audio_clock   = 0x00200000,
5336         .tuner_type    = UNSET,
5337         .radio_type    = UNSET,
5338         .tuner_addr   = ADDR_UNSET,
5339         .radio_addr   = ADDR_UNSET,
5340         .gpiomask      = 0x389c00,
5341         .inputs       = {{
5342             .type = SAA7134_INPUT_COMPOSITE1,
5343             .vmux = 3,
5344             .amux = LINE1,
5345             .gpio = 0x01fc00,
5346         } },
5347     },
5348     [SAA7134_BOARD_BEHOLD_H7] = {
5349         /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
5350         .name           = "Beholder BeholdTV H7",
5351         .audio_clock    = 0x00187de7,
5352         .tuner_type     = TUNER_XC5000,
5353         .radio_type     = UNSET,
5354         .tuner_addr     = ADDR_UNSET,
5355         .radio_addr     = ADDR_UNSET,
5356         .mpeg           = SAA7134_MPEG_DVB,
5357         .ts_type    = SAA7134_MPEG_TS_PARALLEL,
5358         .inputs         = { {
5359             .type = SAA7134_INPUT_TV,
5360             .vmux = 2,
5361             .amux = TV,
5362         }, {
5363             .type = SAA7134_INPUT_COMPOSITE1,
5364             .vmux = 0,
5365             .amux = LINE1,
5366         }, {
5367             .type = SAA7134_INPUT_SVIDEO,
5368             .vmux = 9,
5369             .amux = LINE1,
5370         } },
5371         .radio = {
5372             .type = SAA7134_INPUT_RADIO,
5373             .amux = TV,
5374         },
5375     },
5376     [SAA7134_BOARD_BEHOLD_A7] = {
5377         /* Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> */
5378         .name           = "Beholder BeholdTV A7",
5379         .audio_clock    = 0x00187de7,
5380         .tuner_type     = TUNER_XC5000,
5381         .radio_type     = UNSET,
5382         .tuner_addr     = ADDR_UNSET,
5383         .radio_addr     = ADDR_UNSET,
5384         .inputs         = { {
5385             .type = SAA7134_INPUT_TV,
5386             .vmux = 2,
5387             .amux = TV,
5388         }, {
5389             .type = SAA7134_INPUT_COMPOSITE1,
5390             .vmux = 0,
5391             .amux = LINE1,
5392         }, {
5393             .type = SAA7134_INPUT_SVIDEO,
5394             .vmux = 9,
5395             .amux = LINE1,
5396         } },
5397         .radio = {
5398             .type = SAA7134_INPUT_RADIO,
5399             .amux = TV,
5400         },
5401     },
5402     [SAA7134_BOARD_TECHNOTREND_BUDGET_T3000] = {
5403         .name           = "TechoTrend TT-budget T-3000",
5404         .tuner_type     = TUNER_PHILIPS_TD1316,
5405         .audio_clock    = 0x00187de7,
5406         .radio_type     = UNSET,
5407         .tuner_addr     = 0x63,
5408         .radio_addr     = ADDR_UNSET,
5409         .tda9887_conf   = TDA9887_PRESENT | TDA9887_PORT1_ACTIVE,
5410         .mpeg           = SAA7134_MPEG_DVB,
5411         .inputs = {{
5412             .type = SAA7134_INPUT_TV,
5413             .vmux   = 3,
5414             .amux   = TV,
5415         }, {
5416             .type = SAA7134_INPUT_COMPOSITE1,
5417             .vmux   = 0,
5418             .amux   = LINE2,
5419         }, {
5420             .type = SAA7134_INPUT_SVIDEO,
5421             .vmux   = 8,
5422             .amux   = LINE2,
5423         } },
5424     },
5425     [SAA7134_BOARD_VIDEOMATE_M1F] = {
5426         /* Pavel Osnova <pvosnova@gmail.com> */
5427         .name           = "Compro VideoMate Vista M1F",
5428         .audio_clock    = 0x00187de7,
5429         .tuner_type     = TUNER_LG_PAL_NEW_TAPC,
5430         .radio_type     = TUNER_TEA5767,
5431         .tuner_addr     = ADDR_UNSET,
5432         .radio_addr     = 0x60,
5433         .inputs         = { {
5434             .type = SAA7134_INPUT_TV,
5435             .vmux = 1,
5436             .amux = TV,
5437         }, {
5438             .type = SAA7134_INPUT_COMPOSITE1,
5439             .vmux = 3,
5440             .amux = LINE2,
5441         }, {
5442             .type = SAA7134_INPUT_SVIDEO,
5443             .vmux = 8,
5444             .amux = LINE2,
5445         } },
5446         .radio = {
5447             .type = SAA7134_INPUT_RADIO,
5448             .amux = LINE1,
5449         },
5450         .mute = {
5451             .type = SAA7134_INPUT_MUTE,
5452             .amux = TV,
5453         },
5454     },
5455     [SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2] = {
5456         /* Timothy Lee <timothy.lee@siriushk.com> */
5457         .name       = "MagicPro ProHDTV Pro2 DMB-TH/Hybrid",
5458         .audio_clock    = 0x00187de7,
5459         .tuner_type = TUNER_PHILIPS_TDA8290,
5460         .radio_type = UNSET,
5461         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_ON_BRIDGE },
5462         .tuner_addr = ADDR_UNSET,
5463         .radio_addr = ADDR_UNSET,
5464         .gpiomask   = 0x02050000,
5465         .mpeg       = SAA7134_MPEG_DVB,
5466         .ts_type    = SAA7134_MPEG_TS_PARALLEL,
5467         .inputs     = { {
5468             .type = SAA7134_INPUT_TV,
5469             .vmux   = 1,
5470             .amux   = TV,
5471             .gpio   = 0x00050000,
5472         }, {
5473             .type = SAA7134_INPUT_COMPOSITE1,
5474             .vmux   = 3,
5475             .amux   = LINE1,
5476             .gpio   = 0x00050000,
5477         }, {
5478             .type = SAA7134_INPUT_SVIDEO,
5479             .vmux   = 8,
5480             .amux   = LINE1,
5481             .gpio   = 0x00050000,
5482         } },
5483         .radio = {
5484             .type = SAA7134_INPUT_RADIO,
5485             .amux   = TV,
5486             .gpio   = 0x00050000,
5487         },
5488         .mute = {
5489             .type = SAA7134_INPUT_MUTE,
5490             .vmux   = 0,
5491             .amux   = TV,
5492             .gpio   = 0x00050000,
5493         },
5494     },
5495     [SAA7134_BOARD_BEHOLD_501] = {
5496         /*       Beholder Intl. Ltd. 2010       */
5497         /* Dmitry Belimov <d.belimov@gmail.com> */
5498         .name           = "Beholder BeholdTV 501",
5499         .audio_clock    = 0x00200000,
5500         .tuner_type     = TUNER_ABSENT,
5501         .radio_type     = UNSET,
5502         .tuner_addr     = ADDR_UNSET,
5503         .radio_addr     = ADDR_UNSET,
5504         .gpiomask       = 0x00008000,
5505         .inputs         = { {
5506             .type = SAA7134_INPUT_TV,
5507             .vmux = 3,
5508             .amux = LINE2,
5509         }, {
5510             .type = SAA7134_INPUT_COMPOSITE1,
5511             .vmux = 1,
5512             .amux = LINE1,
5513         }, {
5514             .type = SAA7134_INPUT_SVIDEO,
5515             .vmux = 8,
5516             .amux = LINE1,
5517         } },
5518         .mute = {
5519             .type = SAA7134_INPUT_MUTE,
5520             .amux = LINE1,
5521         },
5522     },
5523     [SAA7134_BOARD_BEHOLD_503FM] = {
5524         /*       Beholder Intl. Ltd. 2010       */
5525         /* Dmitry Belimov <d.belimov@gmail.com> */
5526         .name           = "Beholder BeholdTV 503 FM",
5527         .audio_clock    = 0x00200000,
5528         .tuner_type     = TUNER_ABSENT,
5529         .radio_type     = UNSET,
5530         .tuner_addr     = ADDR_UNSET,
5531         .radio_addr     = ADDR_UNSET,
5532         .gpiomask       = 0x00008000,
5533         .inputs         = { {
5534             .type = SAA7134_INPUT_TV,
5535             .vmux = 3,
5536             .amux = LINE2,
5537         }, {
5538             .type = SAA7134_INPUT_COMPOSITE1,
5539             .vmux = 1,
5540             .amux = LINE1,
5541         }, {
5542             .type = SAA7134_INPUT_SVIDEO,
5543             .vmux = 8,
5544             .amux = LINE1,
5545         } },
5546         .mute = {
5547             .type = SAA7134_INPUT_MUTE,
5548             .amux = LINE1,
5549         },
5550     },
5551     [SAA7134_BOARD_SENSORAY811_911] = {
5552         .name       = "Sensoray 811/911",
5553         .audio_clock    = 0x00200000,
5554         .tuner_type = TUNER_ABSENT,
5555         .radio_type = UNSET,
5556         .tuner_addr = ADDR_UNSET,
5557         .radio_addr = ADDR_UNSET,
5558         .inputs     = {{
5559             .type = SAA7134_INPUT_COMPOSITE1,
5560             .vmux   = 0,
5561             .amux   = LINE1,
5562         }, {
5563             .type = SAA7134_INPUT_COMPOSITE3,
5564             .vmux   = 2,
5565             .amux   = LINE1,
5566         }, {
5567             .type = SAA7134_INPUT_SVIDEO,
5568             .vmux   = 8,
5569             .amux   = LINE1,
5570         } },
5571     },
5572     [SAA7134_BOARD_KWORLD_PC150U] = {
5573         .name           = "Kworld PC150-U",
5574         .audio_clock    = 0x00187de7,
5575         .tuner_type     = TUNER_PHILIPS_TDA8290,
5576         .radio_type     = UNSET,
5577         .tuner_addr = ADDR_UNSET,
5578         .radio_addr = ADDR_UNSET,
5579         .mpeg           = SAA7134_MPEG_DVB,
5580         .gpiomask       = 1 << 21,
5581         .ts_type    = SAA7134_MPEG_TS_PARALLEL,
5582         .inputs = { {
5583             .type = SAA7134_INPUT_TV,
5584             .vmux   = 1,
5585             .amux   = TV,
5586         }, {
5587             .type = SAA7134_INPUT_COMPOSITE,
5588             .vmux   = 3,
5589             .amux   = LINE1,
5590         }, {
5591             .type = SAA7134_INPUT_SVIDEO,
5592             .vmux   = 8,
5593             .amux   = LINE2,
5594         } },
5595         .radio = {
5596             .type = SAA7134_INPUT_RADIO,
5597             .amux   = TV,
5598             .gpio   = 0x0000000,
5599         },
5600     },
5601     [SAA7134_BOARD_HAWELL_HW_9004V1] = {
5602         /* Hawell HW-9004V1 */
5603         /* Vadim Frolov <fralik@gmail.com> */
5604         .name         = "Hawell HW-9004V1",
5605         .audio_clock   = 0x00200000,
5606         .tuner_type    = UNSET,
5607         .radio_type    = UNSET,
5608         .tuner_addr   = ADDR_UNSET,
5609         .radio_addr   = ADDR_UNSET,
5610         .gpiomask      = 0x618E700,
5611         .inputs       = {{
5612             .type = SAA7134_INPUT_COMPOSITE1,
5613             .vmux = 3,
5614             .amux = LINE1,
5615             .gpio = 0x6010000,
5616         } },
5617     },
5618     [SAA7134_BOARD_AVERMEDIA_A706] = {
5619         .name           = "AverMedia AverTV Satellite Hybrid+FM A706",
5620         .audio_clock    = 0x00187de7,
5621         .tuner_type     = TUNER_PHILIPS_TDA8290,
5622         .radio_type     = UNSET,
5623         .tuner_addr     = ADDR_UNSET,
5624         .radio_addr     = ADDR_UNSET,
5625         .tda829x_conf   = { .lna_cfg = TDA8290_LNA_OFF,
5626                     .no_i2c_gate = 1,
5627                     .tda18271_std_map = &aver_a706_std_map },
5628         .gpiomask       = 1 << 11,
5629         .mpeg           = SAA7134_MPEG_DVB,
5630         .inputs         = {{
5631             .type = SAA7134_INPUT_TV,
5632             .vmux = 1,
5633             .amux = TV,
5634         }, {
5635             .type = SAA7134_INPUT_COMPOSITE,
5636             .vmux = 4,
5637             .amux = LINE1,
5638         }, {
5639             .type = SAA7134_INPUT_SVIDEO,
5640             .vmux = 8,
5641             .amux = LINE1,
5642         } },
5643         .radio = {
5644             .type = SAA7134_INPUT_RADIO,
5645             .amux = TV,
5646             .gpio = 0x0000800,
5647         },
5648     },
5649     [SAA7134_BOARD_WIS_VOYAGER] = {
5650         .name           = "WIS Voyager or compatible",
5651         .audio_clock    = 0x00200000,
5652         .tuner_type = TUNER_PHILIPS_TDA8290,
5653         .radio_type     = UNSET,
5654         .tuner_addr     = ADDR_UNSET,
5655         .radio_addr     = ADDR_UNSET,
5656         .mpeg       = SAA7134_MPEG_GO7007,
5657         .inputs     = { {
5658             .type = SAA7134_INPUT_COMPOSITE1,
5659             .vmux = 0,
5660             .amux = LINE2,
5661         }, {
5662             .type = SAA7134_INPUT_TV,
5663             .vmux = 3,
5664             .amux = TV,
5665         }, {
5666             .type = SAA7134_INPUT_SVIDEO,
5667             .vmux = 6,
5668         .amux = LINE1,
5669         } },
5670     },
5671     [SAA7134_BOARD_AVERMEDIA_505] = {
5672         /* much like the "studio" version but without radio
5673         * and another tuner (dbaryshkov@gmail.com) */
5674         .name           = "AverMedia AverTV/505",
5675         .audio_clock    = 0x00187de7,
5676         .tuner_type     = TUNER_PHILIPS_FQ1216ME,
5677         .radio_type     = UNSET,
5678         .tuner_addr = ADDR_UNSET,
5679         .radio_addr = ADDR_UNSET,
5680         .tda9887_conf   = TDA9887_PRESENT,
5681         .inputs         = {{
5682             .type = SAA7134_INPUT_TV,
5683             .vmux = 1,
5684             .amux = LINE2,
5685         }, {
5686             .type = SAA7134_INPUT_COMPOSITE1,
5687             .vmux = 0,
5688             .amux = LINE2,
5689         }, {
5690             .type = SAA7134_INPUT_COMPOSITE2,
5691             .vmux = 3,
5692             .amux = LINE2,
5693         }, {
5694             .type = SAA7134_INPUT_SVIDEO,
5695             .vmux = 8,
5696             .amux = LINE2,
5697         } },
5698         .mute = {
5699             .type = SAA7134_INPUT_MUTE,
5700             .amux = LINE1,
5701         },
5702     },
5703     [SAA7134_BOARD_LEADTEK_WINFAST_TV2100_FM] = {
5704         .name           = "Leadtek Winfast TV2100 FM",
5705         .audio_clock    = 0x00187de7,
5706         .tuner_type     = TUNER_TNF_5335MF,
5707         .radio_type     = UNSET,
5708         .tuner_addr = ADDR_UNSET,
5709         .radio_addr = ADDR_UNSET,
5710         .gpiomask       = 0x0d,
5711         .inputs         = {{
5712             .type = SAA7134_INPUT_TV_MONO,
5713             .vmux = 1,
5714             .amux = LINE1,
5715             .gpio = 0x00,
5716         }, {
5717             .type = SAA7134_INPUT_COMPOSITE1,
5718             .vmux = 3,
5719             .amux = LINE2,
5720             .gpio = 0x08,
5721         }, {
5722             .type = SAA7134_INPUT_SVIDEO,
5723             .vmux = 8,
5724             .amux = LINE2,
5725             .gpio = 0x08,
5726         } },
5727         .radio = {
5728             .type = SAA7134_INPUT_RADIO,
5729             .amux = LINE1,
5730             .gpio = 0x04,
5731         },
5732         .mute = {
5733             .type = SAA7134_INPUT_MUTE,
5734             .amux = LINE1,
5735             .gpio = 0x08,
5736         },
5737     },
5738     [SAA7134_BOARD_SNAZIO_TVPVR_PRO] = {
5739         .name           = "SnaZio* TVPVR PRO",
5740         .audio_clock    = 0x00187de7,
5741         .tuner_type     = TUNER_PHILIPS_TDA8290,
5742         .radio_type     = UNSET,
5743         .tuner_addr     = ADDR_UNSET,
5744         .radio_addr     = ADDR_UNSET,
5745         .gpiomask       = 1 << 21,
5746         .inputs         = { {
5747             .type = SAA7134_INPUT_TV,
5748             .vmux = 1,
5749             .amux = TV,
5750             .gpio = 0x0000000,
5751         }, {
5752             .type = SAA7134_INPUT_COMPOSITE1,
5753             .vmux = 3,
5754             .amux = LINE2,
5755             .gpio = 0x0000000,
5756         }, {
5757             .type = SAA7134_INPUT_SVIDEO,
5758             .vmux = 8,
5759             .amux = LINE2,
5760             .gpio = 0x0000000,
5761         } },
5762         .radio = {
5763             .type = SAA7134_INPUT_RADIO,
5764             .amux = TV,
5765             .gpio = 0x0200000,
5766         },
5767     },
5768     [SAA7134_BOARD_LEADTEK_WINFAST_HDTV200_H] = {
5769         .name           = "Leadtek Winfast HDTV200 H",
5770         .audio_clock    = 0x00187de7,
5771         .tuner_type     = TUNER_PHILIPS_TDA8290,
5772         .radio_type     = UNSET,
5773         .tuner_addr     = ADDR_UNSET,
5774         .radio_addr     = ADDR_UNSET,
5775         .mpeg           = SAA7134_MPEG_DVB,
5776         .ts_type        = SAA7134_MPEG_TS_PARALLEL,
5777         .gpiomask       = 0x00200700,
5778         .inputs         = { {
5779             .type = SAA7134_INPUT_TV,
5780             .vmux = 1,
5781             .amux = TV,
5782             .gpio = 0x00000300,
5783         }, {
5784             .type = SAA7134_INPUT_COMPOSITE,
5785             .vmux = 3,
5786             .amux = LINE1,
5787             .gpio = 0x00200300,
5788         }, {
5789             .type = SAA7134_INPUT_SVIDEO,
5790             .vmux = 8,
5791             .amux = LINE1,
5792             .gpio = 0x00200300,
5793         } },
5794     },
5795 };
5796 
5797 const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
5798 
5799 /* ------------------------------------------------------------------ */
5800 /* PCI ids + subsystem IDs                                            */
5801 
5802 struct pci_device_id saa7134_pci_tbl[] = {
5803     {
5804         .vendor       = PCI_VENDOR_ID_PHILIPS,
5805         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5806         .subvendor    = PCI_VENDOR_ID_PHILIPS,
5807         .subdevice    = 0x2001,
5808         .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
5809     },{
5810         .vendor       = PCI_VENDOR_ID_PHILIPS,
5811         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5812         .subvendor    = PCI_VENDOR_ID_PHILIPS,
5813         .subdevice    = 0x2001,
5814         .driver_data  = SAA7134_BOARD_PROTEUS_PRO,
5815     },{
5816         .vendor       = PCI_VENDOR_ID_PHILIPS,
5817         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5818         .subvendor    = PCI_VENDOR_ID_PHILIPS,
5819         .subdevice    = 0x6752,
5820         .driver_data  = SAA7134_BOARD_EMPRESS,
5821     },{
5822         .vendor       = PCI_VENDOR_ID_PHILIPS,
5823         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5824         .subvendor    = 0x1131,
5825         .subdevice    = 0x4e85,
5826         .driver_data  = SAA7134_BOARD_MONSTERTV,
5827     },{
5828         .vendor       = PCI_VENDOR_ID_PHILIPS,
5829         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5830         .subvendor    = 0x153b,
5831         .subdevice    = 0x1142,
5832         .driver_data  = SAA7134_BOARD_CINERGY400,
5833     },{
5834         .vendor       = PCI_VENDOR_ID_PHILIPS,
5835         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5836         .subvendor    = 0x153b,
5837         .subdevice    = 0x1143,
5838         .driver_data  = SAA7134_BOARD_CINERGY600,
5839     },{
5840         .vendor       = PCI_VENDOR_ID_PHILIPS,
5841         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5842         .subvendor    = 0x153b,
5843         .subdevice    = 0x1158,
5844         .driver_data  = SAA7134_BOARD_CINERGY600_MK3,
5845     },{
5846         .vendor       = PCI_VENDOR_ID_PHILIPS,
5847         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5848         .subvendor    = 0x153b,
5849         .subdevice    = 0x1162,
5850         .driver_data  = SAA7134_BOARD_CINERGY400_CARDBUS,
5851     },{
5852         .vendor       = PCI_VENDOR_ID_PHILIPS,
5853         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5854         .subvendor    = 0x5169,
5855         .subdevice    = 0x0138,
5856         .driver_data  = SAA7134_BOARD_FLYVIDEO3000_NTSC,
5857     },{
5858         .vendor       = PCI_VENDOR_ID_PHILIPS,
5859         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5860         .subvendor    = 0x5168,
5861         .subdevice    = 0x0138,
5862         .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
5863     },{
5864         .vendor       = PCI_VENDOR_ID_PHILIPS,
5865         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5866         .subvendor    = 0x4e42,             /* "Typhoon PCI Capture TV Card" Art.No. 50673 */
5867         .subdevice    = 0x0138,
5868         .driver_data  = SAA7134_BOARD_FLYVIDEO3000,
5869     },{
5870         .vendor       = PCI_VENDOR_ID_PHILIPS,
5871         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5872         .subvendor    = 0x5168,
5873         .subdevice    = 0x0138,
5874         .driver_data  = SAA7134_BOARD_FLYVIDEO2000,
5875     },{
5876         .vendor       = PCI_VENDOR_ID_PHILIPS,
5877         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5878         .subvendor    = 0x4e42,     /* Typhoon */
5879         .subdevice    = 0x0138,     /* LifeView FlyTV Prime30 OEM */
5880         .driver_data  = SAA7134_BOARD_FLYVIDEO2000,
5881     },{
5882         .vendor       = PCI_VENDOR_ID_PHILIPS,
5883         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5884         .subvendor    = 0x5168,
5885         .subdevice    = 0x0212, /* minipci, LR212 */
5886         .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
5887     },{
5888         .vendor       = PCI_VENDOR_ID_PHILIPS,
5889         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5890         .subvendor    = 0x14c0,
5891         .subdevice    = 0x1212, /* minipci, LR1212 */
5892         .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI2,
5893     },{
5894         .vendor       = PCI_VENDOR_ID_PHILIPS,
5895         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5896         .subvendor    = 0x4e42,
5897         .subdevice    = 0x0212, /* OEM minipci, LR212 */
5898         .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
5899     },{
5900         .vendor       = PCI_VENDOR_ID_PHILIPS,
5901         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5902         .subvendor    = 0x5168, /* Animation Technologies (LifeView) */
5903         .subdevice    = 0x0214, /* Standard PCI, LR214 Rev E and earlier (SAA7135) */
5904         .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM,
5905     },{
5906         .vendor       = PCI_VENDOR_ID_PHILIPS,
5907         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5908         .subvendor    = 0x5168, /* Animation Technologies (LifeView) */
5909         .subdevice    = 0x5214, /* Standard PCI, LR214 Rev F onwards (SAA7131) */
5910         .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM,
5911     },{
5912         .vendor       = PCI_VENDOR_ID_PHILIPS,
5913         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5914         .subvendor    = 0x1489, /* KYE */
5915         .subdevice    = 0x0214, /* Genius VideoWonder ProTV */
5916         .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_FM, /* is an LR214WF actually */
5917     },{
5918         .vendor       = PCI_VENDOR_ID_PHILIPS,
5919         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5920         .subvendor    = 0x16be,
5921         .subdevice    = 0x0003,
5922         .driver_data  = SAA7134_BOARD_MD7134,
5923     },{
5924         .vendor       = PCI_VENDOR_ID_PHILIPS,
5925         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5926         .subvendor    = 0x16be, /* CTX946 analog TV, HW mpeg, DVB-T */
5927         .subdevice    = 0x5000, /* only analog TV and DVB-T for now */
5928         .driver_data  = SAA7134_BOARD_MD7134,
5929     }, {
5930         .vendor       = PCI_VENDOR_ID_PHILIPS,
5931         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5932         .subvendor    = 0x1048,
5933         .subdevice    = 0x226b,
5934         .driver_data  = SAA7134_BOARD_ELSA,
5935     },{
5936         .vendor       = PCI_VENDOR_ID_PHILIPS,
5937         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5938         .subvendor    = 0x1048,
5939         .subdevice    = 0x226a,
5940         .driver_data  = SAA7134_BOARD_ELSA_500TV,
5941     },{
5942         .vendor       = PCI_VENDOR_ID_PHILIPS,
5943         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
5944         .subvendor    = 0x1048,
5945         .subdevice    = 0x226c,
5946         .driver_data  = SAA7134_BOARD_ELSA_700TV,
5947     },{
5948         .vendor       = PCI_VENDOR_ID_PHILIPS,
5949         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5950         .subvendor    = PCI_VENDOR_ID_ASUSTEK,
5951         .subdevice    = 0x4842,
5952         .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
5953     },{
5954         .vendor       = PCI_VENDOR_ID_PHILIPS,
5955         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5956         .subvendor    = PCI_VENDOR_ID_ASUSTEK,
5957         .subdevice    = 0x4845,
5958         .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7135,
5959     },{
5960         .vendor       = PCI_VENDOR_ID_PHILIPS,
5961         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5962         .subvendor    = PCI_VENDOR_ID_ASUSTEK,
5963         .subdevice    = 0x4830,
5964         .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
5965     },{
5966         .vendor       = PCI_VENDOR_ID_PHILIPS,
5967         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
5968         .subvendor    = PCI_VENDOR_ID_ASUSTEK,
5969         .subdevice    = 0x4843,
5970         .driver_data  = SAA7134_BOARD_ASUSTEK_TVFM7133,
5971     },{
5972         .vendor       = PCI_VENDOR_ID_PHILIPS,
5973         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5974         .subvendor    = PCI_VENDOR_ID_ASUSTEK,
5975         .subdevice    = 0x4840,
5976         .driver_data  = SAA7134_BOARD_ASUSTeK_TVFM7134,
5977     },{
5978         .vendor       = PCI_VENDOR_ID_PHILIPS,
5979         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5980         .subvendor    = PCI_VENDOR_ID_PHILIPS,
5981         .subdevice    = 0xfe01,
5982         .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
5983     },{
5984         .vendor       = PCI_VENDOR_ID_PHILIPS,
5985         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5986         .subvendor    = 0x1894,
5987         .subdevice    = 0xfe01,
5988         .driver_data  = SAA7134_BOARD_TVSTATION_RDS,
5989     },{
5990         .vendor       = PCI_VENDOR_ID_PHILIPS,
5991         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5992         .subvendor    = 0x1894,
5993         .subdevice    = 0xa006,
5994         .driver_data  = SAA7134_BOARD_TVSTATION_DVR,
5995     },{
5996         .vendor       = PCI_VENDOR_ID_PHILIPS,
5997         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
5998         .subvendor    = 0x1131,
5999         .subdevice    = 0x7133,
6000         .driver_data  = SAA7134_BOARD_VA1000POWER,
6001     },{
6002         .vendor       = PCI_VENDOR_ID_PHILIPS,
6003         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6004         .subvendor    = PCI_VENDOR_ID_PHILIPS,
6005         .subdevice    = 0x2001,
6006         .driver_data  = SAA7134_BOARD_10MOONSTVMASTER,
6007     },{
6008         .vendor       = PCI_VENDOR_ID_PHILIPS,
6009         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6010         .subvendor    = 0x185b,
6011         .subdevice    = 0xc100,
6012         .driver_data  = SAA7134_BOARD_VIDEOMATE_TV,
6013     },{
6014         .vendor       = PCI_VENDOR_ID_PHILIPS,
6015         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6016         .subvendor    = 0x185b,
6017         .subdevice    = 0xc100,
6018         .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS,
6019     },{
6020         .vendor       = PCI_VENDOR_ID_PHILIPS,
6021         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6022         .subvendor    = PCI_VENDOR_ID_MATROX,
6023         .subdevice    = 0x48d0,
6024         .driver_data  = SAA7134_BOARD_CRONOS_PLUS,
6025     },{
6026         .vendor       = PCI_VENDOR_ID_PHILIPS,
6027         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6028         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6029         .subdevice    = 0xa70b,
6030         .driver_data  = SAA7134_BOARD_MD2819,
6031     },{
6032         .vendor       = PCI_VENDOR_ID_PHILIPS,
6033         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6034         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6035         .subdevice    = 0xa7a1,
6036         .driver_data  = SAA7134_BOARD_AVERMEDIA_A700_PRO,
6037     }, {
6038         .vendor       = PCI_VENDOR_ID_PHILIPS,
6039         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6040         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6041         .subdevice    = 0xa7a2,
6042         .driver_data  = SAA7134_BOARD_AVERMEDIA_A700_HYBRID,
6043     }, {
6044         .vendor       = PCI_VENDOR_ID_PHILIPS,
6045         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6046         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6047         .subdevice    = 0x2115,
6048         .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_305,
6049     },{
6050         .vendor       = PCI_VENDOR_ID_PHILIPS,
6051         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6052         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6053         .subdevice    = 0xa115,
6054         .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_505,
6055     }, {
6056         .vendor       = PCI_VENDOR_ID_PHILIPS,
6057         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6058         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6059         .subdevice    = 0x2108,
6060         .driver_data  = SAA7134_BOARD_AVERMEDIA_305,
6061     },{
6062         .vendor       = PCI_VENDOR_ID_PHILIPS,
6063         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6064         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6065         .subdevice    = 0x10ff,
6066         .driver_data  = SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER,
6067     },{
6068         /* AVerMedia CardBus */
6069         .vendor       = PCI_VENDOR_ID_PHILIPS,
6070         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6071         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6072         .subdevice    = 0xd6ee,
6073         .driver_data  = SAA7134_BOARD_AVERMEDIA_CARDBUS,
6074     },{
6075         /* AVerMedia CardBus */
6076         .vendor       = PCI_VENDOR_ID_PHILIPS,
6077         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6078         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6079         .subdevice    = 0xb7e9,
6080         .driver_data  = SAA7134_BOARD_AVERMEDIA_CARDBUS_501,
6081     }, {
6082         /* TransGear 3000TV */
6083         .vendor       = PCI_VENDOR_ID_PHILIPS,
6084         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6085         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6086         .subdevice    = 0x050c,
6087         .driver_data  = SAA7134_BOARD_TG3000TV,
6088     },{
6089         .vendor       = PCI_VENDOR_ID_PHILIPS,
6090         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6091         .subvendor    = 0x11bd,
6092         .subdevice    = 0x002b,
6093         .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_STEREO,
6094     },{
6095         .vendor       = PCI_VENDOR_ID_PHILIPS,
6096         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6097         .subvendor    = 0x11bd,
6098         .subdevice    = 0x002d,
6099         .driver_data  = SAA7134_BOARD_PINNACLE_300I_DVBT_PAL,
6100     },{
6101         .vendor       = PCI_VENDOR_ID_PHILIPS,
6102         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6103         .subvendor    = 0x1019,
6104         .subdevice    = 0x4cb4,
6105         .driver_data  = SAA7134_BOARD_ECS_TVP3XP,
6106     },{
6107         .vendor       = PCI_VENDOR_ID_PHILIPS,
6108         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6109         .subvendor    = 0x1019,
6110         .subdevice    = 0x4cb5,
6111         .driver_data  = SAA7134_BOARD_ECS_TVP3XP_4CB5,
6112     },{
6113         .vendor       = PCI_VENDOR_ID_PHILIPS,
6114         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6115         .subvendor    = 0x1019,
6116         .subdevice    = 0x4cb6,
6117         .driver_data  = SAA7134_BOARD_ECS_TVP3XP_4CB6,
6118     },{
6119         .vendor       = PCI_VENDOR_ID_PHILIPS,
6120         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6121         .subvendor    = 0x12ab,
6122         .subdevice    = 0x0800,
6123         .driver_data  = SAA7134_BOARD_UPMOST_PURPLE_TV,
6124     },{
6125         .vendor       = PCI_VENDOR_ID_PHILIPS,
6126         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6127         .subvendor    = 0x153b,
6128         .subdevice    = 0x1152,
6129         .driver_data  = SAA7134_BOARD_CINERGY200,
6130     },{
6131         .vendor       = PCI_VENDOR_ID_PHILIPS,
6132         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6133         .subvendor    = 0x185b,
6134         .subdevice    = 0xc100,
6135         .driver_data  = SAA7134_BOARD_VIDEOMATE_TV_PVR,
6136     },{
6137         .vendor       = PCI_VENDOR_ID_PHILIPS,
6138         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6139         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6140         .subdevice    = 0x9715,
6141         .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_307,
6142     },{
6143         .vendor       = PCI_VENDOR_ID_PHILIPS,
6144         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6145         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6146         .subdevice    = 0xa70a,
6147         .driver_data  = SAA7134_BOARD_AVERMEDIA_307,
6148     },{
6149         .vendor       = PCI_VENDOR_ID_PHILIPS,
6150         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6151         .subvendor    = 0x185b,
6152         .subdevice    = 0xc200,
6153         .driver_data  = SAA7134_BOARD_VIDEOMATE_GOLD_PLUS,
6154     },{
6155         .vendor       = PCI_VENDOR_ID_PHILIPS,
6156         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6157         .subvendor    = 0x1540,
6158         .subdevice    = 0x9524,
6159         .driver_data  = SAA7134_BOARD_PROVIDEO_PV952,
6160 
6161     },{
6162         .vendor       = PCI_VENDOR_ID_PHILIPS,
6163         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6164         .subvendor    = 0x5168,
6165         .subdevice    = 0x0502,                /* Cardbus version */
6166         .driver_data  = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
6167     },{
6168         .vendor       = PCI_VENDOR_ID_PHILIPS,
6169         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6170         .subvendor    = 0x5168,
6171         .subdevice    = 0x0306,                /* PCI version */
6172         .driver_data  = SAA7134_BOARD_FLYDVBTDUO,
6173     },{
6174         .vendor       = PCI_VENDOR_ID_PHILIPS,
6175         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6176         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6177         .subdevice    = 0xf31f,
6178         .driver_data  = SAA7134_BOARD_AVERMEDIA_GO_007_FM,
6179 
6180     },{
6181         .vendor       = PCI_VENDOR_ID_PHILIPS,
6182         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6183         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6184         .subdevice    = 0xf11d,
6185         .driver_data  = SAA7134_BOARD_AVERMEDIA_M135A,
6186     }, {
6187         .vendor       = PCI_VENDOR_ID_PHILIPS,
6188         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6189         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6190         .subdevice    = 0x4155,
6191         .driver_data  = SAA7134_BOARD_AVERMEDIA_M733A,
6192     }, {
6193         .vendor       = PCI_VENDOR_ID_PHILIPS,
6194         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6195         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6196         .subdevice    = 0x4255,
6197         .driver_data  = SAA7134_BOARD_AVERMEDIA_M733A,
6198     }, {
6199         .vendor       = PCI_VENDOR_ID_PHILIPS,
6200         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6201         .subvendor    = PCI_VENDOR_ID_PHILIPS,
6202         .subdevice    = 0x2004,
6203         .driver_data  = SAA7134_BOARD_PHILIPS_TOUGH,
6204     },{
6205         .vendor       = PCI_VENDOR_ID_PHILIPS,
6206         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6207         .subvendor    = 0x1421,
6208         .subdevice    = 0x0350,     /* PCI version */
6209         .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
6210     },{
6211         .vendor       = PCI_VENDOR_ID_PHILIPS,
6212         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6213         .subvendor    = 0x1421,
6214         .subdevice    = 0x0351,     /* PCI version, new revision */
6215         .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
6216     },{
6217         .vendor       = PCI_VENDOR_ID_PHILIPS,
6218         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6219         .subvendor    = 0x1421,
6220         .subdevice    = 0x0370,     /* cardbus version */
6221         .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
6222     },{
6223         .vendor       = PCI_VENDOR_ID_PHILIPS,
6224         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6225         .subvendor    = 0x1421,
6226         .subdevice    = 0x1370,        /* cardbus version */
6227         .driver_data  = SAA7134_BOARD_ADS_INSTANT_TV,
6228 
6229     },{
6230         .vendor       = PCI_VENDOR_ID_PHILIPS,
6231         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6232         .subvendor    = 0x4e42,     /* Typhoon */
6233         .subdevice    = 0x0502,     /* LifeView LR502 OEM */
6234         .driver_data  = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
6235     },{
6236         .vendor       = PCI_VENDOR_ID_PHILIPS,
6237         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6238         .subvendor    = 0x1043,
6239         .subdevice    = 0x0210,     /* mini pci NTSC version */
6240         .driver_data  = SAA7134_BOARD_FLYTV_DIGIMATRIX,
6241     },{
6242         .vendor       = PCI_VENDOR_ID_PHILIPS,
6243         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6244         .subvendor    = 0x1043,
6245         .subdevice    = 0x0210,     /* mini pci PAL/SECAM version */
6246         .driver_data  = SAA7134_BOARD_ASUSTEK_DIGIMATRIX_TV,
6247 
6248     },{
6249         .vendor       = PCI_VENDOR_ID_PHILIPS,
6250         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6251         .subvendor    = 0x0000, /* It shouldn't break anything, since subdevice id seems unique */
6252         .subdevice    = 0x4091,
6253         .driver_data  = SAA7134_BOARD_BEHOLD_409FM,
6254     },{
6255         .vendor       = PCI_VENDOR_ID_PHILIPS,
6256         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6257         .subvendor    = 0x5456, /* GoTView */
6258         .subdevice    = 0x7135,
6259         .driver_data  = SAA7134_BOARD_GOTVIEW_7135,
6260     },{
6261         .vendor       = PCI_VENDOR_ID_PHILIPS,
6262         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6263         .subvendor    = PCI_VENDOR_ID_PHILIPS,
6264         .subdevice    = 0x2004,
6265         .driver_data  = SAA7134_BOARD_PHILIPS_EUROPA,
6266     },{
6267         .vendor       = PCI_VENDOR_ID_PHILIPS,
6268         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6269         .subvendor    = 0x185b,
6270         .subdevice    = 0xc900,
6271         .driver_data  = SAA7134_BOARD_VIDEOMATE_DVBT_300,
6272     },{
6273         .vendor       = PCI_VENDOR_ID_PHILIPS,
6274         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6275         .subvendor    = 0x185b,
6276         .subdevice    = 0xc901,
6277         .driver_data  = SAA7134_BOARD_VIDEOMATE_DVBT_200,
6278     },{
6279         .vendor       = PCI_VENDOR_ID_PHILIPS,
6280         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6281         .subvendor    = 0x1435,
6282         .subdevice    = 0x7350,
6283         .driver_data  = SAA7134_BOARD_RTD_VFG7350,
6284     },{
6285         .vendor       = PCI_VENDOR_ID_PHILIPS,
6286         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6287         .subvendor    = 0x1435,
6288         .subdevice    = 0x7330,
6289         .driver_data  = SAA7134_BOARD_RTD_VFG7330,
6290     },{
6291         .vendor       = PCI_VENDOR_ID_PHILIPS,
6292         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6293         .subvendor    = 0x1461,
6294         .subdevice    = 0x1044,
6295         .driver_data  = SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180,
6296     },{
6297         .vendor       = PCI_VENDOR_ID_PHILIPS,
6298         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6299         .subvendor    = 0x1131,
6300         .subdevice    = 0x4ee9,
6301         .driver_data  = SAA7134_BOARD_MONSTERTV_MOBILE,
6302     },{
6303         .vendor       = PCI_VENDOR_ID_PHILIPS,
6304         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6305         .subvendor    = 0x11bd,
6306         .subdevice    = 0x002e,
6307         .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_110i,
6308     },{
6309         .vendor       = PCI_VENDOR_ID_PHILIPS,
6310         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6311         .subvendor    = 0x1043,
6312         .subdevice    = 0x4862,
6313         .driver_data  = SAA7134_BOARD_ASUSTeK_P7131_DUAL,
6314     },{
6315         .vendor       = PCI_VENDOR_ID_PHILIPS,
6316         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6317         .subvendor    = PCI_VENDOR_ID_PHILIPS,
6318         .subdevice    = 0x2018,
6319         .driver_data  = SAA7134_BOARD_PHILIPS_TIGER,
6320     },{
6321         .vendor       = PCI_VENDOR_ID_PHILIPS,
6322         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6323         .subvendor    = 0x1462,
6324         .subdevice    = 0x6231, /* tda8275a, ks003 IR */
6325         .driver_data  = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS,
6326     },{
6327         .vendor       = PCI_VENDOR_ID_PHILIPS,
6328         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6329         .subvendor    = 0x1462,
6330         .subdevice    = 0x8624, /* tda8275, ks003 IR */
6331         .driver_data  = SAA7134_BOARD_MSI_TVATANYWHERE_PLUS,
6332     },{
6333         .vendor       = PCI_VENDOR_ID_PHILIPS,
6334         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6335         .subvendor    = 0x153b,
6336         .subdevice    = 0x1160,
6337         .driver_data  = SAA7134_BOARD_CINERGY250PCI,
6338     },{
6339         .vendor       = PCI_VENDOR_ID_PHILIPS,
6340         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,  /* SAA 7131E */
6341         .subvendor    = 0x5168,
6342         .subdevice    = 0x0319,
6343         .driver_data  = SAA7134_BOARD_FLYDVB_TRIO,
6344     },{
6345         .vendor       = PCI_VENDOR_ID_PHILIPS,
6346         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6347         .subvendor    = 0x1461,
6348         .subdevice    = 0x2c05,
6349         .driver_data  = SAA7134_BOARD_AVERMEDIA_777,
6350     },{
6351         .vendor       = PCI_VENDOR_ID_PHILIPS,
6352         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6353         .subvendor    = 0x5168,
6354         .subdevice    = 0x0301,
6355         .driver_data  = SAA7134_BOARD_FLYDVBT_LR301,
6356     },{
6357         .vendor       = PCI_VENDOR_ID_PHILIPS,
6358         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6359         .subvendor    = 0x0331,
6360         .subdevice    = 0x1421,
6361         .driver_data  = SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331,
6362     },{
6363         .vendor       = PCI_VENDOR_ID_PHILIPS,
6364         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6365         .subvendor    = 0x17de,
6366         .subdevice    = 0x7201,
6367         .driver_data  = SAA7134_BOARD_TEVION_DVBT_220RF,
6368     },{
6369         .vendor       = PCI_VENDOR_ID_PHILIPS,
6370         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6371         .subvendor    = 0x17de,
6372         .subdevice    = 0x7250,
6373         .driver_data  = SAA7134_BOARD_KWORLD_DVBT_210,
6374     },{
6375         .vendor       = PCI_VENDOR_ID_PHILIPS,
6376         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
6377         .subvendor    = 0x17de,
6378         .subdevice    = 0x7350,
6379         .driver_data  = SAA7134_BOARD_KWORLD_ATSC110,
6380     },{
6381         .vendor       = PCI_VENDOR_ID_PHILIPS,
6382         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
6383         .subvendor    = 0x17de,
6384         .subdevice    = 0x7352,
6385         .driver_data  = SAA7134_BOARD_KWORLD_ATSC110, /* ATSC 115 */
6386     },{
6387         .vendor       = PCI_VENDOR_ID_PHILIPS,
6388         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
6389         .subvendor    = 0x17de,
6390         .subdevice    = 0xa134,
6391         .driver_data  = SAA7134_BOARD_KWORLD_PC150U,
6392     }, {
6393         .vendor       = PCI_VENDOR_ID_PHILIPS,
6394         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6395         .subvendor    = 0x1461,
6396         .subdevice    = 0x7360,
6397         .driver_data  = SAA7134_BOARD_AVERMEDIA_A169_B,
6398     },{
6399         .vendor       = PCI_VENDOR_ID_PHILIPS,
6400         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6401         .subvendor    = 0x1461,
6402         .subdevice    = 0x6360,
6403         .driver_data  = SAA7134_BOARD_AVERMEDIA_A169_B1,
6404     },{
6405         .vendor       = PCI_VENDOR_ID_PHILIPS,
6406         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6407         .subvendor    = 0x16be,
6408         .subdevice    = 0x0005,
6409         .driver_data  = SAA7134_BOARD_MD7134_BRIDGE_2,
6410     },{
6411         .vendor       = PCI_VENDOR_ID_PHILIPS,
6412         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6413         .subvendor    = 0x5168,
6414         .subdevice    = 0x0300,
6415         .driver_data  = SAA7134_BOARD_FLYDVBS_LR300,
6416     },{
6417         .vendor       = PCI_VENDOR_ID_PHILIPS,
6418         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6419         .subvendor    = 0x4e42,
6420         .subdevice    = 0x0300,/* LR300 */
6421         .driver_data  = SAA7134_BOARD_FLYDVBS_LR300,
6422     },{
6423         .vendor = PCI_VENDOR_ID_PHILIPS,
6424         .device = PCI_DEVICE_ID_PHILIPS_SAA7134,
6425         .subvendor = 0x1489,
6426         .subdevice = 0x0301,
6427         .driver_data = SAA7134_BOARD_FLYDVBT_LR301,
6428     },{
6429         .vendor = PCI_VENDOR_ID_PHILIPS,
6430         .device = PCI_DEVICE_ID_PHILIPS_SAA7133,
6431         .subvendor = 0x5168, /* Animation Technologies (LifeView) */
6432         .subdevice = 0x0304,
6433         .driver_data = SAA7134_BOARD_FLYTVPLATINUM_FM,
6434     },{
6435         .vendor       = PCI_VENDOR_ID_PHILIPS,
6436         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6437         .subvendor    = 0x5168,
6438         .subdevice    = 0x3306,
6439         .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
6440     },{
6441         .vendor       = PCI_VENDOR_ID_PHILIPS,
6442         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6443         .subvendor    = 0x5168,
6444         .subdevice    = 0x3502,  /* what's the difference to 0x3306 ?*/
6445         .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
6446     },{
6447         .vendor       = PCI_VENDOR_ID_PHILIPS,
6448         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6449         .subvendor    = 0x5168,
6450         .subdevice    = 0x3307, /* FlyDVB-T Hybrid Mini PCI */
6451         .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
6452     }, {
6453         .vendor       = PCI_VENDOR_ID_PHILIPS,
6454         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6455         .subvendor    = 0x16be,
6456         .subdevice    = 0x0007,
6457         .driver_data  = SAA7134_BOARD_MEDION_MD8800_QUADRO,
6458     },{
6459         .vendor       = PCI_VENDOR_ID_PHILIPS,
6460         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6461         .subvendor    = 0x16be,
6462         .subdevice    = 0x0008,
6463         .driver_data  = SAA7134_BOARD_MEDION_MD8800_QUADRO,
6464     },{
6465         .vendor       = PCI_VENDOR_ID_PHILIPS,
6466         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6467         .subvendor    = 0x16be,
6468         .subdevice    = 0x000d, /* triple CTX948_V1.1.1 */
6469         .driver_data  = SAA7134_BOARD_MEDION_MD8800_QUADRO,
6470     }, {
6471         .vendor       = PCI_VENDOR_ID_PHILIPS,
6472         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6473         .subvendor    = 0x1461,
6474         .subdevice    = 0x2c05,
6475         .driver_data  = SAA7134_BOARD_AVERMEDIA_777,
6476     },{
6477         .vendor       = PCI_VENDOR_ID_PHILIPS,
6478         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6479         .subvendor    = 0x1489,
6480         .subdevice    = 0x0502,                /* Cardbus version */
6481         .driver_data  = SAA7134_BOARD_FLYDVBT_DUO_CARDBUS,
6482     },{
6483         .vendor       = PCI_VENDOR_ID_PHILIPS,
6484         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6485         .subvendor    = 0x0919, /* Philips Proteus PRO 2309 */
6486         .subdevice    = 0x2003,
6487         .driver_data  = SAA7134_BOARD_PROTEUS_2309,
6488     },{
6489         .vendor       = PCI_VENDOR_ID_PHILIPS,
6490         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6491         .subvendor    = 0x1461,
6492         .subdevice    = 0x2c00,
6493         .driver_data  = SAA7134_BOARD_AVERMEDIA_A16AR,
6494     },{
6495         .vendor       = PCI_VENDOR_ID_PHILIPS,
6496         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6497         .subvendor    = 0x1043,
6498         .subdevice    = 0x4860,
6499         .driver_data  = SAA7134_BOARD_ASUS_EUROPA2_HYBRID,
6500     },{
6501         .vendor       = PCI_VENDOR_ID_PHILIPS,
6502         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6503         .subvendor    = 0x11bd,
6504         .subdevice    = 0x002f,
6505         .driver_data  = SAA7134_BOARD_PINNACLE_PCTV_310i,
6506     },{
6507         .vendor       = PCI_VENDOR_ID_PHILIPS,
6508         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6509         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6510         .subdevice    = 0x9715,
6511         .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_507,
6512     },{
6513         .vendor       = PCI_VENDOR_ID_PHILIPS,
6514         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6515         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6516         .subdevice    = 0xa11b,
6517         .driver_data  = SAA7134_BOARD_AVERMEDIA_STUDIO_507UA,
6518     }, {
6519         .vendor       = PCI_VENDOR_ID_PHILIPS,
6520         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6521         .subvendor    = 0x1043,
6522         .subdevice    = 0x4876,
6523         .driver_data  = SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA,
6524     },{
6525         .vendor       = PCI_VENDOR_ID_PHILIPS,
6526         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6527         .subvendor    = 0x0070,
6528         .subdevice    = 0x6700,
6529         .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6530     },{
6531         .vendor       = PCI_VENDOR_ID_PHILIPS,
6532         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6533         .subvendor    = 0x0070,
6534         .subdevice    = 0x6701,
6535         .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6536     },{
6537         .vendor       = PCI_VENDOR_ID_PHILIPS,
6538         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6539         .subvendor    = 0x0070,
6540         .subdevice    = 0x6702,
6541         .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6542     },{
6543         .vendor       = PCI_VENDOR_ID_PHILIPS,
6544         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6545         .subvendor    = 0x0070,
6546         .subdevice    = 0x6703,
6547         .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6548     },{
6549         .vendor       = PCI_VENDOR_ID_PHILIPS,
6550         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6551         .subvendor    = 0x0070,
6552         .subdevice    = 0x6704,
6553         .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6554     },{
6555         .vendor       = PCI_VENDOR_ID_PHILIPS,
6556         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6557         .subvendor    = 0x0070,
6558         .subdevice    = 0x6705,
6559         .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1110,
6560     },{
6561         .vendor       = PCI_VENDOR_ID_PHILIPS,
6562         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6563         .subvendor    = 0x0070,
6564         .subdevice    = 0x6706,
6565         .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1150,
6566     },{
6567         .vendor       = PCI_VENDOR_ID_PHILIPS,
6568         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6569         .subvendor    = 0x0070,
6570         .subdevice    = 0x6707,
6571         .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1120,
6572     },{
6573         .vendor       = PCI_VENDOR_ID_PHILIPS,
6574         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6575         .subvendor    = 0x0070,
6576         .subdevice    = 0x6708,
6577         .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1150,
6578     },{
6579         .vendor       = PCI_VENDOR_ID_PHILIPS,
6580         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6581         .subvendor    = 0x0070,
6582         .subdevice    = 0x6709,
6583         .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1120,
6584     },{
6585         .vendor       = PCI_VENDOR_ID_PHILIPS,
6586         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6587         .subvendor    = 0x0070,
6588         .subdevice    = 0x670a,
6589         .driver_data  = SAA7134_BOARD_HAUPPAUGE_HVR1120,
6590     },{
6591         .vendor       = PCI_VENDOR_ID_PHILIPS,
6592         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6593         .subvendor    = 0x153b,
6594         .subdevice    = 0x1172,
6595         .driver_data  = SAA7134_BOARD_CINERGY_HT_PCMCIA,
6596     },{
6597         .vendor       = PCI_VENDOR_ID_PHILIPS,
6598         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6599         .subvendor    = PCI_VENDOR_ID_PHILIPS,
6600         .subdevice    = 0x2342,
6601         .driver_data  = SAA7134_BOARD_ENCORE_ENLTV,
6602     },{
6603         .vendor       = PCI_VENDOR_ID_PHILIPS,
6604         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6605         .subvendor    = 0x1131,
6606         .subdevice    = 0x2341,
6607         .driver_data  = SAA7134_BOARD_ENCORE_ENLTV,
6608     },{
6609         .vendor       = PCI_VENDOR_ID_PHILIPS,
6610         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6611         .subvendor    = 0x3016,
6612         .subdevice    = 0x2344,
6613         .driver_data  = SAA7134_BOARD_ENCORE_ENLTV,
6614     },{
6615         .vendor       = PCI_VENDOR_ID_PHILIPS,
6616         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6617         .subvendor    = 0x1131,
6618         .subdevice    = 0x230f,
6619         .driver_data  = SAA7134_BOARD_ENCORE_ENLTV_FM,
6620     },{
6621         .vendor       = PCI_VENDOR_ID_PHILIPS,
6622         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6623         .subvendor    = 0x1a7f,
6624         .subdevice    = 0x2008,
6625         .driver_data  = SAA7134_BOARD_ENCORE_ENLTV_FM53,
6626     }, {
6627         .vendor       = PCI_VENDOR_ID_PHILIPS,
6628         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6629         .subvendor    = 0x1a7f,
6630         .subdevice    = 0x2108,
6631         .driver_data  = SAA7134_BOARD_ENCORE_ENLTV_FM3,
6632     }, {
6633         .vendor       = PCI_VENDOR_ID_PHILIPS,
6634         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6635         .subvendor    = 0x153b,
6636         .subdevice    = 0x1175,
6637         .driver_data  = SAA7134_BOARD_CINERGY_HT_PCI,
6638     },{
6639         .vendor       = PCI_VENDOR_ID_PHILIPS,
6640         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6641         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6642         .subdevice    = 0xf31e,
6643         .driver_data  = SAA7134_BOARD_AVERMEDIA_M102,
6644     },{
6645         .vendor       = PCI_VENDOR_ID_PHILIPS,
6646         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6647         .subvendor    = 0x4E42,         /* MSI */
6648         .subdevice    = 0x0306,         /* TV@nywhere DUO */
6649         .driver_data  = SAA7134_BOARD_FLYDVBTDUO,
6650     },{
6651         .vendor       = PCI_VENDOR_ID_PHILIPS,
6652         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6653         .subvendor    = 0x1043,
6654         .subdevice    = 0x4871,
6655         .driver_data  = SAA7134_BOARD_ASUS_P7131_4871,
6656     },{
6657         .vendor       = PCI_VENDOR_ID_PHILIPS,
6658         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6659         .subvendor    = 0x1043,
6660         .subdevice    = 0x4857,     /* REV:1.00 */
6661         .driver_data  = SAA7134_BOARD_ASUSTeK_TIGER,
6662     },{
6663         .vendor       = PCI_VENDOR_ID_PHILIPS,
6664         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6665         .subvendor    = 0x0919, /* SinoVideo PCI 2309 Proteus (7134) */
6666         .subdevice    = 0x2003, /* OEM cardbus */
6667         .driver_data  = SAA7134_BOARD_SABRENT_TV_PCB05,
6668     },{
6669         .vendor       = PCI_VENDOR_ID_PHILIPS,
6670         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6671         .subvendor    = PCI_VENDOR_ID_PHILIPS,
6672         .subdevice    = 0x2304,
6673         .driver_data  = SAA7134_BOARD_10MOONSTVMASTER3,
6674     },{
6675         .vendor       = PCI_VENDOR_ID_PHILIPS,
6676         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6677         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6678         .subdevice    = 0xf01d, /* AVerTV DVB-T Super 007 */
6679         .driver_data  = SAA7134_BOARD_AVERMEDIA_SUPER_007,
6680     },{
6681         .vendor       = PCI_VENDOR_ID_PHILIPS,
6682         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6683         .subvendor    = 0x0000,
6684         .subdevice    = 0x4016,
6685         .driver_data  = SAA7134_BOARD_BEHOLD_401,
6686     },{
6687         .vendor       = PCI_VENDOR_ID_PHILIPS,
6688         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6689         .subvendor    = 0x0000,
6690         .subdevice    = 0x4036,
6691         .driver_data  = SAA7134_BOARD_BEHOLD_403,
6692     },{
6693         .vendor       = PCI_VENDOR_ID_PHILIPS,
6694         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6695         .subvendor    = 0x0000,
6696         .subdevice    = 0x4037,
6697         .driver_data  = SAA7134_BOARD_BEHOLD_403FM,
6698     },{
6699         .vendor       = PCI_VENDOR_ID_PHILIPS,
6700         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6701         .subvendor    = 0x0000,
6702         .subdevice    = 0x4050,
6703         .driver_data  = SAA7134_BOARD_BEHOLD_405,
6704     },{
6705         .vendor       = PCI_VENDOR_ID_PHILIPS,
6706         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6707         .subvendor    = 0x0000,
6708         .subdevice    = 0x4051,
6709         .driver_data  = SAA7134_BOARD_BEHOLD_405FM,
6710     },{
6711         .vendor       = PCI_VENDOR_ID_PHILIPS,
6712         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6713         .subvendor    = 0x0000,
6714         .subdevice    = 0x4070,
6715         .driver_data  = SAA7134_BOARD_BEHOLD_407,
6716     },{
6717         .vendor       = PCI_VENDOR_ID_PHILIPS,
6718         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6719         .subvendor    = 0x0000,
6720         .subdevice    = 0x4071,
6721         .driver_data  = SAA7134_BOARD_BEHOLD_407FM,
6722     },{
6723         .vendor       = PCI_VENDOR_ID_PHILIPS,
6724         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6725         .subvendor    = 0x0000,
6726         .subdevice    = 0x4090,
6727         .driver_data  = SAA7134_BOARD_BEHOLD_409,
6728     },{
6729         .vendor       = PCI_VENDOR_ID_PHILIPS,
6730         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6731         .subvendor    = 0x0000,
6732         .subdevice    = 0x505B,
6733         .driver_data  = SAA7134_BOARD_BEHOLD_505RDS_MK5,
6734     }, {
6735         .vendor       = PCI_VENDOR_ID_PHILIPS,
6736         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6737         .subvendor    = 0x0000,
6738         .subdevice    = 0x5051,
6739         .driver_data  = SAA7134_BOARD_BEHOLD_505RDS_MK3,
6740     },{
6741         .vendor       = PCI_VENDOR_ID_PHILIPS,
6742         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6743         .subvendor    = 0x5ace,
6744         .subdevice    = 0x5050,
6745         .driver_data  = SAA7134_BOARD_BEHOLD_505FM,
6746     },{
6747         .vendor       = PCI_VENDOR_ID_PHILIPS,
6748         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6749         .subvendor    = 0x0000,
6750         .subdevice    = 0x5071,
6751         .driver_data  = SAA7134_BOARD_BEHOLD_507RDS_MK3,
6752     },{
6753         .vendor       = PCI_VENDOR_ID_PHILIPS,
6754         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6755         .subvendor    = 0x0000,
6756         .subdevice    = 0x507B,
6757         .driver_data  = SAA7134_BOARD_BEHOLD_507RDS_MK5,
6758     },{
6759         .vendor       = PCI_VENDOR_ID_PHILIPS,
6760         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6761         .subvendor    = 0x5ace,
6762         .subdevice    = 0x5070,
6763         .driver_data  = SAA7134_BOARD_BEHOLD_507_9FM,
6764     },{
6765         .vendor       = PCI_VENDOR_ID_PHILIPS,
6766         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6767         .subvendor    = 0x5ace,
6768         .subdevice    = 0x5090,
6769         .driver_data  = SAA7134_BOARD_BEHOLD_507_9FM,
6770     },{
6771         .vendor       = PCI_VENDOR_ID_PHILIPS,
6772         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6773         .subvendor    = 0x0000,
6774         .subdevice    = 0x5201,
6775         .driver_data  = SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM,
6776     },{
6777         .vendor       = PCI_VENDOR_ID_PHILIPS,
6778         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6779         .subvendor    = 0x5ace,
6780         .subdevice    = 0x6070,
6781         .driver_data  = SAA7134_BOARD_BEHOLD_607FM_MK3,
6782     },{
6783         .vendor       = PCI_VENDOR_ID_PHILIPS,
6784         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6785         .subvendor    = 0x5ace,
6786         .subdevice    = 0x6071,
6787         .driver_data  = SAA7134_BOARD_BEHOLD_607FM_MK5,
6788     },{
6789         .vendor       = PCI_VENDOR_ID_PHILIPS,
6790         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6791         .subvendor    = 0x5ace,
6792         .subdevice    = 0x6072,
6793         .driver_data  = SAA7134_BOARD_BEHOLD_607RDS_MK3,
6794     },{
6795         .vendor       = PCI_VENDOR_ID_PHILIPS,
6796         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6797         .subvendor    = 0x5ace,
6798         .subdevice    = 0x6073,
6799         .driver_data  = SAA7134_BOARD_BEHOLD_607RDS_MK5,
6800     },{
6801         .vendor       = PCI_VENDOR_ID_PHILIPS,
6802         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6803         .subvendor    = 0x5ace,
6804         .subdevice    = 0x6090,
6805         .driver_data  = SAA7134_BOARD_BEHOLD_609FM_MK3,
6806     },{
6807         .vendor       = PCI_VENDOR_ID_PHILIPS,
6808         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6809         .subvendor    = 0x5ace,
6810         .subdevice    = 0x6091,
6811         .driver_data  = SAA7134_BOARD_BEHOLD_609FM_MK5,
6812     },{
6813         .vendor       = PCI_VENDOR_ID_PHILIPS,
6814         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6815         .subvendor    = 0x5ace,
6816         .subdevice    = 0x6092,
6817         .driver_data  = SAA7134_BOARD_BEHOLD_609RDS_MK3,
6818     },{
6819         .vendor       = PCI_VENDOR_ID_PHILIPS,
6820         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6821         .subvendor    = 0x5ace,
6822         .subdevice    = 0x6093,
6823         .driver_data  = SAA7134_BOARD_BEHOLD_609RDS_MK5,
6824     },{
6825         .vendor       = PCI_VENDOR_ID_PHILIPS,
6826         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6827         .subvendor    = 0x5ace,
6828         .subdevice    = 0x6190,
6829         .driver_data  = SAA7134_BOARD_BEHOLD_M6,
6830     },{
6831         .vendor       = PCI_VENDOR_ID_PHILIPS,
6832         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6833         .subvendor    = 0x5ace,
6834         .subdevice    = 0x6193,
6835         .driver_data  = SAA7134_BOARD_BEHOLD_M6_EXTRA,
6836     }, {
6837         .vendor       = PCI_VENDOR_ID_PHILIPS,
6838         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6839         .subvendor    = 0x5ace,
6840         .subdevice    = 0x6191,
6841         .driver_data  = SAA7134_BOARD_BEHOLD_M63,
6842     },{
6843         .vendor       = PCI_VENDOR_ID_PHILIPS,
6844         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6845         .subvendor    = 0x4e42,
6846         .subdevice    = 0x3502,
6847         .driver_data  = SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS,
6848     }, {
6849         .vendor       = PCI_VENDOR_ID_PHILIPS,
6850         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6851         .subvendor    = 0x1822, /*Twinhan Technology Co. Ltd*/
6852         .subdevice    = 0x0022,
6853         .driver_data  = SAA7134_BOARD_TWINHAN_DTV_DVB_3056,
6854     }, {
6855         .vendor       = PCI_VENDOR_ID_PHILIPS,
6856         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6857         .subvendor    = 0x16be,
6858         .subdevice    = 0x0010, /* Medion version CTX953_V.1.4.3 */
6859         .driver_data  = SAA7134_BOARD_CREATIX_CTX953,
6860     }, {
6861         .vendor       = PCI_VENDOR_ID_PHILIPS,
6862         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6863         .subvendor    = 0x1462, /* MSI */
6864         .subdevice    = 0x8625, /* TV@nywhere A/D v1.1 */
6865         .driver_data  = SAA7134_BOARD_MSI_TVANYWHERE_AD11,
6866     },{
6867         .vendor       = PCI_VENDOR_ID_PHILIPS,
6868         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6869         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6870         .subdevice    = 0xf436,
6871         .driver_data  = SAA7134_BOARD_AVERMEDIA_CARDBUS_506,
6872     }, {
6873         .vendor       = PCI_VENDOR_ID_PHILIPS,
6874         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6875         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6876         .subdevice    = 0xf936,
6877         .driver_data  = SAA7134_BOARD_AVERMEDIA_A16D,
6878     }, {
6879         .vendor       = PCI_VENDOR_ID_PHILIPS,
6880         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6881         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6882         .subdevice    = 0xa836,
6883         .driver_data  = SAA7134_BOARD_AVERMEDIA_M115,
6884     }, {
6885         .vendor       = PCI_VENDOR_ID_PHILIPS,
6886         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6887         .subvendor    = 0x185b,
6888         .subdevice    = 0xc900,
6889         .driver_data  = SAA7134_BOARD_VIDEOMATE_T750,
6890     }, {
6891         .vendor       = PCI_VENDOR_ID_PHILIPS,
6892         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133, /* SAA7135HL */
6893         .subvendor    = 0x1421,
6894         .subdevice    = 0x0380,
6895         .driver_data  = SAA7134_BOARD_ADS_INSTANT_HDTV_PCI,
6896     }, {
6897         .vendor       = PCI_VENDOR_ID_PHILIPS,
6898         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6899         .subvendor    = 0x5169,
6900         .subdevice    = 0x1502,
6901         .driver_data  = SAA7134_BOARD_FLYTVPLATINUM_MINI,
6902     }, {
6903         .vendor       = PCI_VENDOR_ID_PHILIPS,
6904         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6905         .subvendor    = 0x5ace,
6906         .subdevice    = 0x6290,
6907         .driver_data  = SAA7134_BOARD_BEHOLD_H6,
6908     }, {
6909         .vendor       = PCI_VENDOR_ID_PHILIPS,
6910         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6911         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6912         .subdevice    = 0xf636,
6913         .driver_data  = SAA7134_BOARD_AVERMEDIA_M103,
6914     }, {
6915         .vendor       = PCI_VENDOR_ID_PHILIPS,
6916         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6917         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6918         .subdevice    = 0xf736,
6919         .driver_data  = SAA7134_BOARD_AVERMEDIA_M103,
6920     }, {
6921         .vendor       = PCI_VENDOR_ID_PHILIPS,
6922         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6923         .subvendor    = 0x1043,
6924         .subdevice    = 0x4878, /* REV:1.02G */
6925         .driver_data  = SAA7134_BOARD_ASUSTeK_TIGER_3IN1,
6926     }, {
6927         .vendor       = PCI_VENDOR_ID_PHILIPS,
6928         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6929         .subvendor    = 0x1043,
6930         .subdevice    = 0x48cd,
6931         .driver_data  = SAA7134_BOARD_ASUSTeK_PS3_100,
6932     }, {
6933         .vendor       = PCI_VENDOR_ID_PHILIPS,
6934         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6935         .subvendor    = 0x17de,
6936         .subdevice    = 0x7128,
6937         .driver_data  = SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG,
6938     }, {
6939         .vendor       = PCI_VENDOR_ID_PHILIPS,
6940         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6941         .subvendor    = 0x17de,
6942         .subdevice    = 0xb136,
6943         .driver_data  = SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG,
6944     }, {
6945         .vendor       = PCI_VENDOR_ID_PHILIPS,
6946         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6947         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
6948         .subdevice    = 0xf31d,
6949         .driver_data  = SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS,
6950     }, {
6951         .vendor       = PCI_VENDOR_ID_PHILIPS,
6952         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6953         .subvendor    = 0x185b,
6954         .subdevice    = 0xc900,
6955         .driver_data  = SAA7134_BOARD_VIDEOMATE_S350,
6956     }, {
6957         .vendor       = PCI_VENDOR_ID_PHILIPS,
6958         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6959         .subvendor    = 0x5ace, /* Beholder Intl. Ltd. */
6960         .subdevice    = 0x7595,
6961         .driver_data  = SAA7134_BOARD_BEHOLD_X7,
6962     }, {
6963         .vendor       = PCI_VENDOR_ID_PHILIPS,
6964         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6965         .subvendor    = 0x19d1, /* RoverMedia */
6966         .subdevice    = 0x0138, /* LifeView FlyTV Prime30 OEM */
6967         .driver_data  = SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM,
6968     }, {
6969         .vendor       = PCI_VENDOR_ID_PHILIPS,
6970         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6971         .subvendor    = PCI_VENDOR_ID_PHILIPS,
6972         .subdevice    = 0x2004,
6973         .driver_data  = SAA7134_BOARD_ZOLID_HYBRID_PCI,
6974     }, {
6975         .vendor       = PCI_VENDOR_ID_PHILIPS,
6976         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
6977         .subvendor    = 0x1043,
6978         .subdevice    = 0x4847,
6979         .driver_data  = SAA7134_BOARD_ASUS_EUROPA_HYBRID,
6980     }, {
6981         .vendor       = PCI_VENDOR_ID_PHILIPS,
6982         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
6983         .subvendor    = 0x107d,
6984         .subdevice    = 0x6655,
6985         .driver_data  = SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S,
6986     }, {
6987         .vendor       = PCI_VENDOR_ID_PHILIPS,
6988         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6989         .subvendor    = 0x13c2,
6990         .subdevice    = 0x2804,
6991         .driver_data  = SAA7134_BOARD_TECHNOTREND_BUDGET_T3000,
6992     }, {
6993         .vendor       = PCI_VENDOR_ID_PHILIPS,
6994         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
6995         .subvendor    = 0x5ace, /* Beholder Intl. Ltd. */
6996         .subdevice    = 0x7190,
6997         .driver_data  = SAA7134_BOARD_BEHOLD_H7,
6998     }, {
6999         .vendor       = PCI_VENDOR_ID_PHILIPS,
7000         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
7001         .subvendor    = 0x5ace, /* Beholder Intl. Ltd. */
7002         .subdevice    = 0x7090,
7003         .driver_data  = SAA7134_BOARD_BEHOLD_A7,
7004     }, {
7005         .vendor       = PCI_VENDOR_ID_PHILIPS,
7006         .device       = PCI_DEVICE_ID_PHILIPS_SAA7135,
7007         .subvendor    = 0x185b,
7008         .subdevice    = 0xc900,
7009         .driver_data  = SAA7134_BOARD_VIDEOMATE_M1F,
7010     }, {
7011         .vendor       = PCI_VENDOR_ID_PHILIPS,
7012         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
7013         .subvendor    = 0x5ace,
7014         .subdevice    = 0x5030,
7015         .driver_data  = SAA7134_BOARD_BEHOLD_503FM,
7016     }, {
7017         .vendor       = PCI_VENDOR_ID_PHILIPS,
7018         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
7019         .subvendor    = 0x5ace,
7020         .subdevice    = 0x5010,
7021         .driver_data  = SAA7134_BOARD_BEHOLD_501,
7022     }, {
7023         .vendor       = PCI_VENDOR_ID_PHILIPS,
7024         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
7025         .subvendor    = 0x17de,
7026         .subdevice    = 0xd136,
7027         .driver_data  = SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2,
7028     }, {
7029         .vendor       = PCI_VENDOR_ID_PHILIPS,
7030         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
7031         .subvendor    = 0x6000,
7032         .subdevice    = 0x0811,
7033         .driver_data  = SAA7134_BOARD_SENSORAY811_911,
7034     }, {
7035         .vendor       = PCI_VENDOR_ID_PHILIPS,
7036         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
7037         .subvendor    = 0x6000,
7038         .subdevice    = 0x0911,
7039         .driver_data  = SAA7134_BOARD_SENSORAY811_911,
7040     }, {
7041         .vendor       = PCI_VENDOR_ID_PHILIPS,
7042         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
7043         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
7044         .subdevice    = 0x2055, /* AverTV Satellite Hybrid+FM A706 */
7045         .driver_data  = SAA7134_BOARD_AVERMEDIA_A706,
7046     }, {
7047         .vendor       = PCI_VENDOR_ID_PHILIPS,
7048         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
7049         .subvendor    = 0x1905, /* WIS */
7050         .subdevice    = 0x7007,
7051         .driver_data  = SAA7134_BOARD_WIS_VOYAGER,
7052     }, {
7053         .vendor       = PCI_VENDOR_ID_PHILIPS,
7054         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
7055         .subvendor    = 0x1461, /* Avermedia Technologies Inc */
7056         .subdevice    = 0xa10a,
7057         .driver_data  = SAA7134_BOARD_AVERMEDIA_505,
7058     }, {
7059         .vendor       = PCI_VENDOR_ID_PHILIPS,
7060         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
7061         .subvendor    = 0x107d,
7062         .subdevice    = 0x6f3a,
7063         .driver_data  = SAA7134_BOARD_LEADTEK_WINFAST_TV2100_FM,
7064     }, {
7065         .vendor       = PCI_VENDOR_ID_PHILIPS,
7066         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
7067         .subvendor    = 0x1779, /* V One Multimedia PTE Ltd */
7068         .subdevice    = 0x13cf,
7069         .driver_data  = SAA7134_BOARD_SNAZIO_TVPVR_PRO,
7070     }, {
7071         .vendor       = PCI_VENDOR_ID_PHILIPS,
7072         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
7073         .subvendor    = 0x107d,
7074         .subdevice    = 0x6f2e,
7075         .driver_data  = SAA7134_BOARD_LEADTEK_WINFAST_HDTV200_H,
7076     }, {
7077         /* --- boards without eeprom + subsystem ID --- */
7078         .vendor       = PCI_VENDOR_ID_PHILIPS,
7079         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
7080         .subvendor    = PCI_VENDOR_ID_PHILIPS,
7081         .subdevice    = 0,
7082         .driver_data  = SAA7134_BOARD_NOAUTO,
7083     },{
7084         .vendor       = PCI_VENDOR_ID_PHILIPS,
7085         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
7086         .subvendor    = PCI_VENDOR_ID_PHILIPS,
7087         .subdevice    = 0,
7088         .driver_data  = SAA7134_BOARD_NOAUTO,
7089     },{
7090         /* --- default catch --- */
7091         .vendor       = PCI_VENDOR_ID_PHILIPS,
7092         .device       = PCI_DEVICE_ID_PHILIPS_SAA7130,
7093         .subvendor    = PCI_ANY_ID,
7094         .subdevice    = PCI_ANY_ID,
7095         .driver_data  = SAA7134_BOARD_UNKNOWN,
7096     },{
7097         .vendor       = PCI_VENDOR_ID_PHILIPS,
7098         .device       = PCI_DEVICE_ID_PHILIPS_SAA7133,
7099         .subvendor    = PCI_ANY_ID,
7100         .subdevice    = PCI_ANY_ID,
7101         .driver_data  = SAA7134_BOARD_UNKNOWN,
7102     },{
7103         .vendor       = PCI_VENDOR_ID_PHILIPS,
7104         .device       = PCI_DEVICE_ID_PHILIPS_SAA7134,
7105         .subvendor    = PCI_ANY_ID,
7106         .subdevice    = PCI_ANY_ID,
7107         .driver_data  = SAA7134_BOARD_UNKNOWN,
7108     },{
7109         .vendor       = PCI_VENDOR_ID_PHILIPS,
7110         .device       = PCI_DEVICE_ID_PHILIPS_SAA7135,
7111         .subvendor    = PCI_ANY_ID,
7112         .subdevice    = PCI_ANY_ID,
7113         .driver_data  = SAA7134_BOARD_UNKNOWN,
7114     },{
7115         /* --- end of list --- */
7116     }
7117 };
7118 MODULE_DEVICE_TABLE(pci, saa7134_pci_tbl);
7119 
7120 /* ----------------------------------------------------------- */
7121 /* flyvideo tweaks                                             */
7122 
7123 
7124 static void board_flyvideo(struct saa7134_dev *dev)
7125 {
7126     pr_warn("%s: there are different flyvideo cards with different tuners\n"
7127         "%s: out there, you might have to use the tuner=<nr> insmod\n"
7128         "%s: option to override the default value.\n",
7129         dev->name, dev->name, dev->name);
7130 }
7131 
7132 static int saa7134_xc2028_callback(struct saa7134_dev *dev,
7133                    int command, int arg)
7134 {
7135     switch (command) {
7136     case XC2028_TUNER_RESET:
7137         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00000000);
7138         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00008000);
7139         switch (dev->board) {
7140         case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
7141         case SAA7134_BOARD_AVERMEDIA_M103:
7142             saa7134_set_gpio(dev, 23, 0);
7143             msleep(10);
7144             saa7134_set_gpio(dev, 23, 1);
7145         break;
7146         case SAA7134_BOARD_AVERMEDIA_A16D:
7147             saa7134_set_gpio(dev, 21, 0);
7148             msleep(10);
7149             saa7134_set_gpio(dev, 21, 1);
7150         break;
7151         case SAA7134_BOARD_AVERMEDIA_A700_HYBRID:
7152             saa7134_set_gpio(dev, 18, 0);
7153             msleep(10);
7154             saa7134_set_gpio(dev, 18, 1);
7155         break;
7156         case SAA7134_BOARD_VIDEOMATE_T750:
7157             saa7134_set_gpio(dev, 20, 0);
7158             msleep(10);
7159             saa7134_set_gpio(dev, 20, 1);
7160         break;
7161         }
7162         return 0;
7163     }
7164     return -EINVAL;
7165 }
7166 
7167 static int saa7134_xc5000_callback(struct saa7134_dev *dev,
7168                    int command, int arg)
7169 {
7170     switch (dev->board) {
7171     case SAA7134_BOARD_BEHOLD_X7:
7172     case SAA7134_BOARD_BEHOLD_H7:
7173     case SAA7134_BOARD_BEHOLD_A7:
7174         if (command == XC5000_TUNER_RESET) {
7175         /* Down and UP pheripherial RESET pin for reset all chips */
7176             saa_writeb(SAA7134_SPECIAL_MODE, 0x00);
7177             msleep(10);
7178             saa_writeb(SAA7134_SPECIAL_MODE, 0x01);
7179             msleep(10);
7180         }
7181         break;
7182     default:
7183         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x06e20000, 0x06e20000);
7184         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x06a20000, 0x06a20000);
7185         saa_andorl(SAA7133_ANALOG_IO_SELECT >> 2, 0x02, 0x02);
7186         saa_andorl(SAA7134_ANALOG_IN_CTRL1 >> 2, 0x81, 0x81);
7187         saa_andorl(SAA7134_AUDIO_CLOCK0 >> 2, 0x03187de7, 0x03187de7);
7188         saa_andorl(SAA7134_AUDIO_PLL_CTRL >> 2, 0x03, 0x03);
7189         saa_andorl(SAA7134_AUDIO_CLOCKS_PER_FIELD0 >> 2,
7190                0x0001e000, 0x0001e000);
7191         break;
7192     }
7193     return 0;
7194 }
7195 
7196 static int saa7134_tda8290_827x_callback(struct saa7134_dev *dev,
7197                      int command, int arg)
7198 {
7199     u8 sync_control;
7200 
7201     switch (command) {
7202     case 0: /* switch LNA gain through GPIO 22*/
7203         saa7134_set_gpio(dev, 22, arg) ;
7204         break;
7205     case 1: /* vsync output at GPIO22. 50 / 60Hz */
7206         saa_andorb(SAA7134_VIDEO_PORT_CTRL3, 0x80, 0x80);
7207         saa_andorb(SAA7134_VIDEO_PORT_CTRL6, 0x0f, 0x03);
7208         if (arg == 1)
7209             sync_control = 11;
7210         else
7211             sync_control = 17;
7212         saa_writeb(SAA7134_VGATE_START, sync_control);
7213         saa_writeb(SAA7134_VGATE_STOP, sync_control + 1);
7214         saa_andorb(SAA7134_MISC_VGATE_MSB, 0x03, 0x00);
7215         break;
7216     default:
7217         return -EINVAL;
7218     }
7219 
7220     return 0;
7221 }
7222 
7223 static inline int saa7134_tda18271_hvr11x0_toggle_agc(struct saa7134_dev *dev,
7224                               enum tda18271_mode mode)
7225 {
7226     /* toggle AGC switch through GPIO 26 */
7227     switch (mode) {
7228     case TDA18271_ANALOG:
7229         saa7134_set_gpio(dev, 26, 0);
7230         break;
7231     case TDA18271_DIGITAL:
7232         saa7134_set_gpio(dev, 26, 1);
7233         break;
7234     default:
7235         return -EINVAL;
7236     }
7237     return 0;
7238 }
7239 
7240 static inline int saa7134_kworld_sbtvd_toggle_agc(struct saa7134_dev *dev,
7241                           enum tda18271_mode mode)
7242 {
7243     /* toggle AGC switch through GPIO 27 */
7244     switch (mode) {
7245     case TDA18271_ANALOG:
7246         saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x4000);
7247         saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x4000);
7248         msleep(20);
7249         break;
7250     case TDA18271_DIGITAL:
7251         saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x14000);
7252         saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x14000);
7253         msleep(20);
7254         saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x54000);
7255         saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x54000);
7256         msleep(30);
7257         break;
7258     default:
7259         return -EINVAL;
7260     }
7261     return 0;
7262 }
7263 
7264 static int saa7134_kworld_pc150u_toggle_agc(struct saa7134_dev *dev,
7265                         enum tda18271_mode mode)
7266 {
7267     switch (mode) {
7268     case TDA18271_ANALOG:
7269         saa7134_set_gpio(dev, 18, 0);
7270         break;
7271     case TDA18271_DIGITAL:
7272         saa7134_set_gpio(dev, 18, 1);
7273         msleep(30);
7274         break;
7275     default:
7276         return -EINVAL;
7277     }
7278     return 0;
7279 }
7280 
7281 static int saa7134_leadtek_hdtv200h_toggle_agc(struct saa7134_dev *dev,
7282                            enum tda18271_mode mode)
7283 {
7284     switch (mode) {
7285     case TDA18271_ANALOG:
7286         saa7134_set_gpio(dev, 10, 0);
7287         break;
7288     case TDA18271_DIGITAL:
7289         saa7134_set_gpio(dev, 10, 1);
7290         break;
7291     default:
7292         return -EINVAL;
7293     }
7294     return 0;
7295 }
7296 
7297 static int saa7134_tda8290_18271_callback(struct saa7134_dev *dev,
7298                       int command, int arg)
7299 {
7300     int ret = 0;
7301 
7302     switch (command) {
7303     case TDA18271_CALLBACK_CMD_AGC_ENABLE: /* 0 */
7304         switch (dev->board) {
7305         case SAA7134_BOARD_HAUPPAUGE_HVR1150:
7306         case SAA7134_BOARD_HAUPPAUGE_HVR1120:
7307         case SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2:
7308             ret = saa7134_tda18271_hvr11x0_toggle_agc(dev, arg);
7309             break;
7310         case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG:
7311             ret = saa7134_kworld_sbtvd_toggle_agc(dev, arg);
7312             break;
7313         case SAA7134_BOARD_KWORLD_PC150U:
7314             ret = saa7134_kworld_pc150u_toggle_agc(dev, arg);
7315             break;
7316         case SAA7134_BOARD_LEADTEK_WINFAST_HDTV200_H:
7317             ret = saa7134_leadtek_hdtv200h_toggle_agc(dev, arg);
7318             break;
7319         default:
7320             break;
7321         }
7322         break;
7323     default:
7324         ret = -EINVAL;
7325         break;
7326     }
7327     return ret;
7328 }
7329 
7330 static int saa7134_tda8290_callback(struct saa7134_dev *dev,
7331                     int command, int arg)
7332 {
7333     int ret;
7334 
7335     switch (dev->board) {
7336     case SAA7134_BOARD_HAUPPAUGE_HVR1150:
7337     case SAA7134_BOARD_HAUPPAUGE_HVR1120:
7338     case SAA7134_BOARD_AVERMEDIA_M733A:
7339     case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG:
7340     case SAA7134_BOARD_KWORLD_PC150U:
7341     case SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2:
7342     case SAA7134_BOARD_LEADTEK_WINFAST_HDTV200_H:
7343         /* tda8290 + tda18271 */
7344         ret = saa7134_tda8290_18271_callback(dev, command, arg);
7345         break;
7346     default:
7347         /* tda8290 + tda827x */
7348         ret = saa7134_tda8290_827x_callback(dev, command, arg);
7349         break;
7350     }
7351     return ret;
7352 }
7353 
7354 int saa7134_tuner_callback(void *priv, int component, int command, int arg)
7355 {
7356     struct saa7134_dev *dev = priv;
7357 
7358     if (dev != NULL) {
7359         switch (dev->tuner_type) {
7360         case TUNER_PHILIPS_TDA8290:
7361             return saa7134_tda8290_callback(dev, command, arg);
7362         case TUNER_XC2028:
7363             return saa7134_xc2028_callback(dev, command, arg);
7364         case TUNER_XC5000:
7365             return saa7134_xc5000_callback(dev, command, arg);
7366         }
7367     } else {
7368         pr_err("saa7134: Error - device struct undefined.\n");
7369         return -EINVAL;
7370     }
7371     return -EINVAL;
7372 }
7373 EXPORT_SYMBOL(saa7134_tuner_callback);
7374 
7375 /* ----------------------------------------------------------- */
7376 
7377 static void hauppauge_eeprom(struct saa7134_dev *dev, u8 *eeprom_data)
7378 {
7379     struct tveeprom tv;
7380 
7381     tveeprom_hauppauge_analog(&tv, eeprom_data);
7382 
7383     /* Make sure we support the board model */
7384     switch (tv.model) {
7385     case 67019: /* WinTV-HVR1110 (Retail, IR Blaster, hybrid, FM, SVid/Comp, 3.5mm audio in) */
7386     case 67109: /* WinTV-HVR1000 (Retail, IR Receive, analog, no FM, SVid/Comp, 3.5mm audio in) */
7387     case 67201: /* WinTV-HVR1150 (Retail, IR Receive, hybrid, FM, SVid/Comp, 3.5mm audio in) */
7388     case 67301: /* WinTV-HVR1000 (Retail, IR Receive, analog, no FM, SVid/Comp, 3.5mm audio in) */
7389     case 67209: /* WinTV-HVR1110 (Retail, IR Receive, hybrid, FM, SVid/Comp, 3.5mm audio in) */
7390     case 67559: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
7391     case 67569: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM) */
7392     case 67579: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM) */
7393     case 67589: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM, SVid/Comp, RCA aud) */
7394     case 67599: /* WinTV-HVR1110 (OEM, no IR, hybrid, no FM, SVid/Comp, RCA aud) */
7395     case 67651: /* WinTV-HVR1150 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
7396     case 67659: /* WinTV-HVR1110 (OEM, no IR, hybrid, FM, SVid/Comp, RCA aud) */
7397         break;
7398     default:
7399         pr_warn("%s: warning: unknown hauppauge model #%d\n",
7400             dev->name, tv.model);
7401         break;
7402     }
7403 
7404     pr_info("%s: hauppauge eeprom: model=%d\n",
7405            dev->name, tv.model);
7406 }
7407 
7408 /* ----------------------------------------------------------- */
7409 
7410 int saa7134_board_init1(struct saa7134_dev *dev)
7411 {
7412     /* Always print gpio, often manufacturers encode tuner type and other info. */
7413     saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0);
7414     dev->gpio_value = saa_readl(SAA7134_GPIO_GPSTATUS0 >> 2);
7415     pr_info("%s: board init: gpio is %x\n", dev->name, dev->gpio_value);
7416 
7417     switch (dev->board) {
7418     case SAA7134_BOARD_FLYVIDEO2000:
7419     case SAA7134_BOARD_FLYVIDEO3000:
7420     case SAA7134_BOARD_FLYVIDEO3000_NTSC:
7421         dev->has_remote = SAA7134_REMOTE_GPIO;
7422         board_flyvideo(dev);
7423         break;
7424     case SAA7134_BOARD_FLYTVPLATINUM_MINI2:
7425     case SAA7134_BOARD_FLYTVPLATINUM_FM:
7426     case SAA7134_BOARD_CINERGY400:
7427     case SAA7134_BOARD_CINERGY600:
7428     case SAA7134_BOARD_CINERGY600_MK3:
7429     case SAA7134_BOARD_ECS_TVP3XP:
7430     case SAA7134_BOARD_ECS_TVP3XP_4CB5:
7431     case SAA7134_BOARD_ECS_TVP3XP_4CB6:
7432     case SAA7134_BOARD_MD2819:
7433     case SAA7134_BOARD_KWORLD_VSTREAM_XPERT:
7434     case SAA7134_BOARD_KWORLD_XPERT:
7435     case SAA7134_BOARD_AVERMEDIA_STUDIO_305:
7436     case SAA7134_BOARD_AVERMEDIA_305:
7437     case SAA7134_BOARD_AVERMEDIA_STUDIO_505:
7438     case SAA7134_BOARD_AVERMEDIA_505:
7439     case SAA7134_BOARD_AVERMEDIA_STUDIO_307:
7440     case SAA7134_BOARD_AVERMEDIA_307:
7441     case SAA7134_BOARD_AVERMEDIA_STUDIO_507:
7442     case SAA7134_BOARD_AVERMEDIA_GO_007_FM:
7443     case SAA7134_BOARD_AVERMEDIA_777:
7444     case SAA7134_BOARD_AVERMEDIA_M135A:
7445 /*      case SAA7134_BOARD_SABRENT_SBTTVFM:  */ /* not finished yet */
7446     case SAA7134_BOARD_VIDEOMATE_TV_PVR:
7447     case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS:
7448     case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII:
7449     case SAA7134_BOARD_VIDEOMATE_M1F:
7450     case SAA7134_BOARD_VIDEOMATE_DVBT_300:
7451     case SAA7134_BOARD_VIDEOMATE_DVBT_200:
7452     case SAA7134_BOARD_VIDEOMATE_DVBT_200A:
7453     case SAA7134_BOARD_MANLI_MTV001:
7454     case SAA7134_BOARD_MANLI_MTV002:
7455     case SAA7134_BOARD_BEHOLD_409FM:
7456     case SAA7134_BOARD_AVACSSMARTTV:
7457     case SAA7134_BOARD_GOTVIEW_7135:
7458     case SAA7134_BOARD_KWORLD_TERMINATOR:
7459     case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS:
7460     case SAA7134_BOARD_FLYDVBT_LR301:
7461     case SAA7134_BOARD_ASUSTeK_PS3_100:
7462     case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
7463     case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
7464     case SAA7134_BOARD_ASUSTeK_P7131_ANALOG:
7465     case SAA7134_BOARD_FLYDVBTDUO:
7466     case SAA7134_BOARD_PROTEUS_2309:
7467     case SAA7134_BOARD_AVERMEDIA_A16AR:
7468     case SAA7134_BOARD_ENCORE_ENLTV:
7469     case SAA7134_BOARD_ENCORE_ENLTV_FM:
7470     case SAA7134_BOARD_ENCORE_ENLTV_FM53:
7471     case SAA7134_BOARD_ENCORE_ENLTV_FM3:
7472     case SAA7134_BOARD_10MOONSTVMASTER3:
7473     case SAA7134_BOARD_BEHOLD_401:
7474     case SAA7134_BOARD_BEHOLD_403:
7475     case SAA7134_BOARD_BEHOLD_403FM:
7476     case SAA7134_BOARD_BEHOLD_405:
7477     case SAA7134_BOARD_BEHOLD_405FM:
7478     case SAA7134_BOARD_BEHOLD_407:
7479     case SAA7134_BOARD_BEHOLD_407FM:
7480     case SAA7134_BOARD_BEHOLD_409:
7481     case SAA7134_BOARD_BEHOLD_505FM:
7482     case SAA7134_BOARD_BEHOLD_505RDS_MK5:
7483     case SAA7134_BOARD_BEHOLD_505RDS_MK3:
7484     case SAA7134_BOARD_BEHOLD_507_9FM:
7485     case SAA7134_BOARD_BEHOLD_507RDS_MK3:
7486     case SAA7134_BOARD_BEHOLD_507RDS_MK5:
7487     case SAA7134_BOARD_GENIUS_TVGO_A11MCE:
7488     case SAA7134_BOARD_REAL_ANGEL_220:
7489     case SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG:
7490     case SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS:
7491     case SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM:
7492     case SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S:
7493     case SAA7134_BOARD_LEADTEK_WINFAST_TV2100_FM:
7494         dev->has_remote = SAA7134_REMOTE_GPIO;
7495         break;
7496     case SAA7134_BOARD_FLYDVBS_LR300:
7497         saa_writeb(SAA7134_GPIO_GPMODE3, 0x80);
7498         saa_writeb(SAA7134_GPIO_GPSTATUS2, 0x40);
7499         dev->has_remote = SAA7134_REMOTE_GPIO;
7500         break;
7501     case SAA7134_BOARD_MD5044:
7502         pr_warn("%s: seems there are two different versions of the MD5044\n"
7503             "%s: (with the same ID) out there.  If sound doesn't work for\n"
7504             "%s: you try the audio_clock_override=0x200000 insmod option.\n",
7505             dev->name, dev->name, dev->name);
7506         break;
7507     case SAA7134_BOARD_CINERGY400_CARDBUS:
7508         /* power-up tuner chip */
7509         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00040000, 0x00040000);
7510         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000000);
7511         break;
7512     case SAA7134_BOARD_PINNACLE_300I_DVBT_PAL:
7513         /* this turns the remote control chip off to work around a bug in it */
7514         saa_writeb(SAA7134_GPIO_GPMODE1, 0x80);
7515         saa_writeb(SAA7134_GPIO_GPSTATUS1, 0x80);
7516         break;
7517     case SAA7134_BOARD_MONSTERTV_MOBILE:
7518         /* power-up tuner chip */
7519         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00040000, 0x00040000);
7520         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00040000, 0x00000004);
7521         break;
7522     case SAA7134_BOARD_FLYDVBT_DUO_CARDBUS:
7523         /* turn the fan on */
7524         saa_writeb(SAA7134_GPIO_GPMODE3, 0x08);
7525         saa_writeb(SAA7134_GPIO_GPSTATUS3, 0x06);
7526         break;
7527     case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
7528     case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
7529         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2, 0x08000000, 0x08000000);
7530         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08000000, 0x00000000);
7531         break;
7532     case SAA7134_BOARD_AVERMEDIA_CARDBUS:
7533     case SAA7134_BOARD_AVERMEDIA_M115:
7534         /* power-down tuner chip */
7535         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0);
7536         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0);
7537         msleep(10);
7538         /* power-up tuner chip */
7539         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0xffffffff, 0xffffffff);
7540         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0xffffffff, 0xffffffff);
7541         msleep(10);
7542         break;
7543     case SAA7134_BOARD_AVERMEDIA_CARDBUS_501:
7544         /* power-down tuner chip */
7545         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x08400000, 0x08400000);
7546         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08400000, 0);
7547         msleep(10);
7548         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x08400000, 0x08400000);
7549         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x08400000, 0x08400000);
7550         msleep(10);
7551         dev->has_remote = SAA7134_REMOTE_I2C;
7552         break;
7553     case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
7554         saa7134_set_gpio(dev, 23, 0);
7555         msleep(10);
7556         saa7134_set_gpio(dev, 23, 1);
7557         dev->has_remote = SAA7134_REMOTE_I2C;
7558         break;
7559     case SAA7134_BOARD_AVERMEDIA_M103:
7560         saa7134_set_gpio(dev, 23, 0);
7561         msleep(10);
7562         saa7134_set_gpio(dev, 23, 1);
7563         break;
7564     case SAA7134_BOARD_AVERMEDIA_A16D:
7565         saa7134_set_gpio(dev, 21, 0);
7566         msleep(10);
7567         saa7134_set_gpio(dev, 21, 1);
7568         msleep(1);
7569         dev->has_remote = SAA7134_REMOTE_GPIO;
7570         break;
7571     case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM:
7572         /* power-down tuner chip */
7573         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x000A8004, 0x000A8004);
7574         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x000A8004, 0);
7575         msleep(10);
7576         /* power-up tuner chip */
7577         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x000A8004, 0x000A8004);
7578         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x000A8004, 0x000A8004);
7579         msleep(10);
7580         /* remote via GPIO */
7581         dev->has_remote = SAA7134_REMOTE_GPIO;
7582         break;
7583     case SAA7134_BOARD_RTD_VFG7350:
7584 
7585         /*
7586          * Make sure Production Test Register at offset 0x1D1 is cleared
7587          * to take chip out of test mode.  Clearing bit 4 (TST_EN_AOUT)
7588          * prevents pin 105 from remaining low; keeping pin 105 low
7589          * continually resets the SAA6752 chip.
7590          */
7591 
7592         saa_writeb (SAA7134_PRODUCTION_TEST_MODE, 0x00);
7593         break;
7594     case SAA7134_BOARD_HAUPPAUGE_HVR1150:
7595     case SAA7134_BOARD_HAUPPAUGE_HVR1120:
7596         dev->has_remote = SAA7134_REMOTE_GPIO;
7597         /* GPIO 26 high for digital, low for analog */
7598         saa7134_set_gpio(dev, 26, 0);
7599         msleep(1);
7600 
7601         saa7134_set_gpio(dev, 22, 0);
7602         msleep(10);
7603         saa7134_set_gpio(dev, 22, 1);
7604         break;
7605     /* i2c remotes */
7606     case SAA7134_BOARD_PINNACLE_PCTV_110i:
7607     case SAA7134_BOARD_PINNACLE_PCTV_310i:
7608     case SAA7134_BOARD_UPMOST_PURPLE_TV:
7609     case SAA7134_BOARD_MSI_TVATANYWHERE_PLUS:
7610     case SAA7134_BOARD_HAUPPAUGE_HVR1110:
7611     case SAA7134_BOARD_BEHOLD_607FM_MK3:
7612     case SAA7134_BOARD_BEHOLD_607FM_MK5:
7613     case SAA7134_BOARD_BEHOLD_609FM_MK3:
7614     case SAA7134_BOARD_BEHOLD_609FM_MK5:
7615     case SAA7134_BOARD_BEHOLD_607RDS_MK3:
7616     case SAA7134_BOARD_BEHOLD_607RDS_MK5:
7617     case SAA7134_BOARD_BEHOLD_609RDS_MK3:
7618     case SAA7134_BOARD_BEHOLD_609RDS_MK5:
7619     case SAA7134_BOARD_BEHOLD_M6:
7620     case SAA7134_BOARD_BEHOLD_M63:
7621     case SAA7134_BOARD_BEHOLD_M6_EXTRA:
7622     case SAA7134_BOARD_BEHOLD_H6:
7623     case SAA7134_BOARD_BEHOLD_X7:
7624     case SAA7134_BOARD_BEHOLD_H7:
7625     case SAA7134_BOARD_BEHOLD_A7:
7626     case SAA7134_BOARD_KWORLD_PC150U:
7627     case SAA7134_BOARD_SNAZIO_TVPVR_PRO:
7628         dev->has_remote = SAA7134_REMOTE_I2C;
7629         break;
7630     case SAA7134_BOARD_AVERMEDIA_A169_B:
7631         pr_warn("%s: %s: dual saa713x broadcast decoders\n"
7632             "%s: Sorry, none of the inputs to this chip are supported yet.\n"
7633             "%s: Dual decoder functionality is disabled for now, use the other chip.\n",
7634             dev->name, card(dev).name, dev->name, dev->name);
7635         break;
7636     case SAA7134_BOARD_AVERMEDIA_M102:
7637         /* enable tuner */
7638            dev->has_remote = SAA7134_REMOTE_GPIO;
7639         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x8c040007, 0x8c040007);
7640         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0c0007cd, 0x0c0007cd);
7641         break;
7642     case SAA7134_BOARD_AVERMEDIA_A700_HYBRID:
7643     case SAA7134_BOARD_AVERMEDIA_A700_PRO:
7644         /* write windows gpio values */
7645         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x80040100, 0x80040100);
7646         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x80040100, 0x00040100);
7647         break;
7648     case SAA7134_BOARD_AVERMEDIA_A706:
7649         /* radio antenna select: tristate both as in Windows driver */
7650         saa7134_set_gpio(dev, 12, 3);   /* TV antenna */
7651         saa7134_set_gpio(dev, 13, 3);   /* FM antenna */
7652         dev->has_remote = SAA7134_REMOTE_I2C;
7653         /*
7654          * Disable CE5039 DVB-S tuner now (SLEEP pin high) to prevent
7655          * it from interfering with analog tuner detection
7656          */
7657         saa7134_set_gpio(dev, 23, 1);
7658         break;
7659     case SAA7134_BOARD_VIDEOMATE_S350:
7660         dev->has_remote = SAA7134_REMOTE_GPIO;
7661         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x0000C000, 0x0000C000);
7662         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0000C000, 0x0000C000);
7663         break;
7664     case SAA7134_BOARD_AVERMEDIA_M733A:
7665         saa7134_set_gpio(dev, 1, 1);
7666         msleep(10);
7667         saa7134_set_gpio(dev, 1, 0);
7668         msleep(10);
7669         saa7134_set_gpio(dev, 1, 1);
7670         dev->has_remote = SAA7134_REMOTE_GPIO;
7671         break;
7672     case SAA7134_BOARD_MAGICPRO_PROHDTV_PRO2:
7673         /* enable LGS-8G75 */
7674         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x0e050000, 0x0c050000);
7675         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x0e050000, 0x0c050000);
7676         break;
7677     case SAA7134_BOARD_VIDEOMATE_T750:
7678         /* enable the analog tuner */
7679         saa_andorl(SAA7134_GPIO_GPMODE0 >> 2,   0x00008000, 0x00008000);
7680         saa_andorl(SAA7134_GPIO_GPSTATUS0 >> 2, 0x00008000, 0x00008000);
7681         break;
7682     }
7683     return 0;
7684 }
7685 
7686 static void saa7134_tuner_setup(struct saa7134_dev *dev)
7687 {
7688     struct tuner_setup tun_setup;
7689     unsigned int mode_mask = T_RADIO | T_ANALOG_TV;
7690 
7691     memset(&tun_setup, 0, sizeof(tun_setup));
7692     tun_setup.tuner_callback = saa7134_tuner_callback;
7693 
7694     if (saa7134_boards[dev->board].radio_type != UNSET) {
7695         tun_setup.type = saa7134_boards[dev->board].radio_type;
7696         tun_setup.addr = saa7134_boards[dev->board].radio_addr;
7697 
7698         tun_setup.mode_mask = T_RADIO;
7699 
7700         saa_call_all(dev, tuner, s_type_addr, &tun_setup);
7701         mode_mask &= ~T_RADIO;
7702     }
7703 
7704     if ((dev->tuner_type != TUNER_ABSENT) && (dev->tuner_type != UNSET)) {
7705         tun_setup.type = dev->tuner_type;
7706         tun_setup.addr = dev->tuner_addr;
7707         tun_setup.config = &saa7134_boards[dev->board].tda829x_conf;
7708         tun_setup.tuner_callback = saa7134_tuner_callback;
7709 
7710         tun_setup.mode_mask = mode_mask;
7711 
7712         saa_call_all(dev, tuner, s_type_addr, &tun_setup);
7713     }
7714 
7715     if (dev->tda9887_conf) {
7716         struct v4l2_priv_tun_config tda9887_cfg;
7717 
7718         tda9887_cfg.tuner = TUNER_TDA9887;
7719         tda9887_cfg.priv = &dev->tda9887_conf;
7720 
7721         saa_call_all(dev, tuner, s_config, &tda9887_cfg);
7722     }
7723 
7724     if (dev->tuner_type == TUNER_XC2028) {
7725         struct v4l2_priv_tun_config  xc2028_cfg;
7726         struct xc2028_ctrl           ctl;
7727 
7728         memset(&xc2028_cfg, 0, sizeof(xc2028_cfg));
7729         memset(&ctl, 0, sizeof(ctl));
7730 
7731         ctl.fname   = XC2028_DEFAULT_FIRMWARE;
7732         ctl.max_len = 64;
7733 
7734         switch (dev->board) {
7735         case SAA7134_BOARD_AVERMEDIA_A16D:
7736         case SAA7134_BOARD_AVERMEDIA_CARDBUS_506:
7737         case SAA7134_BOARD_AVERMEDIA_M103:
7738         case SAA7134_BOARD_AVERMEDIA_A700_HYBRID:
7739             ctl.demod = XC3028_FE_ZARLINK456;
7740             break;
7741         default:
7742             ctl.demod = XC3028_FE_OREN538;
7743             ctl.mts = 1;
7744         }
7745 
7746         xc2028_cfg.tuner = TUNER_XC2028;
7747         xc2028_cfg.priv  = &ctl;
7748 
7749         saa_call_all(dev, tuner, s_config, &xc2028_cfg);
7750     }
7751 }
7752 
7753 /* stuff which needs working i2c */
7754 int saa7134_board_init2(struct saa7134_dev *dev)
7755 {
7756     unsigned char buf;
7757     int board;
7758 
7759     /* Put here the code that enables the chips that are needed
7760        for analog mode and doesn't depend on the tuner attachment.
7761        It is also a good idea to get tuner type from eeprom, etc before
7762        initializing tuner, since we can avoid loading tuner driver
7763        on devices that has TUNER_ABSENT
7764      */
7765     switch (dev->board) {
7766     case SAA7134_BOARD_BMK_MPEX_NOTUNER:
7767     case SAA7134_BOARD_BMK_MPEX_TUNER:
7768         /* Checks if the device has a tuner at 0x60 addr
7769            If the device doesn't have a tuner, TUNER_ABSENT
7770            will be used at tuner_type, avoiding loading tuner
7771            without needing it
7772          */
7773         dev->i2c_client.addr = 0x60;
7774         board = (i2c_master_recv(&dev->i2c_client, &buf, 0) < 0)
7775             ? SAA7134_BOARD_BMK_MPEX_NOTUNER
7776             : SAA7134_BOARD_BMK_MPEX_TUNER;
7777         if (board == dev->board)
7778             break;
7779         dev->board = board;
7780         pr_warn("%s: board type fixup: %s\n", dev->name,
7781         saa7134_boards[dev->board].name);
7782         dev->tuner_type = saa7134_boards[dev->board].tuner_type;
7783 
7784         break;
7785     case SAA7134_BOARD_MD7134:
7786     {
7787         u8 subaddr;
7788         u8 data[3], data1[] = { 0x09, 0x9f, 0x86, 0x11};
7789         int ret, tuner_t;
7790         struct i2c_msg msg[] = {{.addr = 0x50, .flags = 0, .buf = &subaddr, .len = 1},
7791                     {.addr = 0x50, .flags = I2C_M_RD, .buf = data, .len = 3}},
7792                 msg1 = {.addr = 0x61, .flags = 0, .buf = data1, .len = sizeof(data1)};
7793 
7794         subaddr= 0x14;
7795         tuner_t = 0;
7796 
7797         /* Retrieve device data from eeprom, checking for the
7798            proper tuner_type.
7799          */
7800         ret = i2c_transfer(&dev->i2c_adap, msg, 2);
7801         if (ret != 2) {
7802             pr_err("EEPROM read failure\n");
7803         } else if ((data[0] != 0) && (data[0] != 0xff)) {
7804             /* old config structure */
7805             subaddr = data[0] + 2;
7806             msg[1].len = 2;
7807             i2c_transfer(&dev->i2c_adap, msg, 2);
7808             tuner_t = (data[0] << 8) + data[1];
7809             switch (tuner_t){
7810             case 0x0103:
7811                 dev->tuner_type = TUNER_PHILIPS_PAL;
7812                 break;
7813             case 0x010C:
7814                 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
7815                 break;
7816             default:
7817                 pr_err("%s Can't determine tuner type %x from EEPROM\n",
7818                        dev->name, tuner_t);
7819             }
7820         } else if ((data[1] != 0) && (data[1] != 0xff)) {
7821             /* new config structure */
7822             subaddr = data[1] + 1;
7823             msg[1].len = 1;
7824             i2c_transfer(&dev->i2c_adap, msg, 2);
7825             subaddr = data[0] + 1;
7826             msg[1].len = 2;
7827             i2c_transfer(&dev->i2c_adap, msg, 2);
7828             tuner_t = (data[1] << 8) + data[0];
7829             switch (tuner_t) {
7830             case 0x0005:
7831                 dev->tuner_type = TUNER_PHILIPS_FM1216ME_MK3;
7832                 break;
7833             case 0x001d:
7834                 dev->tuner_type = TUNER_PHILIPS_FMD1216ME_MK3;
7835                 pr_info("%s Board has DVB-T\n",
7836                        dev->name);
7837                 break;
7838             default:
7839                 pr_err("%s Can't determine tuner type %x from EEPROM\n",
7840                        dev->name, tuner_t);
7841             }
7842         } else {
7843             pr_err("%s unexpected config structure\n", dev->name);
7844         }
7845 
7846         pr_info("%s Tuner type is %d\n", dev->name, dev->tuner_type);
7847 
7848         /* The tuner TUNER_PHILIPS_FMD1216ME_MK3 after hardware    */
7849         /* start has disabled IF and enabled DVB-T. When saa7134   */
7850         /* scan I2C devices it will not detect IF tda9887 and can`t*/
7851         /* watch TV without software reboot. To solve this problem */
7852         /* switch the tuner to analog TV mode manually.            */
7853         if (dev->tuner_type == TUNER_PHILIPS_FMD1216ME_MK3) {
7854             if (i2c_transfer(&dev->i2c_adap, &msg1, 1) != 1)
7855                 printk(KERN_WARNING "%s: Unable to enable IF of the tuner.\n", dev->name);
7856         }
7857         break;
7858     }
7859     case SAA7134_BOARD_PHILIPS_EUROPA:
7860         if (dev->autodetected && (dev->eedata[0x41] == 0x1c)) {
7861             /* Reconfigure board as Snake reference design */
7862             dev->board = SAA7134_BOARD_PHILIPS_SNAKE;
7863             dev->tuner_type = saa7134_boards[dev->board].tuner_type;
7864             pr_info("%s: Reconfigured board as %s\n",
7865                 dev->name, saa7134_boards[dev->board].name);
7866             break;
7867         }
7868         fallthrough;
7869     case SAA7134_BOARD_VIDEOMATE_DVBT_300:
7870     case SAA7134_BOARD_ASUS_EUROPA2_HYBRID:
7871     case SAA7134_BOARD_ASUS_EUROPA_HYBRID:
7872     case SAA7134_BOARD_TECHNOTREND_BUDGET_T3000:
7873     {
7874 
7875         /* The Philips EUROPA based hybrid boards have the tuner
7876            connected through the channel decoder. We have to make it
7877            transparent to find it
7878          */
7879         u8 data[] = { 0x07, 0x02};
7880         struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7881         i2c_transfer(&dev->i2c_adap, &msg, 1);
7882 
7883         break;
7884     }
7885     case SAA7134_BOARD_PHILIPS_TIGER:
7886     case SAA7134_BOARD_PHILIPS_TIGER_S:
7887     {
7888         u8 data[] = { 0x3c, 0x33, 0x60};
7889         struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7890         if (dev->autodetected && (dev->eedata[0x49] == 0x50)) {
7891             dev->board = SAA7134_BOARD_PHILIPS_TIGER_S;
7892             pr_info("%s: Reconfigured board as %s\n",
7893                 dev->name, saa7134_boards[dev->board].name);
7894         }
7895         if (dev->board == SAA7134_BOARD_PHILIPS_TIGER_S) {
7896             dev->tuner_type = TUNER_PHILIPS_TDA8290;
7897 
7898             data[2] = 0x68;
7899             i2c_transfer(&dev->i2c_adap, &msg, 1);
7900             break;
7901         }
7902         i2c_transfer(&dev->i2c_adap, &msg, 1);
7903         break;
7904     }
7905     case SAA7134_BOARD_ASUSTeK_TVFM7135:
7906     /* The card below is detected as card=53, but is different */
7907            if (dev->autodetected && (dev->eedata[0x27] == 0x03)) {
7908             dev->board = SAA7134_BOARD_ASUSTeK_P7131_ANALOG;
7909             pr_info("%s: P7131 analog only, using entry of %s\n",
7910                 dev->name, saa7134_boards[dev->board].name);
7911 
7912             /*
7913              * IR init has already happened for other cards, so
7914              * we have to catch up.
7915              */
7916             dev->has_remote = SAA7134_REMOTE_GPIO;
7917             saa7134_input_init1(dev);
7918            }
7919            break;
7920     case SAA7134_BOARD_HAUPPAUGE_HVR1150:
7921     case SAA7134_BOARD_HAUPPAUGE_HVR1120:
7922         hauppauge_eeprom(dev, dev->eedata+0x80);
7923         break;
7924     case SAA7134_BOARD_HAUPPAUGE_HVR1110:
7925         hauppauge_eeprom(dev, dev->eedata+0x80);
7926         fallthrough;
7927     case SAA7134_BOARD_PINNACLE_PCTV_310i:
7928     case SAA7134_BOARD_KWORLD_DVBT_210:
7929     case SAA7134_BOARD_TEVION_DVBT_220RF:
7930     case SAA7134_BOARD_ASUSTeK_TIGER:
7931     case SAA7134_BOARD_ASUSTeK_P7131_DUAL:
7932     case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA:
7933     case SAA7134_BOARD_MEDION_MD8800_QUADRO:
7934     case SAA7134_BOARD_AVERMEDIA_SUPER_007:
7935     case SAA7134_BOARD_TWINHAN_DTV_DVB_3056:
7936     case SAA7134_BOARD_CREATIX_CTX953:
7937     {
7938         /* this is a hybrid board, initialize to analog mode
7939          * and configure firmware eeprom address
7940          */
7941         u8 data[] = { 0x3c, 0x33, 0x60};
7942         struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7943         i2c_transfer(&dev->i2c_adap, &msg, 1);
7944         break;
7945     }
7946     case SAA7134_BOARD_ASUSTeK_TIGER_3IN1:
7947     {
7948         u8 data[] = { 0x3c, 0x33, 0x60};
7949         struct i2c_msg msg = {.addr = 0x0b, .flags = 0, .buf = data,
7950                             .len = sizeof(data)};
7951         i2c_transfer(&dev->i2c_adap, &msg, 1);
7952         break;
7953     }
7954     case SAA7134_BOARD_ASUSTeK_PS3_100:
7955     {
7956         u8 data[] = { 0x3c, 0x33, 0x60};
7957         struct i2c_msg msg = {.addr = 0x0b, .flags = 0, .buf = data,
7958                                .len = sizeof(data)};
7959         i2c_transfer(&dev->i2c_adap, &msg, 1);
7960         break;
7961     }
7962     case SAA7134_BOARD_FLYDVB_TRIO:
7963     {
7964         u8 temp = 0;
7965         int rc;
7966         u8 data[] = { 0x3c, 0x33, 0x62};
7967         struct i2c_msg msg = {.addr=0x09, .flags=0, .buf=data, .len = sizeof(data)};
7968         i2c_transfer(&dev->i2c_adap, &msg, 1);
7969 
7970         /*
7971          * send weak up message to pic16C505 chip
7972          * @ LifeView FlyDVB Trio
7973          */
7974         msg.buf = &temp;
7975         msg.addr = 0x0b;
7976         msg.len = 1;
7977         if (1 != i2c_transfer(&dev->i2c_adap, &msg, 1)) {
7978             pr_warn("%s: send wake up byte to pic16C505(IR chip) failed\n",
7979                 dev->name);
7980         } else {
7981             msg.flags = I2C_M_RD;
7982             rc = i2c_transfer(&dev->i2c_adap, &msg, 1);
7983             pr_info("%s: probe IR chip @ i2c 0x%02x: %s\n",
7984                    dev->name, msg.addr,
7985                    (1 == rc) ? "yes" : "no");
7986             if (rc == 1)
7987                 dev->has_remote = SAA7134_REMOTE_I2C;
7988         }
7989         break;
7990     }
7991     case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331:
7992     case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS:
7993     {
7994         /* initialize analog mode  */
7995         u8 data[] = { 0x3c, 0x33, 0x6a};
7996         struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
7997         i2c_transfer(&dev->i2c_adap, &msg, 1);
7998         break;
7999     }
8000     case SAA7134_BOARD_CINERGY_HT_PCMCIA:
8001     case SAA7134_BOARD_CINERGY_HT_PCI:
8002     {
8003         /* initialize analog mode */
8004         u8 data[] = { 0x3c, 0x33, 0x68};
8005         struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)};
8006         i2c_transfer(&dev->i2c_adap, &msg, 1);
8007         break;
8008     }
8009     case SAA7134_BOARD_VIDEOMATE_DVBT_200:
8010     case SAA7134_BOARD_VIDEOMATE_DVBT_200A:
8011         /* The T200 and the T200A share the same pci id.  Consequently,
8012          * we are going to query eeprom to try to find out which one we
8013          * are actually looking at. */
8014 
8015         /* Don't do this if the board was specifically selected with an
8016          * insmod option or if we have the default configuration T200*/
8017         if (!dev->autodetected || (dev->eedata[0x41] == 0xd0))
8018             break;
8019         if (dev->eedata[0x41] == 0x02) {
8020             /* Reconfigure board  as T200A */
8021             dev->board = SAA7134_BOARD_VIDEOMATE_DVBT_200A;
8022             dev->tuner_type   = saa7134_boards[dev->board].tuner_type;
8023             dev->tda9887_conf = saa7134_boards[dev->board].tda9887_conf;
8024             pr_info("%s: Reconfigured board as %s\n",
8025                 dev->name, saa7134_boards[dev->board].name);
8026         } else {
8027             pr_warn("%s: Unexpected tuner type info: %x in eeprom\n",
8028                 dev->name, dev->eedata[0x41]);
8029             break;
8030         }
8031         break;
8032     case SAA7134_BOARD_ADS_INSTANT_HDTV_PCI:
8033     case SAA7134_BOARD_KWORLD_ATSC110:
8034     {
8035         struct i2c_msg msg = { .addr = 0x0a, .flags = 0 };
8036         int i;
8037         static u8 buffer[][2] = {
8038             { 0x10, 0x12 },
8039             { 0x13, 0x04 },
8040             { 0x16, 0x00 },
8041             { 0x14, 0x04 },
8042             { 0x17, 0x00 },
8043         };
8044 
8045         for (i = 0; i < ARRAY_SIZE(buffer); i++) {
8046             msg.buf = &buffer[i][0];
8047             msg.len = ARRAY_SIZE(buffer[0]);
8048             if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1)
8049                 pr_warn("%s: Unable to enable tuner(%i).\n",
8050                     dev->name, i);
8051         }
8052         break;
8053     }
8054     case SAA7134_BOARD_BEHOLD_H6:
8055     {
8056         u8 data[] = { 0x09, 0x9f, 0x86, 0x11};
8057         struct i2c_msg msg = {.addr = 0x61, .flags = 0, .buf = data,
8058                             .len = sizeof(data)};
8059 
8060         /* The tuner TUNER_PHILIPS_FMD1216MEX_MK3 after hardware    */
8061         /* start has disabled IF and enabled DVB-T. When saa7134    */
8062         /* scan I2C devices it not detect IF tda9887 and can`t      */
8063         /* watch TV without software reboot. For solve this problem */
8064         /* switch the tuner to analog TV mode manually.             */
8065         if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1)
8066             pr_warn("%s: Unable to enable IF of the tuner.\n",
8067                 dev->name);
8068         break;
8069     }
8070     case SAA7134_BOARD_KWORLD_PCI_SBTVD_FULLSEG:
8071         saa_writel(SAA7134_GPIO_GPMODE0 >> 2, 0x4000);
8072         saa_writel(SAA7134_GPIO_GPSTATUS0 >> 2, 0x4000);
8073 
8074         saa7134_set_gpio(dev, 27, 0);
8075         break;
8076     } /* switch() */
8077 
8078     /* initialize tuner (don't do this when resuming) */
8079     if (!dev->insuspend && TUNER_ABSENT != dev->tuner_type) {
8080         int has_demod = (dev->tda9887_conf & TDA9887_PRESENT);
8081 
8082         /* Note: radio tuner address is always filled in,
8083            so we do not need to probe for a radio tuner device. */
8084         if (dev->radio_type != UNSET)
8085             v4l2_i2c_new_subdev(&dev->v4l2_dev,
8086                 &dev->i2c_adap, "tuner",
8087                 dev->radio_addr, NULL);
8088         if (has_demod)
8089             v4l2_i2c_new_subdev(&dev->v4l2_dev,
8090                 &dev->i2c_adap, "tuner",
8091                 0, v4l2_i2c_tuner_addrs(ADDRS_DEMOD));
8092         if (dev->tuner_addr == ADDR_UNSET) {
8093             enum v4l2_i2c_tuner_type type =
8094                 has_demod ? ADDRS_TV_WITH_DEMOD : ADDRS_TV;
8095 
8096             v4l2_i2c_new_subdev(&dev->v4l2_dev,
8097                 &dev->i2c_adap, "tuner",
8098                 0, v4l2_i2c_tuner_addrs(type));
8099         } else {
8100             v4l2_i2c_new_subdev(&dev->v4l2_dev,
8101                 &dev->i2c_adap, "tuner",
8102                 dev->tuner_addr, NULL);
8103         }
8104     }
8105 
8106     saa7134_tuner_setup(dev);
8107 
8108     switch (dev->board) {
8109     case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM:
8110     case SAA7134_BOARD_AVERMEDIA_CARDBUS_501:
8111     {
8112         struct v4l2_priv_tun_config tea5767_cfg;
8113         struct tea5767_ctrl ctl;
8114 
8115         dev->i2c_client.addr = 0xC0;
8116         /* set TEA5767(analog FM) defines */
8117         memset(&ctl, 0, sizeof(ctl));
8118         ctl.xtal_freq = TEA5767_HIGH_LO_13MHz;
8119         tea5767_cfg.tuner = TUNER_TEA5767;
8120         tea5767_cfg.priv  = &ctl;
8121         saa_call_all(dev, tuner, s_config, &tea5767_cfg);
8122         break;
8123     }
8124     } /* switch() */
8125 
8126     return 0;
8127 }