.name           = " *** UNKNOWN/GENERIC *** ",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 0 },
                .tuner_type     = UNSET,
                .name           = "MIRO PCTV",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Hauppauge (bt848)",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "STB, Gateway P/N 6000699 (bt848)",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Intel Create and Share PCI/ Smart Video Recorder III",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Diamond DTV2000",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 0 },
                .name           = "AVerMedia TVPhone",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 3,
                .muxsel         = { 2, 3, 1, 1 },
                .gpiomask       = 0x0f,
                .name           = "MATRIX-Vision MV-Delta",
                .video_inputs   = 5,
                .audio_inputs   = 1,
-               .tuner          = UNSET,
                .svhs           = 3,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0 },
                .gpiomux        = { 0 },
                .needs_tvaudio  = 1,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "Lifeview FlyVideo II (Bt848) LR26 / MAXI TV Video PCI2 LR26",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0xc00,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "IMS/IXmicro TurboTV",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Hauppauge (bt878)",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x0f, /* old: 7 */
                .muxsel         = { 2, 0, 1, 1 },
                .name           = "MIRO PCTV pro",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x3014f,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "ADS Technologies Channel Surfer TV (bt848)",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "AVerMedia TVCapture 98",
                .video_inputs   = 3,
                .audio_inputs   = 4,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Aimslab Video Highway Xtreme (VHX)",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Zoltrix TV-Max",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Prolink Pixelview PlayTV (bt878)",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x01fe00,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Leadtek WinView 601",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x8300f8,
                .muxsel         = { 2, 3, 1, 1,0 },
                .name           = "AVEC Intercapture",
                .video_inputs   = 3,
                .audio_inputs   = 2,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .gpiomask       = 0x8dff00,
                .muxsel         = { 2, 3, 1, 1 },
                .gpiomux        = { 0 },
                .no_msp34xx     = 1,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "CEI Raffles Card",
                .video_inputs   = 3,
                .audio_inputs   = 3,
-               .tuner          = 0,
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 1 },
                .tuner_type     = UNSET,
                .name           = "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50",
                .video_inputs   = 4,
                .audio_inputs   = 2,  /* tuner, line in */
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Askey CPH050/ Phoebe Tv Master + FM",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0xc00,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = UNSET,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, -1 },
                .name           = "Askey CPH05X/06X (bt878) [many vendors]",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0xe00,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x1f0fff,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Hauppauge WinCam newer (bt878)",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 3,
                .gpiomask       = 7,
                .muxsel         = { 2, 0, 1, 1 },
                .name           = "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50",
                .video_inputs   = 4,
                .audio_inputs   = 2,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Terratec TerraTV+ Version 1.1 (bt878)",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x1f0fff,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Imagenation PXC200",
                .video_inputs   = 5,
                .audio_inputs   = 1,
-               .tuner          = UNSET,
                .svhs           = 1, /* was: 4 */
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0},
                .gpiomux        = { 0 },
                .needs_tvaudio  = 1,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .muxsel_hook    = PXC200_muxsel,
                .name           = "Lifeview FlyVideo 98 LR50",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x1800,  /* 0x8dfe00 */
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Formac iProTV, Formac ProTV I (bt848)",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 3,
                .gpiomask       = 1,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Intel Create and Share PCI/ Smart Video Recorder III",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Terratec TerraTValue Version Bt878",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0xffff00,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Leadtek WinFast 2000/ WinFast 2000 XP",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 1, 0 }, /* TV, CVid, SVid, CVid over SVid connector */
                /* Alexander Varakin <avarakin@hotmail.com> [stereo version] */
                .name           = "Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II",
                .video_inputs   = 4,
                .audio_inputs   = 3,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner",
                .video_inputs   = 4,
                .audio_inputs   = 3,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Prolink PixelView PlayTV pro",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0xff,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Askey CPH06X TView99",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x551e00,
                .muxsel         = { 2, 3, 1, 0 },
                .name           = "Pinnacle PCTV Studio/Rave",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x03000F,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "AVerMedia TVPhone 98",
                .video_inputs   = 3,
                .audio_inputs   = 4,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "ProVideo PV951", /* pic16c54 */
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1},
                .name           = "Little OnAir TV",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0xe00b,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Sigma TVII-FM",
                .video_inputs   = 2,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = UNSET,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "MATRIX-Vision MV-Delta 2",
                .video_inputs   = 5,
                .audio_inputs   = 1,
