V4L/DVB (10561): bttv: store card database more efficiently
authorTrent Piepho <xyzzy@speakeasy.org>
Thu, 29 Jan 2009 00:32:59 +0000 (21:32 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 30 Mar 2009 15:42:47 +0000 (12:42 -0300)
The bttv card database is quite large and the data structure used to store
it wasn't very efficient.  Most of the field are only used at card
initialization time so it doesn't matter if they aren't efficient to
access.

Overall the changes reduce code size by 60 bytes in ia32.  The data size is
decreased by 5024 byes.  It is probably even more for 64-bit kernels.

Move the fields in the struct around to be sorted from largest to smallest.
This saves on padding space used for alignment.

Get rid of the unused digital_mode field.  Leave the setting as a comment
in the few cards entries that set it, in case someone ever writes the code.

Get rid of the unused audio_inputs field.  Leave the values in the card
entries in case someone ever writes code that might use it.

Get ride of the unused radio_addr field.  No card entries even set it to
anything interesting so it's not left as comments.  All the code that used
it was removed in commit v2.6.14-3466-g291d1d7 from Nov 8th 2005.

Reduce video_inputs to u8 as no card has more than 255 inputs (the most is
16).

Change tuner_addr to u8.  I2C addresses are only seven bits and 255 means
ADDR_UNSET, so everything fits.

Make has_radio a one bit flag.

Make the pll setting a two bit field.

Reduce svhs to four bits as no card has an s-video input above 9.  Change
the value for no s-video input from UNSET (which is -1U and out of range of
four bits) to NO_SVHS (which is now 15).

Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/bt8xx/bttv-cards.c
drivers/media/video/bt8xx/bttv.h

index edf8d2505f0b810ade0b65750d14a01c847dc360..f49e6e6866283ffee8dd7bf8e795d4682fbe2275 100644 (file)
@@ -320,17 +320,15 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_UNKNOWN] = {
                .name           = " *** UNKNOWN/GENERIC *** ",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 0 },
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_MIRO] = {
                .name           = "MIRO PCTV",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
@@ -339,12 +337,11 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_HAUPPAUGE] = {
                .name           = "Hauppauge (bt848)",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
@@ -353,12 +350,11 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_STB] = {
                .name           = "STB, Gateway P/N 6000699 (bt848)",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
@@ -368,7 +364,6 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = TUNER_PHILIPS_NTSC,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
                .has_radio      = 1,
        },
@@ -377,7 +372,7 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_INTEL] = {
                .name           = "Intel Create and Share PCI/ Smart Video Recorder III",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1 },
@@ -385,12 +380,11 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_DIAMOND] = {
                .name           = "Diamond DTV2000",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 0 },
@@ -399,12 +393,11 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_AVERMEDIA] = {
                .name           = "AVerMedia TVPhone",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 3,
                .muxsel         = { 2, 3, 1, 1 },
                .gpiomask       = 0x0f,
@@ -413,14 +406,13 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .audio_mode_gpio= avermedia_tvphone_audio,
                .has_remote     = 1,
        },
        [BTTV_BOARD_MATRIX_VISION] = {
                .name           = "MATRIX-Vision MV-Delta",
                .video_inputs   = 5,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 3,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0 },
@@ -428,14 +420,13 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x08 ---------------------------------- */
        [BTTV_BOARD_FLYVIDEO] = {
                .name           = "Lifeview FlyVideo II (Bt848) LR26 / MAXI TV Video PCI2 LR26",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0xc00,
                .muxsel         = { 2, 3, 1, 1 },
@@ -445,12 +436,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_TURBOTV] = {
                .name           = "IMS/IXmicro TurboTV",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 1 },