-               .tuner          = UNSET,
                .svhs           = 3,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0 },
                .gpiomux        = { 0 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "Zoltrix Genie TV/FM",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0xbcf03f,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Terratec TV/Radio+",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x70000,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Askey CPH03x/ Dynalink Magic TView",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "IODATA GV-BCTV3/PCI",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x010f00,
                .muxsel         = {2, 3, 0, 0 },
                .name           = "Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP",
                .video_inputs   = 5,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 3,
                .gpiomask       = 0xAA0000,
                .muxsel         = { 2,3,1,1,-1 },
                .name           = "Eagle Wireless Capricorn2 (bt878A)",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 0, 1, 1 },
                .name           = "Pinnacle PCTV Studio Pro",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 3,
                .gpiomask       = 0x03000F,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS",
                .video_inputs   = 4,
                .audio_inputs   = 3,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x1c,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x18e0,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Askey CPH031/ BESTBUY Easy TV",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0xF,
                .muxsel         = { 2, 3, 1, 0 },
                .name           = "Lifeview FlyVideo 98FM LR50",
                .video_inputs   = 4,
                .audio_inputs   = 3,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "GrandTec 'Grand Video Capture' (Bt848)",
                .video_inputs   = 2,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = 1,
                .gpiomask       = 0,
                .muxsel         = { 3, 1 },
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_35,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "Askey CPH060/ Phoebe TV Master Only (No FM)",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0xe00,
                .muxsel         = { 2, 3, 1, 1},
                .name           = "Askey CPH03x TV Capturer",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x03000F,
                .muxsel         = { 2, 3, 1, 0 },
                .name           = "Modular Technology MM100PCTV",
                .video_inputs   = 2,
                .audio_inputs   = 2,
-               .tuner          = 0,
                .svhs           = UNSET,
                .gpiomask       = 11,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "AG Electronics GMV1",
                .video_inputs   = 2,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = 1,
                .gpiomask       = 0xF,
                .muxsel         = { 2, 2 },
                .no_msp34xx     = 1,
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "Askey CPH061/ BESTBUY Easy TV (bt878)",
                .video_inputs   = 3,
                .audio_inputs   = 2,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0xFF,
                .muxsel         = { 2, 3, 1, 0 },
                .name           = "ATI TV-Wonder",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0xf03f,
                .muxsel         = { 2, 3, 1, 0 },
                .name           = "ATI TV-Wonder VE",
                .video_inputs   = 2,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = UNSET,
                .gpiomask       = 1,
                .muxsel         = { 2, 3, 0, 1 },
                .name           = "Lifeview FlyVideo 2000S LR90",
                .video_inputs   = 3,
                .audio_inputs   = 3,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x18e0,
                .muxsel         = { 2, 3, 0, 1 },
                .name           = "Terratec TValueRadio",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0xffff00,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "IODATA GV-BCTV4/PCI",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x010f00,
                .muxsel         = {2, 3, 0, 0 },
                * sound problems with this card. */
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = UNSET,
                .gpiomask       = 0x4f8a00,
                /* 0x100000: 1=MSP enabled (0=disable again)
                * sound problems with this card. */
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = UNSET,
                .gpiomask       = 0x4f8a00,
                /* 0x100000: 1=MSP enabled (0=disable again)
                .name           = "Active Imaging AIMMS",
                .video_inputs   = 1,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
                .name           = "Prolink Pixelview PV-BT878P+ (Rev.4C,8E)",
                .video_inputs   = 3,
                .audio_inputs   = 4,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Lifeview FlyVideo 98EZ (capture only) LR51",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 1 }, /* AV1, AV2, SVHS, CVid adapter on SVHS */
                .pll            = PLL_28,
                .no_msp34xx     = 1,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM)",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x3f,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Sensoray 311",
                .video_inputs   = 5,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = 4,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0 },
                .gpiomux        = { 0 },
                .needs_tvaudio  = 0,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "RemoteVision MX (RV605)",
                .video_inputs   = 16,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .gpiomask       = 0x00,
                .gpiomask2      = 0x07ff,
                                0xd3, 0xb3, 0xc3, 0x63, 0x93, 0x53, 0x83, 0xa3 },
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .muxsel_hook    = rv605_muxsel,
                .name           = "Powercolor MTV878/ MTV878R/ MTV878F",
                .video_inputs   = 3,
                .audio_inputs   = 2,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x1C800F,  /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset */
                .muxsel         = { 2, 1, 1, },
                .name           = "Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x140007,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "GrandTec Multi Capture Card (Bt878)",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0 },
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF",
                .video_inputs   = 4,
                .audio_inputs   = 3,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },   /* Tuner, SVid, SVHS, SVid to SVHS connector */
                .name           = "Hauppauge WinTV PVR",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .muxsel         = { 2, 0, 1, 1 },
                .needs_tvaudio  = 1,
                .name           = "IODATA GV-BCTV5/PCI",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x0f0f80,
                .muxsel         = {2, 3, 1, 0 },
                .name           = "Osprey 100/150 (878)", /* 0x1(2|3)-45C6-C1 */
                .video_inputs   = 4,                  /* id-inputs-clock */
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = 3,
                .muxsel         = { 3, 2, 0, 1 },
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .name           = "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */
                .video_inputs   = 3,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = 2,
                .muxsel         = { 2, 3, 1 },
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .name           = "Osprey 101 (848)", /* 0x05-40C0-C1 */
                .video_inputs   = 2,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = 1,
                .muxsel         = { 3, 1 },
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .name           = "Osprey 101/151",       /* 0x1(4|5)-0004-C4 */
                .video_inputs   = 1,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .muxsel         = { 0 },
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .name           = "Osprey 101/151 w/ svid",  /* 0x(16|17|20)-00C4-C1 */
                .video_inputs   = 2,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = 1,
                .muxsel         = { 0, 1 },
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .name           = "Osprey 200/201/250/251",  /* 0x1(8|9|E|F)-0004-C4 */
                .video_inputs   = 1,
                .audio_inputs   = 1,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .muxsel         = { 0 },
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .name           = "Osprey 200/250",   /* 0x1(A|B)-00C4-C1 */
                .video_inputs   = 2,
                .audio_inputs   = 1,
-               .tuner          = UNSET,
                .svhs           = 1,
                .muxsel         = { 0, 1 },
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .name           = "Osprey 210/220/230",   /* 0x1(A|B)-04C0-C1 */
                .video_inputs   = 2,
                .audio_inputs   = 1,
-               .tuner          = UNSET,
                .svhs           = 1,
                .muxsel         = { 2, 3 },
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .name           = "Osprey 500",   /* 500 */
                .video_inputs   = 2,
                .audio_inputs   = 1,
-               .tuner          = UNSET,
                .svhs           = 1,
                .muxsel         = { 2, 3 },
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .name           = "Osprey 540",   /* 540 */
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = UNSET,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .name           = "Osprey 2000",  /* 2000 */
                .video_inputs   = 2,
                .audio_inputs   = 1,
-               .tuner          = UNSET,
                .svhs           = 1,
                .muxsel         = { 2, 3 },
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .name           = "IDS Eagle",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .svhs           = UNSET,
                .video_inputs   = 2,
                .audio_inputs   = 0,
                .svhs           = 1,
-               .tuner          = UNSET,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .name           = "Formac ProTV II (bt878)",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 3,
                .gpiomask       = 2,
                /* TV, Comp1, Composite over SVID con, SVID */
                .name           = "MachTV",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = UNSET,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1},
                .name           = "Euresys Picolo",
                .video_inputs   = 3,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = 2,
                .gpiomask       = 0,
                .no_msp34xx     = 1,
                .no_tda7432     = 1,
                .muxsel         = { 2, 0, 1},
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "ProVideo PV150", /* 0x4f */
                .video_inputs   = 2,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .gpiomask       = 0,
                .muxsel         = { 2, 3 },
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "AD-TVK503", /* 0x63 */
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x001e8007,
                .muxsel         = { 2, 3, 1, 0 },
                .name           = "Hercules Smart TV Stereo",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x00,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Pace TV & Radio Card",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 1 }, /* Tuner, CVid, SVid, CVid over SVid connector */
                .gpiomask       = 0,
                .name           = "IVC-200",
                .video_inputs   = 1,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .svhs           = UNSET,
                .name           = "IVCE-8784",
                .video_inputs   = 1,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .svhs           = UNSET,
                .name           = "Grand X-Guard / Trust 814PCI",
                .video_inputs   = 16,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
        [BTTV_BOARD_NEBULA_DIGITV] = {
                .name           = "Nebula Electronics DigiTV",
                .video_inputs   = 1,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .muxsel         = { 2, 3, 1, 0 },
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .has_dvb        = 1,
                .name           = "ProVideo PV143",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0 },
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "PHYTEC VD-009-X1 VD-011 MiniDIN (bt878)",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET, /* card has no tuner */
                .svhs           = 3,
                .gpiomask       = 0x00,
                .muxsel         = { 2, 3, 1, 0 },
                .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "PHYTEC VD-009-X1 VD-011 Combi (bt878)",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET, /* card has no tuner */
                .svhs           = 3,
                .gpiomask       = 0x00,
                .muxsel         = { 2, 3, 1, 1 },
                .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "PHYTEC VD-009 MiniDIN (bt878)",
                .video_inputs   = 10,
                .audio_inputs   = 0,