@@ -459,12 +449,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_HAUPPAUGE878] = {
                .name           = "Hauppauge (bt878)",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x0f, /* old: 7 */
                .muxsel         = { 2, 0, 1, 1 },
@@ -474,12 +463,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_MIROPRO] = {
                .name           = "MIRO PCTV pro",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x3014f,
                .muxsel         = { 2, 3, 1, 1 },
@@ -488,14 +476,13 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x0c ---------------------------------- */
        [BTTV_BOARD_ADSTECH_TV] = {
                .name           = "ADS Technologies Channel Surfer TV (bt848)",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
@@ -503,12 +490,11 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_AVERMEDIA98] = {
                .name           = "AVerMedia TVCapture 98",
                .video_inputs   = 3,
-               .audio_inputs   = 4,
+               /* .audio_inputs= 4, */
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
@@ -518,14 +504,13 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .audio_mode_gpio= avermedia_tv_stereo_audio,
                .no_gpioirq     = 1,
        },
        [BTTV_BOARD_VHX] = {
                .name           = "Aimslab Video Highway Xtreme (VHX)",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
@@ -535,12 +520,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_ZOLTRIX] = {
                .name           = "Zoltrix TV-Max",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
@@ -549,14 +533,13 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x10 ---------------------------------- */
        [BTTV_BOARD_PIXVIEWPLAYTV] = {
                .name           = "Prolink Pixelview PlayTV (bt878)",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x01fe00,
                .muxsel         = { 2, 3, 1, 1 },
@@ -567,12 +550,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_WINVIEW_601] = {
                .name           = "Leadtek WinView 601",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x8300f8,
                .muxsel         = { 2, 3, 1, 1,0 },
@@ -581,14 +563,13 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .volume_gpio    = winview_volume,
                .has_radio      = 1,
        },
        [BTTV_BOARD_AVEC_INTERCAP] = {
                .name           = "AVEC Intercapture",
                .video_inputs   = 3,
-               .audio_inputs   = 2,
+               /* .audio_inputs= 2, */
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1 },
@@ -596,37 +577,34 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_LIFE_FLYKIT] = {
                .name           = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
-               .svhs           = UNSET,
+               /* .audio_inputs= 1, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 0x8dff00,
                .muxsel         = { 2, 3, 1, 1 },
                .gpiomux        = { 0 },
                .no_msp34xx     = 1,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x14 ---------------------------------- */
        [BTTV_BOARD_CEI_RAFFLES] = {
                .name           = "CEI Raffles Card",
                .video_inputs   = 3,
-               .audio_inputs   = 3,
+               /* .audio_inputs= 3, */
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 1 },
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_CONFERENCETV] = {
                .name           = "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50",
                .video_inputs   = 4,
-               .audio_inputs   = 2,  /* tuner, line in */
+               /* .audio_inputs= 2,  tuner, line in */
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
@@ -635,12 +613,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL_I,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_PHOEBE_TVMAS] = {
                .name           = "Askey CPH050/ Phoebe Tv Master + FM",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0xc00,
                .muxsel         = { 2, 3, 1, 1 },
@@ -650,29 +627,27 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_MODTEC_205] = {
                .name           = "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
-               .svhs           = UNSET,
+               /* .audio_inputs= 1, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, -1 },
-               .digital_mode   = DIGITAL_MODE_CAMERA,
+               /* .digital_mode= DIGITAL_MODE_CAMERA, */
                .gpiomux        = { 0, 0, 0, 0 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_ALPS_TSBB5_PAL_I,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x18 ---------------------------------- */
        [BTTV_BOARD_MAGICTVIEW061] = {
                .name           = "Askey CPH05X/06X (bt878) [many vendors]",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0xe00,
                .muxsel         = { 2, 3, 1, 1 },
@@ -682,13 +657,12 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_remote     = 1,
        },
        [BTTV_BOARD_VOBIS_BOOSTAR] = {
                .name           = "Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x1f0fff,
                .muxsel         = { 2, 3, 1, 1 },
@@ -697,13 +671,12 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .audio_mode_gpio= terratv_audio,
        },
        [BTTV_BOARD_HAUPPAUG_WCAM] = {
                .name           = "Hauppauge WinCam newer (bt878)",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 3,
                .gpiomask       = 7,
                .muxsel         = { 2, 0, 1, 1 },
@@ -712,12 +685,11 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_MAXI] = {
                .name           = "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50",
                .video_inputs   = 4,
-               .audio_inputs   = 2,
+               /* .audio_inputs= 2, */
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
@@ -726,14 +698,13 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_SECAM,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x1c ---------------------------------- */
        [BTTV_BOARD_TERRATV] = {
                .name           = "Terratec TerraTV+ Version 1.1 (bt878)",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x1f0fff,
                .muxsel         = { 2, 3, 1, 1 },
@@ -742,7 +713,6 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .audio_mode_gpio= terratv_audio,
                /* GPIO wiring:
                External 20 pin connector (for Active Radio Upgrade board)
@@ -780,7 +750,7 @@ struct tvcard bttv_tvcards[] = {
                /* Jannik Fritsch <jannik@techfak.uni-bielefeld.de> */
                .name           = "Imagenation PXC200",
                .video_inputs   = 5,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 1, /* was: 4 */
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0},
@@ -788,14 +758,13 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .muxsel_hook    = PXC200_muxsel,
 
        },
        [BTTV_BOARD_FLYVIDEO_98] = {
                .name           = "Lifeview FlyVideo 98 LR50",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x1800,  /* 0x8dfe00 */
                .muxsel         = { 2, 3, 1, 1 },
@@ -804,12 +773,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_IPROTV] = {
                .name           = "Formac iProTV, Formac ProTV I (bt848)",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 3,
                .gpiomask       = 1,
                .muxsel         = { 2, 3, 1, 1 },
@@ -817,14 +785,13 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x20 ---------------------------------- */
        [BTTV_BOARD_INTEL_C_S_PCI] = {
                .name           = "Intel Create and Share PCI/ Smart Video Recorder III",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1 },
@@ -832,12 +799,11 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_TERRATVALUE] = {
                .name           = "Terratec TerraTValue Version Bt878",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0xffff00,
                .muxsel         = { 2, 3, 1, 1 },
@@ -847,12 +813,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_WINFAST2000] = {
                .name           = "Leadtek WinFast 2000/ WinFast 2000 XP",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 1, 0 }, /* TV, CVid, SVid, CVid over SVid connector */
                /* Alexander Varakin <avarakin@hotmail.com> [stereo version] */
@@ -875,14 +840,13 @@ struct tvcard bttv_tvcards[] = {
                .has_radio      = 1,
                .tuner_type     = TUNER_PHILIPS_PAL, /* default for now, gpio reads BFFF06 for Pal bg+dk */
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .audio_mode_gpio= winfast2000_audio,
                .has_remote     = 1,
        },
        [BTTV_BOARD_CHRONOS_VS2] = {
                .name           = "Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II",
                .video_inputs   = 4,
-               .audio_inputs   = 3,
+               /* .audio_inputs= 3, */
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
@@ -891,14 +855,13 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x24 ---------------------------------- */
        [BTTV_BOARD_TYPHOON_TVIEW] = {
                .name           = "Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner",
                .video_inputs   = 4,
-               .audio_inputs   = 3,
+               /* .audio_inputs= 3, */
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
@@ -907,13 +870,12 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_radio      = 1,
        },
        [BTTV_BOARD_PXELVWPLTVPRO] = {
                .name           = "Prolink PixelView PlayTV pro",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0xff,
                .muxsel         = { 2, 3, 1, 1 },
@@ -923,12 +885,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_MAGICTVIEW063] = {
                .name           = "Askey CPH06X TView99",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x551e00,
                .muxsel         = { 2, 3, 1, 0 },
@@ -938,13 +899,12 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL_I,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_remote     = 1,
        },
        [BTTV_BOARD_PINNACLE] = {
                .name           = "Pinnacle PCTV Studio/Rave",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x03000F,
                .muxsel         = { 2, 3, 1, 1 },
@@ -954,14 +914,13 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x28 ---------------------------------- */
        [BTTV_BOARD_STB2] = {
                .name           = "STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
@@ -971,14 +930,13 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = TUNER_PHILIPS_NTSC,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
                .has_radio      = 1,
        },
        [BTTV_BOARD_AVPHONE98] = {
                .name           = "AVerMedia TVPhone 98",
                .video_inputs   = 3,
-               .audio_inputs   = 4,
+               /* .audio_inputs= 4, */
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
@@ -987,14 +945,13 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_radio      = 1,
                .audio_mode_gpio= avermedia_tvphone_audio,
        },
        [BTTV_BOARD_PV951] = {
                .name           = "ProVideo PV951", /* pic16c54 */
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1},
@@ -1004,12 +961,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL_I,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_ONAIR_TV] = {
                .name           = "Little OnAir TV",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0xe00b,
                .muxsel         = { 2, 3, 1, 1 },
@@ -1018,15 +974,14 @@ struct tvcard bttv_tvcards[] = {
                .no_msp34xx     = 1,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x2c ---------------------------------- */
        [BTTV_BOARD_SIGMA_TVII_FM] = {
                .name           = "Sigma TVII-FM",
                .video_inputs   = 2,
-               .audio_inputs   = 1,
-               .svhs           = UNSET,
+               /* .audio_inputs= 1, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 1 },
                .gpiomux        = { 1, 1, 0, 2 },
@@ -1035,12 +990,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_NONE,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_MATRIX_VISION2] = {
                .name           = "MATRIX-Vision MV-Delta 2",
                .video_inputs   = 5,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 3,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0 },
@@ -1049,12 +1003,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_ZOLTRIX_GENIE] = {
                .name           = "Zoltrix Genie TV/FM",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0xbcf03f,
                .muxsel         = { 2, 3, 1, 1 },
@@ -1064,12 +1017,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_4039FR5_NTSC,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_TERRATVRADIO] = {
                .name           = "Terratec TV/Radio+",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x70000,
                .muxsel         = { 2, 3, 1, 1 },
@@ -1080,7 +1032,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_35,
                .tuner_type     = TUNER_PHILIPS_PAL_I,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_radio      = 1,
        },
 
@@ -1088,7 +1039,7 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_DYNALINK] = {
                .name           = "Askey CPH03x/ Dynalink Magic TView",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
@@ -1098,12 +1049,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_GVBCTV3PCI] = {
                .name           = "IODATA GV-BCTV3/PCI",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x010f00,
                .muxsel         = {2, 3, 0, 0 },
@@ -1112,24 +1062,22 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ALPS_TSHC6_NTSC,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .audio_mode_gpio= gvbctv3pci_audio,
        },
        [BTTV_BOARD_PXELVWPLTVPAK] = {
                .name           = "Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP",
                .video_inputs   = 5,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 3,
                .gpiomask       = 0xAA0000,
-               .muxsel         = { 2,3,1,1,-1 },
-               .digital_mode   = DIGITAL_MODE_CAMERA,
+               .muxsel         = { 2, 3, 1, 1, -1 },
+               /* .digital_mode= DIGITAL_MODE_CAMERA, */
                .gpiomux        = { 0x20000, 0, 0x80000, 0x80000 },
                .gpiomute       = 0xa8000,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL_I,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_remote     = 1,
                /* GPIO wiring: (different from Rev.4C !)
                        GPIO17: U4.A0 (first hef4052bt)
@@ -1144,7 +1092,7 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_EAGLE] = {
                .name           = "Eagle Wireless Capricorn2 (bt878A)",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 0, 1, 1 },
@@ -1153,7 +1101,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET /* TUNER_ALPS_TMDH2_NTSC */,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x34 ---------------------------------- */
@@ -1161,7 +1108,7 @@ struct tvcard bttv_tvcards[] = {
                /* David Härdeman <david@2gen.com> */
                .name           = "Pinnacle PCTV Studio Pro",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 3,
                .gpiomask       = 0x03000F,
                .muxsel         = { 2, 3, 1, 1 },
@@ -1180,14 +1127,13 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_TVIEW_RDS_FM] = {
                /* Claas Langbehn <claas@bigfoot.com>,
                Sven Grothklags <sven@upb.de> */
                .name           = "Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS",
                .video_inputs   = 4,
-               .audio_inputs   = 3,
+               /* .audio_inputs= 3, */
                .svhs           = 2,
                .gpiomask       = 0x1c,
                .muxsel         = { 2, 3, 1, 1 },
@@ -1197,7 +1143,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_radio      = 1,
        },
        [BTTV_BOARD_LIFETEC_9415] = {
@@ -1208,7 +1153,7 @@ struct tvcard bttv_tvcards[] = {
                        options tuner type=5 */
                .name           = "Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x18e0,
                .muxsel         = { 2, 3, 1, 1 },
@@ -1221,14 +1166,13 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_BESTBUY_EASYTV] = {
                /* Miguel Angel Alvarez <maacruz@navegalia.com>
                old Easy TV BT848 version (model CPH031) */
                .name           = "Askey CPH031/ BESTBUY Easy TV",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0xF,
                .muxsel         = { 2, 3, 1, 0 },
@@ -1238,7 +1182,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x38 ---------------------------------- */
@@ -1246,7 +1189,7 @@ struct tvcard bttv_tvcards[] = {
                /* Gordon Heydon <gjheydon@bigfoot.com ('98) */
                .name           = "Lifeview FlyVideo 98FM LR50",
                .video_inputs   = 4,
-               .audio_inputs   = 3,
+               /* .audio_inputs= 3, */
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
@@ -1255,7 +1198,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
                /* This is the ultimate cheapo capture card
                * just a BT848A on a small PCB!
@@ -1263,7 +1205,7 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_GRANDTEC] = {
                .name           = "GrandTec 'Grand Video Capture' (Bt848)",
                .video_inputs   = 2,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 1,
                .gpiomask       = 0,
                .muxsel         = { 3, 1 },
@@ -1273,13 +1215,12 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_35,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_ASKEY_CPH060] = {
                /* Daniel Herrington <daniel.herrington@home.com> */
                .name           = "Askey CPH060/ Phoebe TV Master Only (No FM)",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0xe00,
                .muxsel         = { 2, 3, 1, 1},
@@ -1289,13 +1230,12 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_4036FY5_NTSC,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_ASKEY_CPH03X] = {
                /* Matti Mottus <mottus@physic.ut.ee> */
                .name           = "Askey CPH03x TV Capturer",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x03000F,
                .muxsel         = { 2, 3, 1, 0 },
@@ -1304,7 +1244,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x3c ---------------------------------- */
@@ -1312,8 +1251,8 @@ struct tvcard bttv_tvcards[] = {
                /* Philip Blundell <philb@gnu.org> */
                .name           = "Modular Technology MM100PCTV",
                .video_inputs   = 2,
-               .audio_inputs   = 2,
-               .svhs           = UNSET,
+               /* .audio_inputs= 2, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 11,
                .muxsel         = { 2, 3, 1, 1 },
                .gpiomux        = { 2, 0, 0, 1 },
@@ -1321,13 +1260,12 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_35,
                .tuner_type     = TUNER_TEMIC_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_GMV1] = {
                /* Adrian Cox <adrian@humboldt.co.uk */
                .name           = "AG Electronics GMV1",
                .video_inputs   = 2,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 1,
                .gpiomask       = 0xF,
                .muxsel         = { 2, 2 },
@@ -1337,7 +1275,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_BESTBUY_EASYTV2] = {
                /* Miguel Angel Alvarez <maacruz@navegalia.com>
@@ -1345,7 +1282,7 @@ struct tvcard bttv_tvcards[] = {
                special thanks to Informatica Mieres for providing the card */
                .name           = "Askey CPH061/ BESTBUY Easy TV (bt878)",
                .video_inputs   = 3,
-               .audio_inputs   = 2,
+               /* .audio_inputs= 2, */
                .svhs           = 2,
                .gpiomask       = 0xFF,
                .muxsel         = { 2, 3, 1, 0 },
@@ -1355,13 +1292,12 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_ATI_TVWONDER] = {
                /* Lukas Gebauer <geby@volny.cz> */
                .name           = "ATI TV-Wonder",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0xf03f,
                .muxsel         = { 2, 3, 1, 0 },
@@ -1370,7 +1306,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_4006FN5_MULTI_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x40 ---------------------------------- */
@@ -1378,8 +1313,8 @@ struct tvcard bttv_tvcards[] = {
                /* Lukas Gebauer <geby@volny.cz> */
                .name           = "ATI TV-Wonder VE",
                .video_inputs   = 2,
-               .audio_inputs   = 1,
-               .svhs           = UNSET,
+               /* .audio_inputs= 1, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 1,
                .muxsel         = { 2, 3, 0, 1 },
                .gpiomux        = { 0, 0, 1, 0 },
@@ -1387,13 +1322,12 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_4006FN5_MULTI_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_FLYVIDEO2000] = {
                /* DeeJay <deejay@westel900.net (2000S) */
                .name           = "Lifeview FlyVideo 2000S LR90",
                .video_inputs   = 3,
-               .audio_inputs   = 3,
+               /* .audio_inputs= 3, */
                .svhs           = 2,
                .gpiomask       = 0x18e0,
                .muxsel         = { 2, 3, 0, 1 },
@@ -1409,12 +1343,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_TERRATVALUER] = {
                .name           = "Terratec TValueRadio",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0xffff00,
                .muxsel         = { 2, 3, 1, 1 },
@@ -1424,14 +1357,13 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_radio      = 1,
        },
        [BTTV_BOARD_GVBCTV4PCI] = {
                /* TANAKA Kei <peg00625@nifty.com> */
                .name           = "IODATA GV-BCTV4/PCI",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x010f00,
                .muxsel         = {2, 3, 0, 0 },
@@ -1440,7 +1372,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_SHARP_2U5JF5540_NTSC,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .audio_mode_gpio= gvbctv3pci_audio,
        },
 
@@ -1450,8 +1381,8 @@ struct tvcard bttv_tvcards[] = {
                /* try "insmod msp3400 simple=0" if you have
                * sound problems with this card. */
                .video_inputs   = 4,
-               .audio_inputs   = 1,
-               .svhs           = UNSET,
+               /* .audio_inputs= 1, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 0x4f8a00,
                /* 0x100000: 1=MSP enabled (0=disable again)
                * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
@@ -1462,7 +1393,6 @@ struct tvcard bttv_tvcards[] = {
                .muxsel         = { 2, 3 ,0 ,1 },
                .tuner_type     = TUNER_MT2032,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
                .has_radio      = 1,
        },
@@ -1471,8 +1401,8 @@ struct tvcard bttv_tvcards[] = {
                /* try "insmod msp3400 simple=0" if you have
                * sound problems with this card. */
                .video_inputs   = 4,
-               .audio_inputs   = 1,
-               .svhs           = UNSET,
+               /* .audio_inputs= 1, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 0x4f8a00,
                /* 0x100000: 1=MSP enabled (0=disable again)
                * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
@@ -1483,7 +1413,6 @@ struct tvcard bttv_tvcards[] = {
                .muxsel         = { 2, 3 ,0 ,1 },
                .tuner_type     = TUNER_MT2032,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
                .has_radio      = 1,
        },
@@ -1491,10 +1420,9 @@ struct tvcard bttv_tvcards[] = {
                /* Philip Blundell <pb@nexus.co.uk> */
                .name           = "Active Imaging AIMMS",
                .video_inputs   = 1,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
                .muxsel         = { 2 },
                .gpiomask       = 0
@@ -1503,7 +1431,7 @@ struct tvcard bttv_tvcards[] = {
                /* Tomasz Pyra <hellfire@sedez.iq.pl> */
                .name           = "Prolink Pixelview PV-BT878P+ (Rev.4C,8E)",
                .video_inputs   = 3,
-               .audio_inputs   = 4,
+               /* .audio_inputs= 4, */
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
@@ -1513,7 +1441,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_LG_PAL_I_FM,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_remote     = 1,
                /* GPIO wiring:
                        GPIO0: U4.A0 (hef4052bt)
@@ -1526,14 +1453,13 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_FLYVIDEO98EZ] = {
                .name           = "Lifeview FlyVideo 98EZ (capture only) LR51",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 1 }, /* AV1, AV2, SVHS, CVid adapter on SVHS */
                .pll            = PLL_28,
                .no_msp34xx     = 1,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
        /* ---- card 0x48 ---------------------------------- */
@@ -1541,7 +1467,7 @@ struct tvcard bttv_tvcards[] = {
                /* Dariusz Kowalewski <darekk@automex.pl> */
                .name           = "Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM)",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x3f,
                .muxsel         = { 2, 3, 1, 1 },
@@ -1553,7 +1479,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .audio_mode_gpio= pvbt878p9b_audio, /* Note: not all cards have stereo */
                .has_radio      = 1,  /* Note: not all cards have radio */
                .has_remote     = 1,
@@ -1570,7 +1495,7 @@ struct tvcard bttv_tvcards[] = {
                /* you must jumper JP5 for the card to work */
                .name           = "Sensoray 311",
                .video_inputs   = 5,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 4,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0 },
@@ -1578,14 +1503,13 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_RV605] = {
                /* Miguel Freitas <miguel@cetuc.puc-rio.br> */
                .name           = "RemoteVision MX (RV605)",
                .video_inputs   = 16,
-               .audio_inputs   = 0,
-               .svhs           = UNSET,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 0x00,
                .gpiomask2      = 0x07ff,
                .muxsel         = { 0x33, 0x13, 0x23, 0x43, 0xf3, 0x73, 0xe3, 0x03,
@@ -1594,13 +1518,12 @@ struct tvcard bttv_tvcards[] = {
                .no_tda9875     = 1,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .muxsel_hook    = rv605_muxsel,
        },
        [BTTV_BOARD_POWERCLR_MTV878] = {
                .name           = "Powercolor MTV878/ MTV878R/ MTV878F",
                .video_inputs   = 3,
-               .audio_inputs   = 2,
+               /* .audio_inputs= 2, */
                .svhs           = 2,
                .gpiomask       = 0x1C800F,  /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset */
                .muxsel         = { 2, 1, 1, },
@@ -1609,7 +1532,6 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
                .has_radio      = 1,
        },
@@ -1619,7 +1541,7 @@ struct tvcard bttv_tvcards[] = {
                /* Masaki Suzuki <masaki@btree.org> */
                .name           = "Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x140007,
                .muxsel         = { 2, 3, 1, 1 },
@@ -1627,14 +1549,13 @@ struct tvcard bttv_tvcards[] = {
                .gpiomute       = 4,
                .tuner_type     = TUNER_PHILIPS_NTSC,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .audio_mode_gpio= windvr_audio,
        },
        [BTTV_BOARD_GRANDTEC_MULTI] = {
                .name           = "GrandTec Multi Capture Card (Bt878)",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
-               .svhs           = UNSET,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0 },
                .gpiomux        = { 0 },
@@ -1643,12 +1564,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_KWORLD] = {
                .name           = "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF",
                .video_inputs   = 4,
-               .audio_inputs   = 3,
+               /* .audio_inputs= 3, */
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },   /* Tuner, SVid, SVHS, SVid to SVHS connector */
@@ -1665,7 +1585,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                /* Samsung TCPA9095PC27A (BG+DK), philips compatible, w/FM, stereo and
                radio signal strength indicators work fine. */
                .has_radio      = 1,
@@ -1683,26 +1602,24 @@ struct tvcard bttv_tvcards[] = {
                /* Arthur Tetzlaff-Deas, DSP Design Ltd <software@dspdesign.com> */
                .name           = "DSP Design TCVIDEO",
                .video_inputs   = 4,
-               .svhs           = UNSET,
+               .svhs           = NO_SVHS,
                .muxsel         = { 2, 3, 1, 0 },
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
                /* ---- card 0x50 ---------------------------------- */
        [BTTV_BOARD_HAUPPAUGEPVR] = {
                .name           = "Hauppauge WinTV PVR",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .muxsel         = { 2, 0, 1, 1 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
 
                .gpiomask       = 7,
                .gpiomux        = {7},
@@ -1710,7 +1627,7 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_GVBCTV5PCI] = {
                .name           = "IODATA GV-BCTV5/PCI",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x0f0f80,
                .muxsel         = {2, 3, 1, 0 },
@@ -1720,20 +1637,18 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_NTSC_M,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .audio_mode_gpio= gvbctv5pci_audio,
                .has_radio      = 1,
        },
        [BTTV_BOARD_OSPREY1x0] = {
                .name           = "Osprey 100/150 (878)", /* 0x1(2|3)-45C6-C1 */
                .video_inputs   = 4,                  /* id-inputs-clock */
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 3,
                .muxsel         = { 3, 2, 0, 1 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -1741,13 +1656,12 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_OSPREY1x0_848] = {
                .name           = "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */
                .video_inputs   = 3,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 2,
                .muxsel         = { 2, 3, 1 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -1757,13 +1671,12 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_OSPREY101_848] = {
                .name           = "Osprey 101 (848)", /* 0x05-40C0-C1 */
                .video_inputs   = 2,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 1,
                .muxsel         = { 3, 1 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -1771,13 +1684,12 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_OSPREY1x1] = {
                .name           = "Osprey 101/151",       /* 0x1(4|5)-0004-C4 */
                .video_inputs   = 1,
-               .audio_inputs   = 0,
-               .svhs           = UNSET,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
                .muxsel         = { 0 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -1785,13 +1697,12 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_OSPREY1x1_SVID] = {
                .name           = "Osprey 101/151 w/ svid",  /* 0x(16|17|20)-00C4-C1 */
                .video_inputs   = 2,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 1,
                .muxsel         = { 0, 1 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -1799,13 +1710,12 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_OSPREY2xx] = {
                .name           = "Osprey 200/201/250/251",  /* 0x1(8|9|E|F)-0004-C4 */
                .video_inputs   = 1,
-               .audio_inputs   = 1,
-               .svhs           = UNSET,
+               /* .audio_inputs= 1, */
+               .svhs           = NO_SVHS,
                .muxsel         = { 0 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -1815,13 +1725,12 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_OSPREY2x0_SVID] = {
                .name           = "Osprey 200/250",   /* 0x1(A|B)-00C4-C1 */
                .video_inputs   = 2,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 1,
                .muxsel         = { 0, 1 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -1829,13 +1738,12 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_OSPREY2x0] = {
                .name           = "Osprey 210/220/230",   /* 0x1(A|B)-04C0-C1 */
                .video_inputs   = 2,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 1,
                .muxsel         = { 2, 3 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -1843,13 +1751,12 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_OSPREY500] = {
                .name           = "Osprey 500",   /* 500 */
                .video_inputs   = 2,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 1,
                .muxsel         = { 2, 3 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -1857,11 +1764,10 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_OSPREY540] = {
                .name           = "Osprey 540",   /* 540 */
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -1871,13 +1777,12 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_OSPREY2000] = {
                .name           = "Osprey 2000",  /* 2000 */
                .video_inputs   = 2,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 1,
                .muxsel         = { 2, 3 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,      /* must avoid, conflicts with the bt860 */
@@ -1886,11 +1791,10 @@ struct tvcard bttv_tvcards[] = {
                /* M G Berberich <berberic@forwiss.uni-passau.de> */
                .name           = "IDS Eagle",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
-               .svhs           = UNSET,
+               .svhs           = NO_SVHS,
                .gpiomask       = 0,
                .muxsel         = { 0, 1, 2, 3 },
                .muxsel_hook    = eagle_muxsel,
@@ -1901,11 +1805,10 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_PINNACLESAT] = {
                .name           = "Pinnacle PCTV Sat",
                .video_inputs   = 2,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 1,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -1917,7 +1820,7 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_FORMAC_PROTV] = {
                .name           = "Formac ProTV II (bt878)",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 3,
                .gpiomask       = 2,
                /* TV, Comp1, Composite over SVID con, SVID */
@@ -1927,7 +1830,6 @@ struct tvcard bttv_tvcards[] = {
                .has_radio      = 1,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        /* sound routing:
                GPIO=0x00,0x01,0x03: mute (?)
                0x02: both TV and radio (tuner: FM1216/I)
@@ -1941,8 +1843,8 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_MACHTV] = {
                .name           = "MachTV",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
-               .svhs           = UNSET,
+               /* .audio_inputs= 1, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1},
                .gpiomux        = { 0, 1, 2, 3},
@@ -1950,13 +1852,12 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
        },
        [BTTV_BOARD_EURESYS_PICOLO] = {
                .name           = "Euresys Picolo",
                .video_inputs   = 3,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 2,
                .gpiomask       = 0,
                .no_msp34xx     = 1,
@@ -1966,14 +1867,13 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_PV150] = {
                /* Luc Van Hoeylandt <luc@e-magic.be> */
                .name           = "ProVideo PV150", /* 0x4f */
                .video_inputs   = 2,
-               .audio_inputs   = 0,
-               .svhs           = UNSET,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 0,
                .muxsel         = { 2, 3 },
                .gpiomux        = { 0 },
@@ -1982,14 +1882,13 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_AD_TVK503] = {
                /* Hiroshi Takekawa <sian@big.or.jp> */
                /* This card lacks subsystem ID */
                .name           = "AD-TVK503", /* 0x63 */
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x001e8007,
                .muxsel         = { 2, 3, 1, 0 },
@@ -2001,7 +1900,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_NTSC,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .audio_mode_gpio= adtvk503_audio,
        },
 
@@ -2009,7 +1907,7 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_HERCULES_SM_TV] = {
                .name           = "Hercules Smart TV Stereo",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x00,
                .muxsel         = { 2, 3, 1, 1 },
@@ -2018,7 +1916,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                /* Notes:
                - card lacks subsystem ID
                - stereo variant w/ daughter board with tda9874a @0xb0
@@ -2032,7 +1929,7 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_PACETV] = {
                .name           = "Pace TV & Radio Card",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 1 }, /* Tuner, CVid, SVid, CVid over SVid connector */
                .gpiomask       = 0,
@@ -2040,7 +1937,6 @@ struct tvcard bttv_tvcards[] = {
                .no_tda7432     = 1,
                .tuner_type     = TUNER_PHILIPS_PAL_I,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_radio      = 1,
                .pll            = PLL_28,
                /* Bt878, Bt832, FI1246 tuner; no pci subsystem id
@@ -2054,11 +1950,10 @@ struct tvcard bttv_tvcards[] = {
                /* Chris Willing <chris@vislab.usyd.edu.au> */
                .name           = "IVC-200",
                .video_inputs   = 1,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
-               .svhs           = UNSET,
+               .svhs           = NO_SVHS,
                .gpiomask       = 0xdf,
                .muxsel         = { 2 },
                .pll            = PLL_28,
@@ -2066,11 +1961,10 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_IVCE8784] = {
                .name           = "IVCE-8784",
                .video_inputs   = 1,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
-               .svhs           = UNSET,
+               .svhs           = NO_SVHS,
                .gpiomask       = 0xdf,
                .muxsel         = { 2 },
                .pll            = PLL_28,
@@ -2078,11 +1972,10 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_XGUARD] = {
                .name           = "Grand X-Guard / Trust 814PCI",
                .video_inputs   = 16,
-               .audio_inputs   = 0,
-               .svhs           = UNSET,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .gpiomask2      = 0xff,
                .muxsel         = { 2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0 },
                .muxsel_hook    = xguard_muxsel,
@@ -2096,7 +1989,7 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_NEBULA_DIGITV] = {
                .name           = "Nebula Electronics DigiTV",
                .video_inputs   = 1,
-               .svhs           = UNSET,
+               .svhs           = NO_SVHS,
                .muxsel         = { 2, 3, 1, 0 },
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
@@ -2104,7 +1997,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_dvb        = 1,
                .has_remote     = 1,
                .gpiomask       = 0x1b,
@@ -2114,8 +2006,8 @@ struct tvcard bttv_tvcards[] = {
                /* Jorge Boncompte - DTI2 <jorge@dti2.net> */
                .name           = "ProVideo PV143",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
-               .svhs           = UNSET,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0 },
                .gpiomux        = { 0 },
@@ -2124,13 +2016,12 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_VD009X1_VD011_MINIDIN] = {
                /* M.Klahr@phytec.de */
                .name           = "PHYTEC VD-009-X1 VD-011 MiniDIN (bt878)",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 3,
                .gpiomask       = 0x00,
                .muxsel         = { 2, 3, 1, 0 },
@@ -2139,12 +2030,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_VD009X1_VD011_COMBI] = {
                .name           = "PHYTEC VD-009-X1 VD-011 Combi (bt878)",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 3,
                .gpiomask       = 0x00,
                .muxsel         = { 2, 3, 1, 1 },
@@ -2153,14 +2043,13 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
 
                /* ---- card 0x6c ---------------------------------- */
        [BTTV_BOARD_VD009_MINIDIN] = {
                .name           = "PHYTEC VD-009 MiniDIN (bt878)",
                .video_inputs   = 10,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 9,
                .gpiomask       = 0x00,
                .gpiomask2      = 0x03, /* gpiomask2 defines the bits used to switch audio
@@ -2172,12 +2061,11 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_VD009_COMBI] = {
                .name           = "PHYTEC VD-009 Combi (bt878)",
                .video_inputs   = 10,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 9,
                .gpiomask       = 0x00,
                .gpiomask2      = 0x03, /* gpiomask2 defines the bits used to switch audio
@@ -2189,16 +2077,14 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_IVC100] = {
                .name           = "IVC-100",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
-               .svhs           = UNSET,
+               .svhs           = NO_SVHS,
                .gpiomask       = 0xdf,
                .muxsel         = { 2, 3, 1, 0 },
                .pll            = PLL_28,
@@ -2207,11 +2093,10 @@ struct tvcard bttv_tvcards[] = {
                /* IVC-120G - Alan Garfield <alan@fromorbit.com> */
                .name           = "IVC-120G",
                .video_inputs   = 16,
-               .audio_inputs   = 0,    /* card has no audio */
+               /* .audio_inputs= 0, */
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
-               .svhs           = UNSET,   /* card has no svhs */
+               .svhs           = NO_SVHS,   /* card has no svhs */
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
@@ -2227,12 +2112,11 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_PC_HDTV] = {
                .name           = "pcHDTV HD-2000 TV",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 0 },
                .tuner_type     = TUNER_PHILIPS_FCV1236D,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_dvb        = 1,
        },
        [BTTV_BOARD_TWINHAN_DST] = {
@@ -2242,14 +2126,13 @@ struct tvcard bttv_tvcards[] = {
                .no_tda7432     = 1,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_video       = 1,
                .has_dvb        = 1,
        },
        [BTTV_BOARD_WINFASTVC100] = {
                .name           = "Winfast VC100",
                .video_inputs   = 3,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 1,
                .muxsel         = { 3, 1, 1, 3 }, /* Vid In, SVid In, Vid over SVid in connector */
                .no_msp34xx     = 1,
@@ -2257,13 +2140,12 @@ struct tvcard bttv_tvcards[] = {
                .no_tda7432     = 1,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
        },
        [BTTV_BOARD_TEV560] = {
                .name           = "Teppro TEV-560/InterVision IV-560",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 1 },
@@ -2271,7 +2153,6 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 1,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_35,
        },
 
@@ -2279,11 +2160,10 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_SIMUS_GVC1100] = {
                .name           = "SIMUS GVC1100",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
-               .svhs           = UNSET,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
                .muxsel         = { 2, 2, 2, 2 },
                .gpiomask       = 0x3F,
@@ -2301,15 +2181,14 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_remote     = 1,
        },
        [BTTV_BOARD_LMLBT4] = {
                /* http://linuxmedialabs.com */
                .name           = "LMLBT4",
                .video_inputs   = 4, /* IN1,IN2,IN3,IN4 */
-               .audio_inputs   = 0,
-               .svhs           = UNSET,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
                .muxsel         = { 2, 3, 1, 0 },
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
@@ -2317,16 +2196,14 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_TEKRAM_M205] = {
                /* Helmroos Harri <harri.helmroos@pp.inet.fi> */
                .name           = "Tekram M205 PRO",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .svhs           = 2,
                .needs_tvaudio  = 0,
                .gpiomask       = 0x68,
@@ -2341,7 +2218,7 @@ struct tvcard bttv_tvcards[] = {
                /* bt878 TV + FM without subsystem ID */
                .name           = "Conceptronic CONTVFMi",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x008007,
                .muxsel         = { 2, 3, 1, 1 },
@@ -2351,7 +2228,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_remote     = 1,
                .has_radio      = 1,
        },
@@ -2362,8 +2238,8 @@ struct tvcard bttv_tvcards[] = {
                /*0x79 in bttv.h*/
                .name           = "Euresys Picolo Tetra",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
-               .svhs           = UNSET,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 0,
                .gpiomask2      = 0x3C<<16,/*Set the GPIO[18]->GPIO[21] as output pin.==> drive the video inputs through analog multiplexers*/
                .no_msp34xx     = 1,
@@ -2376,21 +2252,19 @@ struct tvcard bttv_tvcards[] = {
                .muxsel_hook    = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_SPIRIT_TV] = {
                /* Spirit TV Tuner from http://spiritmodems.com.au */
                /* Stafford Goodsell <surge@goliath.homeunix.org> */
                .name           = "Spirit TV Tuner",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x0000000f,
                .muxsel         = { 2, 1, 1 },
                .gpiomux        = { 0x02, 0x00, 0x00, 0x00 },
                .tuner_type     = TUNER_TEMIC_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
        },
@@ -2401,7 +2275,6 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 1,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .muxsel         = { 3 , 3 },
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
@@ -2425,43 +2298,40 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_dvb        = 1,
                .no_gpioirq     = 1,
                .has_remote     = 1,
        },
        [BTTV_BOARD_MATRIX_VISIONSQ] = {
                /* andre.schwarz@matrix-vision.de */
-               .name             = "MATRIX Vision Sigma-SQ",
-               .video_inputs     = 16,
-               .audio_inputs     = 0,
-               .svhs             = UNSET,
-               .gpiomask         = 0x0,
-               .muxsel           = { 2, 2, 2, 2, 2, 2, 2, 2,
-                               3, 3, 3, 3, 3, 3, 3, 3 },
-               .muxsel_hook      = sigmaSQ_muxsel,
-               .gpiomux          = { 0 },
-               .no_msp34xx       = 1,
-               .pll              = PLL_28,
-               .tuner_type       = TUNER_ABSENT,
-               .tuner_addr       = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
+               .name           = "MATRIX Vision Sigma-SQ",
+               .video_inputs   = 16,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
+               .gpiomask       = 0x0,
+               .muxsel         = { 2, 2, 2, 2, 2, 2, 2, 2,
+                                   3, 3, 3, 3, 3, 3, 3, 3 },
+               .muxsel_hook    = sigmaSQ_muxsel,
+               .gpiomux        = { 0 },
+               .no_msp34xx     = 1,
+               .pll            = PLL_28,
+               .tuner_type     = TUNER_ABSENT,
+               .tuner_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_MATRIX_VISIONSLC] = {
                /* andre.schwarz@matrix-vision.de */
-               .name             = "MATRIX Vision Sigma-SLC",
-               .video_inputs     = 4,
-               .audio_inputs     = 0,
-               .svhs             = UNSET,
-               .gpiomask         = 0x0,
-               .muxsel           = { 2, 2, 2, 2 },
-               .muxsel_hook      = sigmaSLC_muxsel,
-               .gpiomux          = { 0 },
-               .no_msp34xx       = 1,
-               .pll              = PLL_28,
-               .tuner_type       = TUNER_ABSENT,
-               .tuner_addr       = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
+               .name           = "MATRIX Vision Sigma-SLC",
+               .video_inputs   = 4,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
+               .gpiomask       = 0x0,
+               .muxsel         = { 2, 2, 2, 2 },
+               .muxsel_hook    = sigmaSLC_muxsel,
+               .gpiomux        = { 0 },
+               .no_msp34xx     = 1,
+               .pll            = PLL_28,
+               .tuner_type     = TUNER_ABSENT,
+               .tuner_addr     = ADDR_UNSET,
        },
                /* BTTV_BOARD_APAC_VIEWCOMP */
        [BTTV_BOARD_APAC_VIEWCOMP] = {
@@ -2469,8 +2339,8 @@ struct tvcard bttv_tvcards[] = {
                /* bt878 TV + FM 0x00000000 subsystem ID */
                .name           = "APAC Viewcomp 878(AMAX)",
                .video_inputs   = 2,
-               .audio_inputs   = 1,
-               .svhs           = UNSET,
+               /* .audio_inputs= 1, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 0xFF,
                .muxsel         = { 2, 3, 1, 1 },
                .gpiomux        = { 2, 0, 0, 0 },
@@ -2479,7 +2349,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_remote     = 1,   /* miniremote works, see ir-kbd-gpio.c */
                .has_radio      = 1,   /* not every card has radio */
        },
@@ -2496,13 +2365,12 @@ struct tvcard bttv_tvcards[] = {
                .has_dvb        = 1,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_VGEAR_MYVCD] = {
                /* Steven <photon38@pchome.com.tw> */
                .name           = "V-Gear MyVCD",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x3f,
                .muxsel         = {2, 3, 1, 0 },
@@ -2512,19 +2380,17 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_NTSC_M,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_radio      = 0,
        },
        [BTTV_BOARD_SUPER_TV] = {
                /* Rick C <cryptdragoon@gmail.com> */
                .name           = "Super TV Tuner",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 0 },
                .tuner_type     = TUNER_PHILIPS_NTSC,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .gpiomask       = 0x008007,
                .gpiomux        = { 0, 0x000001,0,0 },
                .needs_tvaudio  = 1,
@@ -2534,8 +2400,8 @@ struct tvcard bttv_tvcards[] = {
                /* Chris Fanning <video4linux@haydon.net> */
                .name           = "Tibet Systems 'Progress DVR' CS16",
                .video_inputs   = 16,
-               .audio_inputs   = 0,
-               .svhs           = UNSET,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
                .muxsel         = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 },
                .pll            = PLL_28,
                .no_msp34xx     = 1,
@@ -2543,7 +2409,6 @@ struct tvcard bttv_tvcards[] = {
                .no_tda7432     = 1,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .muxsel_hook    = tibetCS16_muxsel,
        },
        [BTTV_BOARD_KODICOM_4400R] = {
@@ -2560,11 +2425,10 @@ struct tvcard bttv_tvcards[] = {
                */
                .name           = "Kodicom 4400R (master)",
                .video_inputs   = 16,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
-               .svhs           = UNSET,
+               .svhs           = NO_SVHS,
                /* GPIO bits 0-9 used for analog switch:
                *   00 - 03:    camera selector
                *   04 - 06:    channel (controller) selector
@@ -2591,11 +2455,10 @@ struct tvcard bttv_tvcards[] = {
                */
                .name           = "Kodicom 4400R (slave)",
                .video_inputs   = 16,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
-               .svhs           = UNSET,
+               .svhs           = NO_SVHS,
                .gpiomask       = 0x010000,
                .no_gpioirq     = 1,
                .muxsel         = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
@@ -2611,12 +2474,11 @@ struct tvcard bttv_tvcards[] = {
                /* Adlink RTV24 with special unlock codes */
                .name           = "Adlink RTV24",
                .video_inputs   = 4,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .muxsel         = { 2, 3, 1, 0 },
                .tuner_type     = UNSET,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
        },
                /* ---- card 0x87---------------------------------- */
@@ -2625,9 +2487,8 @@ struct tvcard bttv_tvcards[] = {
                .name           = "DViCO FusionHDTV 5 Lite",
                .tuner_type     = TUNER_LG_TDVS_H06XF, /* TDVS-H064F */
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .muxsel         = { 2, 3, 1 },
                .gpiomask       = 0x00e00007,
@@ -2643,7 +2504,7 @@ struct tvcard bttv_tvcards[] = {
                /* Mauro Carvalho Chehab <mchehab@infradead.org> */
                .name           = "Acorp Y878F",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x01fe00,
                .muxsel         = { 2, 3, 1, 1 },
@@ -2653,14 +2514,13 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_YMEC_TVF66T5_B_DFF,
                .tuner_addr     = 0xc1 >>1,
-               .radio_addr     = 0xc1 >>1,
                .has_radio      = 1,
        },
                /* ---- card 0x89 ---------------------------------- */
        [BTTV_BOARD_CONCEPTRONIC_CTVFMI2] = {
                .name           = "Conceptronic CTVFMi v2",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x001c0007,
                .muxsel         = { 2, 3, 1, 1 },
@@ -2670,34 +2530,32 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_TENA_9533_DI,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_remote     = 1,
                .has_radio      = 1,
        },
                /* ---- card 0x8a ---------------------------------- */
        [BTTV_BOARD_PV_BT878P_2E] = {
-               .name          = "Prolink Pixelview PV-BT878P+ (Rev.2E)",
-               .video_inputs  = 5,
-               .audio_inputs  = 1,
-               .svhs          = 3,
-               .gpiomask      = 0x01fe00,
-               .muxsel        = { 2,3,1,1,-1 },
-               .digital_mode  = DIGITAL_MODE_CAMERA,
-               .gpiomux       = { 0x00400, 0x10400, 0x04400, 0x80000 },
-               .gpiomute      = 0x12400,
-               .no_msp34xx    = 1,
-               .pll           = PLL_28,
-               .tuner_type    = TUNER_LG_PAL_FM,
-               .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
-               .has_remote    = 1,
+               .name           = "Prolink Pixelview PV-BT878P+ (Rev.2E)",
+               .video_inputs   = 5,
+               /* .audio_inputs= 1, */
+               .svhs           = 3,
+               .gpiomask       = 0x01fe00,
+               .muxsel         = { 2, 3, 1, 1, -1 },
+               /* .digital_mode= DIGITAL_MODE_CAMERA, */
+               .gpiomux        = { 0x00400, 0x10400, 0x04400, 0x80000 },
+               .gpiomute       = 0x12400,
+               .no_msp34xx     = 1,
+               .pll            = PLL_28,
+               .tuner_type     = TUNER_LG_PAL_FM,
+               .tuner_addr     = ADDR_UNSET,
+               .has_remote     = 1,
        },
                /* ---- card 0x8b ---------------------------------- */
        [BTTV_BOARD_PV_M4900] = {
                /* Sérgio Fortier <sergiofortier@yahoo.com.br> */
                .name           = "Prolink PixelView PlayTV MPEG2 PV-M4900",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x3f,
                .muxsel         = { 2, 3, 1, 1 },
@@ -2707,7 +2565,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_YMEC_TVF_5533MF,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .has_radio      = 1,
                .has_remote     = 1,
        },
@@ -2727,8 +2584,8 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_OSPREY440]  = {
                .name           = "Osprey 440",
                .video_inputs   = 4,
-               .audio_inputs   = 2, /* this is meaningless */
-               .svhs           = UNSET,
+               /* .audio_inputs= 2, */
+               .svhs           = NO_SVHS,
                .muxsel         = { 2, 3, 0, 1 }, /* 3,0,1 are guesses */
                .gpiomask       = 0x303,
                .gpiomute       = 0x000, /* int + 32kHz */
@@ -2736,7 +2593,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -2745,7 +2601,7 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_ASOUND_SKYEYE] = {
                .name           = "Asound Skyeye PCTV",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
@@ -2755,13 +2611,12 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_NTSC,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
                /* ---- card 0x8e ---------------------------------- */
        [BTTV_BOARD_SABRENT_TVFM] = {
                .name           = "Sabrent TV-FM (bttv version)",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x108007,
                .muxsel         = { 2, 3, 1, 1 },
@@ -2778,8 +2633,8 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_HAUPPAUGE_IMPACTVCB] = {
                .name           = "Hauppauge ImpactVCB (bt878)",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
-               .svhs           = UNSET,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 0x0f, /* old: 7 */
                .muxsel         = { 0, 1, 3, 2 }, /* Composite 0-3 */
                .no_msp34xx     = 1,
@@ -2787,7 +2642,6 @@ struct tvcard bttv_tvcards[] = {
                .no_tda7432     = 1,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_MACHTV_MAGICTV] = {
                /* Julian Calaby <julian.calaby@gmail.com>
@@ -2799,7 +2653,7 @@ struct tvcard bttv_tvcards[] = {
 
                .name           = "MagicTV", /* rebranded MachTV */
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
@@ -2807,7 +2661,6 @@ struct tvcard bttv_tvcards[] = {
                .gpiomute       = 4,
                .tuner_type     = TUNER_TEMIC_4009FR5_PAL,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
                .has_radio      = 1,
                .has_remote     = 1,
@@ -2815,31 +2668,28 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_SSAI_SECURITY] = {
                .name           = "SSAI Security Video Interface",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
-               .svhs           = UNSET,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
                .muxsel         = { 0, 1, 2, 3 },
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_SSAI_ULTRASOUND] = {
                .name           = "SSAI Ultrasound Video Interface",
                .video_inputs   = 2,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 1,
                .muxsel         = { 2, 0, 1, 3 },
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        /* ---- card 0x94---------------------------------- */
        [BTTV_BOARD_DVICO_FUSIONHDTV_2] = {
                .name           = "DViCO FusionHDTV 2",
                .tuner_type     = TUNER_PHILIPS_FCV1236D,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .muxsel         = { 2, 3, 1 },
                .gpiomask       = 0x00e00007,
@@ -2853,7 +2703,7 @@ struct tvcard bttv_tvcards[] = {
        [BTTV_BOARD_TYPHOON_TVTUNERPCI] = {
                .name           = "Typhoon TV-Tuner PCI (50684)",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x3014f,
                .muxsel         = { 2, 3, 1, 1 },
@@ -2863,24 +2713,22 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL_I,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_GEOVISION_GV600] = {
                /* emhn@usb.ve */
-               .name             = "Geovision GV-600",
-               .video_inputs     = 16,
-               .audio_inputs     = 0,
-               .svhs             = UNSET,
-               .gpiomask         = 0x0,
-               .muxsel           = { 2, 2, 2, 2, 2, 2, 2, 2,
-                                     2, 2, 2, 2, 2, 2, 2, 2 },
-               .muxsel_hook      = geovision_muxsel,
-               .gpiomux          = { 0 },
-               .no_msp34xx       = 1,
-               .pll              = PLL_28,
-               .tuner_type       = TUNER_ABSENT,
-               .tuner_addr       = ADDR_UNSET,
-               .radio_addr       = ADDR_UNSET,
+               .name           = "Geovision GV-600",
+               .video_inputs   = 16,
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
+               .gpiomask       = 0x0,
+               .muxsel         = { 2, 2, 2, 2, 2, 2, 2, 2,
+                                   2, 2, 2, 2, 2, 2, 2, 2 },
+               .muxsel_hook    = geovision_muxsel,
+               .gpiomux        = { 0 },
+               .no_msp34xx     = 1,
+               .pll            = PLL_28,
+               .tuner_type     = TUNER_ABSENT,
+               .tuner_addr     = ADDR_UNSET,
        },
        [BTTV_BOARD_KOZUMI_KTV_01C] = {
                /* Mauro Lacy <mauro@lacy.com.ar>
@@ -2888,7 +2736,7 @@ struct tvcard bttv_tvcards[] = {
 
                .name           = "Kozumi KTV-01C",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                .gpiomask       = 0x008007,
                .muxsel         = { 2, 3, 1, 1 },
@@ -2897,7 +2745,6 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_PHILIPS_FM1216ME_MK3, /* TCL MK3 */
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
                .has_radio      = 1,
                .has_remote     = 1,
@@ -2907,7 +2754,7 @@ struct tvcard bttv_tvcards[] = {
                   Mauro Carvalho Chehab <mchehab@infradead.org */
                .name           = "Encore ENL TV-FM-2",
                .video_inputs   = 3,
-               .audio_inputs   = 1,
+               /* .audio_inputs= 1, */
                .svhs           = 2,
                /* bit 6          -> IR disabled
                   bit 18/17 = 00 -> mute
@@ -2921,7 +2768,6 @@ struct tvcard bttv_tvcards[] = {
                .gpiomute       = 0,
                .tuner_type     = TUNER_TCL_MF02GIP_5N,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
                .pll            = PLL_28,
                .has_radio      = 1,
                .has_remote     = 1,
@@ -2930,8 +2776,8 @@ struct tvcard bttv_tvcards[] = {
                /* D.Heer@Phytec.de */
                .name           = "PHYTEC VD-012 (bt878)",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
-               .svhs           = UNSET, /* card has no s-video */
+               /* .audio_inputs= 0, */
+               .svhs           = NO_SVHS,
                .gpiomask       = 0x00,
                .muxsel         = { 0, 2, 3, 1 },
                .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
@@ -2939,13 +2785,12 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
                [BTTV_BOARD_VD012_X1] = {
                /* D.Heer@Phytec.de */
                .name           = "PHYTEC VD-012-X1 (bt878)",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 3,
                .gpiomask       = 0x00,
                .muxsel         = { 2, 3, 1 },
@@ -2954,13 +2799,12 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        },
                [BTTV_BOARD_VD012_X2] = {
                /* D.Heer@Phytec.de */
                .name           = "PHYTEC VD-012-X2 (bt878)",
                .video_inputs   = 4,
-               .audio_inputs   = 0,
+               /* .audio_inputs= 0, */
                .svhs           = 3,
                .gpiomask       = 0x00,
                .muxsel         = { 3, 2, 1 },
@@ -2969,7 +2813,6 @@ struct tvcard bttv_tvcards[] = {
                .pll            = PLL_28,
                .tuner_type     = TUNER_ABSENT,
                .tuner_addr     = ADDR_UNSET,
-               .radio_addr     = ADDR_UNSET,
        }
 };
 
@@ -3574,7 +3417,8 @@ void __devinit bttv_init_card2(struct bttv *btv)
                bttv_call_i2c_clients(btv, TUNER_SET_CONFIG, &tda9887_cfg);
        }
 
-       btv->svhs = bttv_tvcards[btv->c.type].svhs;
+       btv->svhs = bttv_tvcards[btv->c.type].svhs == NO_SVHS ?
+                   UNSET : bttv_tvcards[btv->c.type].svhs;
        if (svhs[btv->c.nr] != UNSET)
                btv->svhs = svhs[btv->c.nr];
        if (remote[btv->c.nr] != UNSET)
index 861ff2f8f985944e9091893f09a5faa47b7c3a18..a2e140a25df6855d12747d873928833b9d5a5645 100644 (file)
 #define WINVIEW_PT2254_DATA 0x20
 #define WINVIEW_PT2254_STROBE 0x80
 
-/* digital_mode */
-#define DIGITAL_MODE_VIDEO 1
-#define DIGITAL_MODE_CAMERA 2
-
 struct bttv_core {
        /* device structs */
        struct pci_dev       *pci;
@@ -211,19 +207,24 @@ struct bttv_core {
 struct bttv;
 
 
-struct tvcard
-{
+struct tvcard {
        char *name;
-       unsigned int video_inputs;
-       unsigned int audio_inputs;
-       unsigned int svhs;
-       unsigned int digital_mode; // DIGITAL_MODE_CAMERA or DIGITAL_MODE_VIDEO
+       void (*volume_gpio)(struct bttv *btv, __u16 volume);
+       void (*audio_mode_gpio)(struct bttv *btv, struct v4l2_tuner *tuner, int set);
+       void (*muxsel_hook)(struct bttv *btv, unsigned int input);
+
        u32 gpiomask;
        u32 muxsel[16];
        u32 gpiomux[4];  /* Tuner, Radio, external, internal */
        u32 gpiomute;    /* GPIO mute setting */
        u32 gpiomask2;   /* GPIO MUX mask */
 
+       unsigned int tuner_type;
+       u8 tuner_addr;
+       u8 video_inputs;        /* Number of inputs */
+       unsigned int svhs:4;    /* Which input is s-video */
+#define NO_SVHS        15
+
        /* i2c audio flags */
        unsigned int no_msp34xx:1;
        unsigned int no_tda9875:1;
@@ -231,28 +232,15 @@ struct tvcard
        unsigned int needs_tvaudio:1;
        unsigned int msp34xx_alt:1;
 
-       /* flag: video pci function is unused */
-       unsigned int no_video:1;
+       unsigned int no_video:1; /* video pci function is unused */
        unsigned int has_dvb:1;
        unsigned int has_remote:1;
+       unsigned int has_radio:1;
        unsigned int no_gpioirq:1;
-
-       /* other settings */
-       unsigned int pll;
+       unsigned int pll:2;
 #define PLL_NONE 0
 #define PLL_28   1
 #define PLL_35   2
-
-       unsigned int tuner_type;
-       unsigned int tuner_addr;
-       unsigned int radio_addr;
-
-       unsigned int has_radio;
-
-       void (*volume_gpio)(struct bttv *btv, __u16 volume);
-       void (*audio_mode_gpio)(struct bttv *btv, struct v4l2_tuner *tuner, int set);
-
-       void (*muxsel_hook)(struct bttv *btv, unsigned int input);
 };
 
 extern struct tvcard bttv_tvcards[];