-               .tuner          = UNSET, /* card has no tuner */
                .svhs           = 9,
                .gpiomask       = 0x00,
                .gpiomask2      = 0x03, /* gpiomask2 defines the bits used to switch audio
                .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "PHYTEC VD-009 Combi (bt878)",
                .video_inputs   = 10,
                .audio_inputs   = 0,
-               .tuner          = UNSET, /* card has no tuner */
                .svhs           = 9,
                .gpiomask       = 0x00,
                .gpiomask2      = 0x03, /* gpiomask2 defines the bits used to switch audio
                .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "IVC-100",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .svhs           = UNSET,
                .name           = "IVC-120G",
                .video_inputs   = 16,
                .audio_inputs   = 0,    /* card has no audio */
-               .tuner          = UNSET,   /* card has no tuner */
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .svhs           = UNSET,   /* card has no svhs */
                .name           = "pcHDTV HD-2000 TV",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 0 },
                .tuner_type     = TUNER_PHILIPS_FCV1236D,
                .video_inputs   = 3,
                .audio_inputs   = 0,
                .svhs           = 1,
-               .tuner          = UNSET,
                .muxsel         = { 3, 1, 1, 3 }, /* Vid In, SVid In, Vid over SVid in connector */
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .name           = "Teppro TEV-560/InterVision IV-560",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "SIMUS GVC1100",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = UNSET,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
                /* Carlos Silva r3pek@r3pek.homelinux.org || card 0x75 */
                .name           = "NGS NGSTV+",
                .video_inputs   = 3,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x008007,
                .muxsel         = { 2, 3, 0, 0 },
                .name           = "LMLBT4",
                .video_inputs   = 4, /* IN1,IN2,IN3,IN4 */
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .muxsel         = { 2, 3, 1, 0 },
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
                .needs_tvaudio  = 0,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "Tekram M205 PRO",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .name           = "Conceptronic CONTVFMi",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x008007,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Euresys Picolo Tetra",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .gpiomask       = 0,
                .gpiomask2      = 0x3C<<16,/*Set the GPIO[18]->GPIO[21] as output pin.==> drive the video inputs through analog multiplexers*/
                .pll            = PLL_28,
                .needs_tvaudio  = 0,
                .muxsel_hook    = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "Spirit TV Tuner",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x0000000f,
                .muxsel         = { 2, 1, 1 },
                .name           = "AVerMedia AVerTV DVB-T 771",
                .video_inputs   = 2,
                .svhs           = 1,
-               .tuner          = UNSET,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                /* Based on the Nebula card data - added remote and new card number - BTTV_BOARD_AVDVBT_761, see also ir-kbd-gpio.c */
                .name           = "AverMedia AverTV DVB-T 761",
                .video_inputs   = 2,
-               .tuner          = UNSET,
                .svhs           = 1,
                .muxsel         = { 3, 1, 2, 0 }, /* Comp0, S-Video, ?, ? */
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .has_dvb        = 1,
                .name             = "MATRIX Vision Sigma-SQ",
                .video_inputs     = 16,
                .audio_inputs     = 0,
-               .tuner            = UNSET,
                .svhs             = UNSET,
                .gpiomask         = 0x0,
                .muxsel           = { 2, 2, 2, 2, 2, 2, 2, 2,
                .gpiomux          = { 0 },
                .no_msp34xx       = 1,
                .pll              = PLL_28,
-               .tuner_type       = UNSET,
+               .tuner_type       = TUNER_ABSENT,
                .tuner_addr       = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name             = "MATRIX Vision Sigma-SLC",
                .video_inputs     = 4,
                .audio_inputs     = 0,
-               .tuner            = UNSET,
                .svhs             = UNSET,
                .gpiomask         = 0x0,
                .muxsel           = { 2, 2, 2, 2 },
                .gpiomux          = { 0 },
                .no_msp34xx       = 1,
                .pll              = PLL_28,
-               .tuner_type       = UNSET,
+               .tuner_type       = TUNER_ABSENT,
                .tuner_addr       = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "APAC Viewcomp 878(AMAX)",
                .video_inputs   = 2,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = UNSET,
                .gpiomask       = 0xFF,
                .muxsel         = { 2, 3, 1, 1 },
        [BTTV_BOARD_DVICO_DVBT_LITE] = {
                /* Chris Pascoe <c.pascoe@itee.uq.edu.au> */
                .name           = "DViCO FusionHDTV DVB-T Lite",
-               .tuner          = UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
                .pll            = PLL_28,
                .no_video       = 1,
                .has_dvb        = 1,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "V-Gear MyVCD",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x3f,
                .muxsel         = {2, 3, 1, 0 },
                .name           = "Super TV Tuner",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 0 },
                .tuner_type     = TUNER_PHILIPS_NTSC,
                .name           = "Tibet Systems 'Progress DVR' CS16",
                .video_inputs   = 16,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .muxsel         = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 },
                .pll            = PLL_28,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .muxsel_hook    = tibetCS16_muxsel,
                .name           = "Kodicom 4400R (master)",
                .video_inputs   = 16,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .svhs           = UNSET,
                .name           = "Kodicom 4400R (slave)",
                .video_inputs   = 16,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .svhs           = UNSET,
                .name           = "Adlink RTV24",
                .video_inputs   = 4,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 0 },
                .tuner_type     = UNSET,
        [BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE] = {
                /* Michael Krufky <mkrufky@m1k.net> */
                .name           = "DViCO FusionHDTV 5 Lite",
-               .tuner          = 0,
                .tuner_type     = TUNER_LG_TDVS_H06XF, /* TDVS-H064F */
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .name           = "Acorp Y878F",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x01fe00,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Conceptronic CTVFMi v2",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x001c0007,
                .muxsel         = { 2, 3, 1, 1 },
                .name          = "Prolink Pixelview PV-BT878P+ (Rev.2E)",
                .video_inputs  = 5,
                .audio_inputs  = 1,
-               .tuner         = 0,
                .svhs          = 3,
                .gpiomask      = 0x01fe00,
                .muxsel        = { 2,3,1,1,-1 },
                .name           = "Prolink PixelView PlayTV MPEG2 PV-M4900",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x3f,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Osprey 440",
                .video_inputs   = 4,
                .audio_inputs   = 2, /* this is meaningless */
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .muxsel         = { 2, 3, 0, 1 }, /* 3,0,1 are guesses */
                .gpiomask       = 0x303,
                .gpiomute       = 0x000, /* int + 32kHz */
                .gpiomux        = { 0, 0, 0x000, 0x100},
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .name           = "Asound Skyeye PCTV",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Sabrent TV-FM (bttv version)",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x108007,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Hauppauge ImpactVCB (bt878)",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .gpiomask       = 0x0f, /* old: 7 */
                .muxsel         = { 0, 1, 3, 2 }, /* Composite 0-3 */
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "MagicTV", /* rebranded MachTV */
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "SSAI Security Video Interface",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = UNSET,
                .muxsel         = { 0, 1, 2, 3 },
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "SSAI Ultrasound Video Interface",
                .video_inputs   = 2,
                .audio_inputs   = 0,
-               .tuner          = UNSET,
                .svhs           = 1,
                .muxsel         = { 2, 0, 1, 3 },
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
        /* ---- card 0x94---------------------------------- */
        [BTTV_BOARD_DVICO_FUSIONHDTV_2] = {
                .name           = "DViCO FusionHDTV 2",
-               .tuner          = 0,
                .tuner_type     = TUNER_PHILIPS_FCV1236D,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .name           = "Typhoon TV-Tuner PCI (50684)",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x3014f,
                .muxsel         = { 2, 3, 1, 1 },
                .name             = "Geovision GV-600",
                .video_inputs     = 16,
                .audio_inputs     = 0,
-               .tuner            = UNSET,
                .svhs             = UNSET,
                .gpiomask         = 0x0,
                .muxsel           = { 2, 2, 2, 2, 2, 2, 2, 2,
                .gpiomux          = { 0 },
                .no_msp34xx       = 1,
                .pll              = PLL_28,
-               .tuner_type       = UNSET,
+               .tuner_type       = TUNER_ABSENT,
                .tuner_addr       = ADDR_UNSET,
                .radio_addr       = ADDR_UNSET,
        },
                .name           = "Kozumi KTV-01C",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                .gpiomask       = 0x008007,
                .muxsel         = { 2, 3, 1, 1 },
                .name           = "Encore ENL TV-FM-2",
                .video_inputs   = 3,
                .audio_inputs   = 1,
-               .tuner          = 0,
                .svhs           = 2,
                /* bit 6          -> IR disabled
                   bit 18/17 = 00 -> mute
                .name           = "PHYTEC VD-012 (bt878)",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET, /* card has no tuner */
                .svhs           = UNSET, /* card has no s-video */
                .gpiomask       = 0x00,
                .muxsel         = { 0, 2, 3, 1 },
                .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "PHYTEC VD-012-X1 (bt878)",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET, /* card has no tuner */
                .svhs           = 3,
                .gpiomask       = 0x00,
                .muxsel         = { 2, 3, 1 },
                .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        },
                .name           = "PHYTEC VD-012-X2 (bt878)",
                .video_inputs   = 4,
                .audio_inputs   = 0,
-               .tuner          = UNSET, /* card has no tuner */
                .svhs           = 3,
                .gpiomask       = 0x00,
                .muxsel         = { 3, 2, 1 },
                .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
-               .tuner_type     = UNSET,
+               .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        }
                addr = bttv_tvcards[btv->c.type].tuner_addr;
 
        if (UNSET != bttv_tvcards[btv->c.type].tuner_type)
-               if(UNSET == btv->tuner_type)
+               if (UNSET == btv->tuner_type)
                        btv->tuner_type = bttv_tvcards[btv->c.type].tuner_type;
        if (UNSET != tuner[btv->c.nr])
                btv->tuner_type = tuner[btv->c.nr];
 
-       if (btv->tuner_type == TUNER_ABSENT ||
-           bttv_tvcards[btv->c.type].tuner == UNSET)
+       if (btv->tuner_type == TUNER_ABSENT)
                printk(KERN_INFO "bttv%d: tuner absent\n", btv->c.nr);
        else if(btv->tuner_type == UNSET)
                printk(KERN_WARNING "bttv%d: tuner type unset\n", btv->c.nr);
                printk(KERN_INFO "bttv%d: tuner type=%d\n", btv->c.nr,
                       btv->tuner_type);
 
-       if (btv->tuner_type != UNSET) {
+       if (UNSET == btv->tuner_type)
+               btv->tuner_type = TUNER_ABSENT;
+
+       if (btv->tuner_type != TUNER_ABSENT) {
                struct tuner_setup tun_setup;
 
+               /* Load tuner module before issuing tuner config call! */
+               if (autoload)
+                       request_module("tuner");
+
                tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV;
                tun_setup.type = btv->tuner_type;
                tun_setup.addr = addr;
 
+               if (bttv_tvcards[btv->c.type].has_radio)
+                       tun_setup.mode_mask |= T_RADIO;
+
                bttv_call_i2c_clients(btv, TUNER_SET_TYPE_ADDR, &tun_setup);
        }
 
        if (!autoload)
                return;
 
-       if (bttv_tvcards[btv->c.type].tuner == UNSET)
+       if (btv->tuner_type == TUNER_ABSENT)
                return;  /* no tuner or related drivers to load */
 
        /* try to detect audio/fader chips */
 
        if (bttv_tvcards[btv->c.type].needs_tvaudio)
                request_module("tvaudio");
-
-       if (btv->tuner_type != UNSET && btv->tuner_type != TUNER_ABSENT)
-               request_module("tuner");
 }