linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / drivers / media / video / bttv-cards.c
similarity index 95%
rename from drivers/media/video/bt8xx/bttv-cards.c
rename to drivers/media/video/bttv-cards.c
index 2b64aa8..9749d6e 100644 (file)
@@ -39,7 +39,6 @@
 
 #include "bttvp.h"
 #include <media/v4l2-common.h>
-#include <media/tvaudio.h>
 
 /* fwd decl */
 static void boot_msp34xx(struct bttv *btv, int pin);
@@ -138,8 +137,6 @@ MODULE_PARM_DESC(card,"specify TV/grabber card model, see CARDLIST file for a li
 MODULE_PARM_DESC(pll,"specify installed crystal (0=none, 28=28 MHz, 35=35 MHz)");
 MODULE_PARM_DESC(tuner,"specify installed tuner type");
 MODULE_PARM_DESC(autoload,"automatically load i2c modules like tuner.o, default is 1 (yes)");
-MODULE_PARM_DESC(no_overlay,"allow override overlay default (0 disables, 1 enables)"
-               " [some VIA/SIS chipsets are known to have problem with overlay]");
 
 /* ----------------------------------------------------------------------- */
 /* list of card IDs for bt878+ cards                                       */
@@ -278,6 +275,7 @@ static struct CARD {
        { 0x03116000, BTTV_BOARD_SENSORAY311,   "Sensoray 311" },
        { 0x00790e11, BTTV_BOARD_WINDVR,        "Canopus WinDVR PCI" },
        { 0xa0fca1a0, BTTV_BOARD_ZOLTRIX,       "Face to Face Tvmax" },
+       { 0x20007063, BTTV_BOARD_PC_HDTV,       "pcHDTV HD-2000 TV"},
        { 0x82b2aa6a, BTTV_BOARD_SIMUS_GVC1100, "SIMUS GVC1100" },
        { 0x146caa0c, BTTV_BOARD_PV951,         "ituner spectra8" },
        { 0x200a1295, BTTV_BOARD_PXC200,        "ImageNation PXC200A" },
@@ -299,14 +297,13 @@ static struct CARD {
        * { 0x13eb0070, BTTV_BOARD_HAUPPAUGE_IMPACTVCB,  "Hauppauge ImpactVCB" }, */
 
        /* DVB cards (using pci function .1 for mpeg data xfer) */
-       { 0x001c11bd, BTTV_BOARD_PINNACLESAT,   "Pinnacle PCTV Sat" },
        { 0x01010071, BTTV_BOARD_NEBULA_DIGITV, "Nebula Electronics DigiTV" },
-       { 0x20007063, BTTV_BOARD_PC_HDTV,       "pcHDTV HD-2000 TV"},
+       { 0x07611461, BTTV_BOARD_AVDVBT_761,    "AverMedia AverTV DVB-T 761" },
+       { 0x001c11bd, BTTV_BOARD_PINNACLESAT,   "Pinnacle PCTV Sat" },
        { 0x002611bd, BTTV_BOARD_TWINHAN_DST,   "Pinnacle PCTV SAT CI" },
        { 0x00011822, BTTV_BOARD_TWINHAN_DST,   "Twinhan VisionPlus DVB" },
        { 0xfc00270f, BTTV_BOARD_TWINHAN_DST,   "ChainTech digitop DST-1000 DVB-S" },
        { 0x07711461, BTTV_BOARD_AVDVBT_771,    "AVermedia AverTV DVB-T 771" },
-       { 0x07611461, BTTV_BOARD_AVDVBT_761,    "AverMedia AverTV DVB-T 761" },
        { 0xdb1018ac, BTTV_BOARD_DVICO_DVBT_LITE,    "DViCO FusionHDTV DVB-T Lite" },
        { 0xd50018ac, BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE,    "DViCO FusionHDTV 5 Lite" },
 
@@ -337,8 +334,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 2, 0, 0, 0 },
-               .gpiomute       = 10,
+               .audiomux       = { 2, 0, 0, 0, 10 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -352,8 +348,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 1, 2, 3 },
-               .gpiomute       = 4,
+               .audiomux       = { 0, 1, 2, 3, 4 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -367,8 +362,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 4, 0, 2, 3 },
-               .gpiomute       = 1,
+               .audiomux       = { 4, 0, 2, 3, 1 },
                .no_msp34xx     = 1,
                .needs_tvaudio  = 1,
                .tuner_type     = TUNER_PHILIPS_NTSC,
@@ -387,7 +381,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0 },
+               .audiomux       = { 0 },
                .needs_tvaudio  = 0,
                .tuner_type     = 4,
                .tuner_addr     = ADDR_UNSET,
@@ -401,8 +395,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 0 },
-               .gpiomux        = { 0, 1, 0, 1 },
-               .gpiomute       = 3,
+               .audiomux       = { 0, 1, 0, 1, 3 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -416,7 +409,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 3,
                .muxsel         = { 2, 3, 1, 1 },
                .gpiomask       = 0x0f,
-               .gpiomux        = { 0x0c, 0x04, 0x08, 0x04 },
+               .audiomux       = { 0x0c, 0x04, 0x08, 0x04, 0 },
                /*                0x04 for some cards ?? */
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
@@ -433,7 +426,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 3,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0 },
-               .gpiomux        = { 0 },
+               .audiomux       = { 0 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -449,8 +442,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0xc00,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 0xc00, 0x800, 0x400 },
-               .gpiomute       = 0xc00,
+               .audiomux       = { 0, 0xc00, 0x800, 0x400, 0xc00, 0 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -465,7 +457,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 1, 1, 2, 3 },
+               .audiomux       = { 1, 1, 2, 3, 0 },
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_PAL,
@@ -480,8 +472,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x0f, /* old: 7 */
                .muxsel         = { 2, 0, 1, 1 },
-               .gpiomux        = { 0, 1, 2, 3 },
-               .gpiomute       = 4,
+               .audiomux       = { 0, 1, 2, 3, 4 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -496,8 +487,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x3014f,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0x20001,0x10001, 0, 0 },
-               .gpiomute       = 10,
+               .audiomux       = { 0x20001,0x10001, 0, 0,10 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -513,7 +503,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 13, 14, 11, 7 },
+               .audiomux       = { 13, 14, 11, 7, 0, 0 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -527,7 +517,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 13, 14, 11, 7 },
+               .audiomux       = { 13, 14, 11, 7, 0, 0 },
                .needs_tvaudio  = 1,
                .msp34xx_alt    = 1,
                .pll            = PLL_28,
@@ -545,8 +535,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 2, 1, 3 }, /* old: {0, 1, 2, 3, 4} */
-               .gpiomute       = 4,
+               .audiomux       = { 0, 2, 1, 3, 4 }, /* old: {0, 1, 2, 3, 4} */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -561,8 +550,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 0, 1, 0 },
-               .gpiomute       = 10,
+               .audiomux       = { 0 , 0, 1 , 0, 10 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -580,11 +568,10 @@ struct tvcard bttv_tvcards[] = {
                .muxsel         = { 2, 3, 1, 1 },
        #if 0
                /* old */
-               .gpiomux        = { 0x01c000, 0, 0x018000, 0x014000, 0x002000 },
+               .audiomux       = { 0x01c000, 0, 0x018000, 0x014000, 0x002000, 0 },
        #else
                /* 2003-10-20 by "Anton A. Arapov" <arapov@mail.ru> */
-               .gpiomux        = { 0x001e00, 0, 0x018000, 0x014000 },
-               .gpiomute       = 0x002000,
+               .audiomux       = { 0x001e00, 0, 0x018000, 0x014000, 0x002000, 0 },
        #endif
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
@@ -598,8 +585,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x8300f8,
                .muxsel         = { 2, 3, 1, 1,0 },
-               .gpiomux        = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007 },
-               .gpiomute       = 0xcfa007,
+               .audiomux       = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -615,7 +601,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 1, 0, 0, 0 },
+               .audiomux       = { 1, 0, 0, 0, 0 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -629,7 +615,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = -1,
                .gpiomask       = 0x8dff00,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0 },
+               .audiomux       = { 0 },
                .no_msp34xx     = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -656,8 +642,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 0x800, 0x1000, 0x1000 },
-               .gpiomute       = 0x1800,
+               .audiomux       = { 0, 0x800, 0x1000, 0x1000, 0x1800 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL_I,
                .tuner_addr     = ADDR_UNSET,
@@ -671,8 +656,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0xc00,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 1, 0x800, 0x400 },
-               .gpiomute       = 0xc00,
+               .audiomux       = { 0, 1, 0x800, 0x400, 0xc00, 0 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -688,7 +672,7 @@ struct tvcard bttv_tvcards[] = {
                .gpiomask       = 7,
                .muxsel         = { 2, 3, -1 },
                .digital_mode   = DIGITAL_MODE_CAMERA,
-               .gpiomux        = { 0, 0, 0, 0 },
+               .audiomux       = { 0, 0, 0, 0, 0 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_ALPS_TSBB5_PAL_I,
@@ -705,8 +689,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0xe00,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = {0x400, 0x400, 0x400, 0x400 },
-               .gpiomute       = 0xc00,
+               .audiomux       = {0x400, 0x400, 0x400, 0x400, 0xc00 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -722,8 +705,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x1f0fff,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0x20000, 0x30000, 0x10000, 0 },
-               .gpiomute       = 0x40000,
+               .audiomux       = { 0x20000, 0x30000, 0x10000, 0, 0x40000 },
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
@@ -738,8 +720,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 3,
                .gpiomask       = 7,
                .muxsel         = { 2, 0, 1, 1 },
-               .gpiomux        = { 0, 1, 2, 3 },
-               .gpiomute       = 4,
+               .audiomux       = { 0, 1, 2, 3, 4 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -753,8 +734,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 0x800, 0x1000, 0x1000 },
-               .gpiomute       = 0x1800,
+               .audiomux       = { 0, 0x800, 0x1000, 0x1000, 0x1800 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_SECAM,
                .tuner_addr     = ADDR_UNSET,
@@ -770,8 +750,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x1f0fff,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0x20000, 0x30000, 0x10000, 0x00000 },
-               .gpiomute       = 0x40000,
+               .audiomux       = { 0x20000, 0x30000, 0x10000, 0x00000, 0x40000 },
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
@@ -818,7 +797,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 1, /* was: 4 */
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0},
-               .gpiomux        = { 0 },
+               .audiomux       = { 0 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -834,8 +813,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x1800,  /* 0x8dfe00 */
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 0x0800, 0x1000, 0x1000 },
-               .gpiomute       = 0x1800,
+               .audiomux       = { 0, 0x0800, 0x1000, 0x1000, 0x1800, 0 },
                .pll            = PLL_28,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -849,7 +827,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 3,
                .gpiomask       = 1,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 1, 0, 0, 0 },
+               .audiomux       = { 1, 0, 0, 0, 0 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
@@ -865,7 +843,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0 },
+               .audiomux       = { 0 },
                .needs_tvaudio  = 0,
                .tuner_type     = 4,
                .tuner_addr     = ADDR_UNSET,
@@ -879,8 +857,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0xffff00,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0x500, 0, 0x300, 0x900 },
-               .gpiomute       = 0x900,
+               .audiomux       = { 0x500, 0, 0x300, 0x900, 0x900 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
@@ -896,12 +873,11 @@ struct tvcard bttv_tvcards[] = {
                .muxsel         = { 2, 3, 1, 1, 0 }, /* TV, CVid, SVid, CVid over SVid connector */
        #if 0
                .gpiomask       = 0xc33000,
-               .gpiomux        = { 0x422000,0x1000,0x0000,0x620000,0x800000 },
+               .audiomux       = { 0x422000,0x1000,0x0000,0x620000,0x800000 },
        #else
                /* Alexander Varakin <avarakin@hotmail.com> [stereo version] */
                .gpiomask       = 0xb33000,
-               .gpiomux        = { 0x122000,0x1000,0x0000,0x620000 },
-               .gpiomute       = 0x800000,
+               .audiomux       = { 0x122000,0x1000,0x0000,0x620000,0x800000 },
        #endif
                /* Audio Routing for "WinFast 2000 XP" (no tv stereo !)
                        gpio23 -- hef4052:nEnable (0x800000)
@@ -931,8 +907,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 0x800, 0x1000, 0x1000 },
-               .gpiomute       = 0x1800,
+               .audiomux       = { 0, 0x800, 0x1000, 0x1000, 0x1800 },
                .pll            = PLL_28,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -948,8 +923,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 0x800, 0x1000, 0x1000 },
-               .gpiomute       = 0x1800,
+               .audiomux       = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 },
                .pll            = PLL_28,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -964,8 +938,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0xff,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0x21, 0x20, 0x24, 0x2c },
-               .gpiomute       = 0x29,
+               .audiomux       = { 0x21, 0x20, 0x24, 0x2c, 0x29, 0x29 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -980,8 +953,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x551e00,
                .muxsel         = { 2, 3, 1, 0 },
-               .gpiomux        = { 0x551400, 0x551200, 0, 0 },
-               .gpiomute       = 0x551c00,
+               .audiomux       = { 0x551400, 0x551200, 0, 0, 0x551c00, 0x551200 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = 1,
@@ -997,8 +969,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x03000F,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 2, 0xd0001, 0, 0 },
-               .gpiomute       = 1,
+               .audiomux       = { 2, 0xd0001, 0, 0, 1 },
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -1015,8 +986,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 4, 0, 2, 3 },
-               .gpiomute       = 1,
+               .audiomux       = { 4, 0, 2, 3, 1 },
                .no_msp34xx     = 1,
                .needs_tvaudio  = 1,
                .tuner_type     = TUNER_PHILIPS_NTSC,
@@ -1033,7 +1003,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 13, 4, 11, 7 },
+               .audiomux       = { 13, 4, 11, 7, 0, 0 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -1050,7 +1020,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1},
-               .gpiomux        = { 0, 0, 0, 0},
+               .audiomux       = { 0, 0, 0, 0, 0},
                .needs_tvaudio  = 1,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
@@ -1066,8 +1036,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0xe00b,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0xff9ff6, 0xff9ff6, 0xff1ff7, 0 },
-               .gpiomute       = 0xff3ffc,
+               .audiomux       = { 0xff9ff6, 0xff9ff6, 0xff1ff7, 0, 0xff3ffc },
                .no_msp34xx     = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -1083,8 +1052,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = -1,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 1, 1, 0, 2 },
-               .gpiomute       = 3,
+               .audiomux       = { 1, 1, 0, 2, 3 },
                .no_msp34xx     = 1,
                .pll            = PLL_NONE,
                .tuner_type     = -1,
@@ -1099,7 +1067,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 3,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0 },
-               .gpiomux        = { 0 },
+               .audiomux       = { 0 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -1114,8 +1082,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0xbcf03f,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0xbc803f, 0xbc903f, 0xbcb03f, 0 },
-               .gpiomute       = 0xbcb03f,
+               .audiomux       = { 0xbc803f, 0xbc903f, 0xbcb03f, 0, 0xbcb03f },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = 21,
@@ -1130,8 +1097,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x70000,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0x20000, 0x30000, 0x10000, 0 },
-               .gpiomute       = 0x40000,
+               .audiomux       = { 0x20000, 0x30000, 0x10000, 0, 0x40000, 0x20000 },
                .needs_tvaudio  = 1,
                .no_msp34xx     = 1,
                .pll            = PLL_35,
@@ -1150,8 +1116,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = {2,0,0,0 },
-               .gpiomute       = 1,
+               .audiomux       = {2,0,0,0,1 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -1166,7 +1131,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x010f00,
                .muxsel         = {2, 3, 0, 0 },
-               .gpiomux        = {0x10000, 0, 0x10000, 0 },
+               .audiomux       = {0x10000, 0, 0x10000, 0, 0, 0 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_ALPS_TSHC6_NTSC,
@@ -1183,8 +1148,7 @@ struct tvcard bttv_tvcards[] = {
                .gpiomask       = 0xAA0000,
                .muxsel         = { 2,3,1,1,-1 },
                .digital_mode   = DIGITAL_MODE_CAMERA,
-               .gpiomux        = { 0x20000, 0, 0x80000, 0x80000 },
-               .gpiomute       = 0xa8000,
+               .audiomux       = { 0x20000, 0, 0x80000, 0x80000, 0xa8000, 0x46000  },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL_I,
@@ -1209,8 +1173,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 0, 1, 1 },
-               .gpiomux        = { 0, 1, 2, 3 },
-               .gpiomute       = 4,
+               .audiomux       = { 0, 1, 2, 3, 4 },
                .pll            = PLL_28,
                .tuner_type     = -1 /* TUNER_ALPS_TMDH2_NTSC */,
                .tuner_addr     = ADDR_UNSET,
@@ -1227,8 +1190,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 3,
                .gpiomask       = 0x03000F,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 1, 0xd0001, 0, 0 },
-               .gpiomute       = 10,
+               .audiomux       = { 1, 0xd0001, 0, 0, 10 },
                                /* sound path (5 sources):
                                MUX1 (mask 0x03), Enable Pin 0x08 (0=enable, 1=disable)
                                        0= ext. Audio IN
@@ -1254,8 +1216,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x1c,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 0, 0x10, 8 },
-               .gpiomute       = 4,
+               .audiomux       = { 0, 0, 0x10, 8, 4 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
@@ -1267,7 +1228,7 @@ struct tvcard bttv_tvcards[] = {
                /* Tim Röstermundt <rosterm@uni-muenster.de>
                in de.comp.os.unix.linux.hardware:
                        options bttv card=0 pll=1 radio=1 gpiomask=0x18e0
-                       gpiomux =0x44c71f,0x44d71f,0,0x44d71f,0x44dfff
+                       audiomux=0x44c71f,0x44d71f,0,0x44d71f,0x44dfff
                        options tuner type=5 */
                .name           = "Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]",
                .video_inputs   = 4,
@@ -1276,8 +1237,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x18e0,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0x0000,0x0800,0x1000,0x1000 },
-               .gpiomute       = 0x18e0,
+               .audiomux       = { 0x0000,0x0800,0x1000,0x1000,0x18e0 },
                        /* For cards with tda9820/tda9821:
                                0x0000: Tuner normal stereo
                                0x0080: Tuner A2 SAP (second audio program = Zweikanalton)
@@ -1297,8 +1257,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0xF,
                .muxsel         = { 2, 3, 1, 0 },
-               .gpiomux        = { 2, 0, 0, 0 },
-               .gpiomute       = 10,
+               .audiomux       = { 2, 0, 0, 0, 10 },
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_PAL,
@@ -1316,8 +1275,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 0x800, 0x1000, 0x1000 },
-               .gpiomute       = 0x1800,
+               .audiomux       = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 },
                .pll            = PLL_28,
                .tuner_type     = 5,
                .tuner_addr     = ADDR_UNSET,
@@ -1334,7 +1292,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 1,
                .gpiomask       = 0,
                .muxsel         = { 3, 1 },
-               .gpiomux        = { 0 },
+               .audiomux       = { 0 },
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_35,
@@ -1351,8 +1309,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0xe00,
                .muxsel         = { 2, 3, 1, 1},
-               .gpiomux        = { 0x400, 0x400, 0x400, 0x400 },
-               .gpiomute       = 0x800,
+               .audiomux       = { 0x400, 0x400, 0x400, 0x400, 0x800, 0x400 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_4036FY5_NTSC,
@@ -1368,8 +1325,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x03000F,
                .muxsel         = { 2, 3, 1, 0 },
-               .gpiomux        = { 2, 0, 0, 0 },
-               .gpiomute       = 1,
+               .audiomux       = { 2, 0, 0, 0, 1 },
                .pll            = PLL_28,
                .tuner_type     = 0,
                .tuner_addr     = ADDR_UNSET,
@@ -1386,8 +1342,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = -1,
                .gpiomask       = 11,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 2, 0, 0, 1 },
-               .gpiomute       = 8,
+               .audiomux       = { 2, 0, 0, 1, 8 },
                .pll            = PLL_35,
                .tuner_type     = TUNER_TEMIC_PAL,
                .tuner_addr     = ADDR_UNSET,
@@ -1402,7 +1357,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 1,
                .gpiomask       = 0xF,
                .muxsel         = { 2, 2 },
-               .gpiomux        = { },
+               .audiomux       = { },
                .no_msp34xx     = 1,
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
@@ -1421,8 +1376,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0xFF,
                .muxsel         = { 2, 3, 1, 0 },
-               .gpiomux        = { 1, 0, 4, 4 },
-               .gpiomute       = 9,
+               .audiomux       = { 1, 0, 4, 4, 9 },
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
@@ -1438,8 +1392,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0xf03f,
                .muxsel         = { 2, 3, 1, 0 },
-               .gpiomux        = { 0xbffe, 0, 0xbfff, 0 },
-               .gpiomute       = 0xbffe,
+               .audiomux       = { 0xbffe, 0, 0xbfff, 0, 0xbffe },
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_4006FN5_MULTI_PAL,
                .tuner_addr     = ADDR_UNSET,
@@ -1456,7 +1409,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = -1,
                .gpiomask       = 1,
                .muxsel         = { 2, 3, 0, 1 },
-               .gpiomux        = { 0, 0, 1, 0 },
+               .audiomux       = { 0, 0, 1, 0, 0 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_4006FN5_MULTI_PAL,
@@ -1475,8 +1428,7 @@ struct tvcard bttv_tvcards[] = {
                                /* Radio changed from 1e80 to 0x800 to make
                                FlyVideo2000S in .hu happy (gm)*/
                                /* -dk-???: set mute=0x1800 for tda9874h daughterboard */
-               .gpiomux        = { 0x0000,0x0800,0x1000,0x1000 },
-               .gpiomute       = 0x1800,
+               .audiomux       = { 0x0000,0x0800,0x1000,0x1000,0x1800, 0x1080 },
                .audio_hook     = fv2000s_audio,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
@@ -1494,8 +1446,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0xffff00,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0x500, 0x500, 0x300, 0x900 },
-               .gpiomute       = 0x900,
+               .audiomux       = { 0x500, 0x500, 0x300, 0x900, 0x900 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
@@ -1512,7 +1463,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x010f00,
                .muxsel         = {2, 3, 0, 0 },
-               .gpiomux        = {0x10000, 0, 0x10000, 0 },
+               .audiomux       = {0x10000, 0, 0x10000, 0, 0, 0 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_SHARP_2U5JF5540_NTSC,
@@ -1533,8 +1484,7 @@ struct tvcard bttv_tvcards[] = {
                .gpiomask       = 0x4f8a00,
                /* 0x100000: 1=MSP enabled (0=disable again)
                * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
-               .gpiomux        = {0x947fff, 0x987fff,0x947fff,0x947fff },
-               .gpiomute       = 0x947fff,
+               .audiomux       = {0x947fff, 0x987fff,0x947fff,0x947fff, 0x947fff},
                /* tvtuner, radio,   external,internal, mute,  stereo
                * tuner, Composit, SVid, Composit-on-Svid-adapter */
                .muxsel         = { 2, 3 ,0 ,1 },
@@ -1566,8 +1516,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 0, 11, 7 }, /* TV and Radio with same GPIO ! */
-               .gpiomute       = 13,
+               .audiomux       = { 0, 0, 11, 7, 13, 0 }, /* TV and Radio with same GPIO ! */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = 25,
@@ -1606,8 +1555,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x3f,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0x01, 0x00, 0x03, 0x03 },
-               .gpiomute       = 0x09,
+               .audiomux       = { 0x01, 0x00, 0x03, 0x03, 0x09, 0x02 },
                .needs_tvaudio  = 1,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
@@ -1636,7 +1584,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 4,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0 },
-               .gpiomux        = { 0 },
+               .audiomux       = { 0 },
                .needs_tvaudio  = 0,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
@@ -1668,8 +1616,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x1C800F,  /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset */
                .muxsel         = { 2, 1, 1, },
-               .gpiomux        = { 0, 1, 2, 2 },
-               .gpiomute       = 4,
+               .audiomux       = { 0, 1, 2, 2, 4 },
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
@@ -1688,8 +1635,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x140007,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 1, 2, 3 },
-               .gpiomute       = 4,
+               .audiomux       = { 0, 1, 2, 3, 4, 0 },
                .tuner_type     = TUNER_PHILIPS_NTSC,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
@@ -1703,7 +1649,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = -1,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0 },
-               .gpiomux        = { 0 },
+               .audiomux       = { 0 },
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
@@ -1719,14 +1665,13 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },   /* Tuner, SVid, SVHS, SVid to SVHS connector */
-               .gpiomux        = { 0, 0, 4, 4 },/* Yes, this tuner uses the same audio output for TV and FM radio!
+               .audiomux       = { 0 ,0 ,4, 4,4,4},/* Yes, this tuner uses the same audio output for TV and FM radio!
                                                * This card lacks external Audio In, so we mute it on Ext. & Int.
                                                * The PCB can take a sbx1637/sbx1673, wiring unknown.
                                                * This card lacks PCI subsystem ID, sigh.
-                                               * gpiomux =1: lower volume, 2+3: mute
+                                               * audiomux=1: lower volume, 2+3: mute
                                                * btwincap uses 0x80000/0x80003
                                                */
-               .gpiomute       = 4,
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
@@ -1773,7 +1718,7 @@ struct tvcard bttv_tvcards[] = {
                .radio_addr     = ADDR_UNSET,
 
                .gpiomask       = 7,
-               .gpiomux        = {7},
+               .audiomux       = {7},
        },
        [BTTV_BOARD_GVBCTV5PCI] = {
                .name           = "IODATA GV-BCTV5/PCI",
@@ -1783,8 +1728,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x0f0f80,
                .muxsel         = {2, 3, 1, 0 },
-               .gpiomux        = {0x030000, 0x010000, 0, 0 },
-               .gpiomute       = 0x020000,
+               .audiomux       = {0x030000, 0x010000, 0, 0, 0x020000, 0},
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_NTSC_M,
@@ -2014,7 +1958,7 @@ struct tvcard bttv_tvcards[] = {
                .gpiomask       = 2,
                /* TV, Comp1, Composite over SVID con, SVID */
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 2, 2, 0, 0 },
+               .audiomux       = { 2, 2, 0, 0, 0 },
                .pll            = PLL_28,
                .has_radio      = 1,
                .tuner_type     = TUNER_PHILIPS_PAL,
@@ -2038,8 +1982,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = -1,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1},
-               .gpiomux        = { 0, 1, 2, 3},
-               .gpiomute       = 4,
+               .audiomux       = { 0, 1, 2, 3, 4},
                .needs_tvaudio  = 1,
                .tuner_type     = 5,
                .tuner_addr     = ADDR_UNSET,
@@ -2071,7 +2014,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = -1,
                .gpiomask       = 0,
                .muxsel         = { 2, 3 },
-               .gpiomux        = { 0 },
+               .audiomux       = { 0 },
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
@@ -2090,8 +2033,7 @@ struct tvcard bttv_tvcards[] = {
                .gpiomask       = 0x001e8007,
                .muxsel         = { 2, 3, 1, 0 },
                /*                  Tuner, Radio, external, internal, off,  on */
-               .gpiomux        = { 0x08,  0x0f,  0x0a,     0x08 },
-               .gpiomute       = 0x0f,
+               .audiomux       = { 0x08,  0x0f,  0x0a,     0x08,     0x0f, 0x08 },
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
@@ -2208,7 +2150,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = -1,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0 },
-               .gpiomux        = { 0 },
+               .audiomux       = { 0 },
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
@@ -2225,7 +2167,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 3,
                .gpiomask       = 0x00,
                .muxsel         = { 2, 3, 1, 0 },
-               .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
+               .audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -2240,7 +2182,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 3,
                .gpiomask       = 0x00,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
+               .audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -2260,7 +2202,7 @@ struct tvcard bttv_tvcards[] = {
                                        via the upper nibble of muxsel. here: used for
                                        xternal video-mux */
                .muxsel         = { 0x02, 0x12, 0x22, 0x32, 0x03, 0x13, 0x23, 0x33, 0x01, 0x00 },
-               .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
+               .audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -2278,7 +2220,7 @@ struct tvcard bttv_tvcards[] = {
                                        via the upper nibble of muxsel. here: used for
                                        xternal video-mux */
                .muxsel         = { 0x02, 0x12, 0x22, 0x32, 0x03, 0x13, 0x23, 0x33, 0x01, 0x01 },
-               .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
+               .audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
@@ -2366,7 +2308,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 1, 1, 1, 1 },
+               .audiomux       = { 1, 1, 1, 1, 0 },
                .needs_tvaudio  = 1,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
@@ -2397,8 +2339,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x008007,
                .muxsel         = { 2, 3, 0, 0 },
-               .gpiomux        = { 0, 0, 0, 0 },
-               .gpiomute       = 0x000003,
+               .audiomux       = { 0, 0, 0, 0, 0x000003, 0 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
@@ -2434,7 +2375,7 @@ struct tvcard bttv_tvcards[] = {
                .needs_tvaudio  = 0,
                .gpiomask       = 0x68,
                .muxsel         = { 2, 3, 1 },
-               .gpiomux        = { 0x68, 0x68, 0x61, 0x61 },
+               .audiomux       = { 0x68, 0x68, 0x61, 0x61, 0x00 },
                .pll            = PLL_28,
        },
 
@@ -2449,8 +2390,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x008007,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 1, 2, 2 },
-               .gpiomute       = 3,
+               .audiomux       = { 0, 1, 2, 2, 3 },
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
@@ -2475,7 +2415,7 @@ struct tvcard bttv_tvcards[] = {
                .no_tda9875     = 1,
                .no_tda7432     = 1,
                .muxsel         = {2,2,2,2},/*878A input is always MUX0, see above.*/
-               .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
+               .audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
                .pll            = PLL_28,
                .needs_tvaudio  = 0,
                .muxsel_hook    = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/
@@ -2493,7 +2433,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x0000000f,
                .muxsel         = { 2, 1, 1 },
-               .gpiomux        = { 0x02, 0x00, 0x00, 0x00 },
+               .audiomux       = { 0x02, 0x00, 0x00, 0x00, 0x00 },
                .tuner_type     = TUNER_TEMIC_PAL,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
@@ -2549,7 +2489,7 @@ struct tvcard bttv_tvcards[] = {
                .muxsel           = { 2, 2, 2, 2, 2, 2, 2, 2,
                                3, 3, 3, 3, 3, 3, 3, 3 },
                .muxsel_hook      = sigmaSQ_muxsel,
-               .gpiomux          = { 0 },
+               .audiomux         = { 0 },
                .no_msp34xx       = 1,
                .pll              = PLL_28,
                .tuner_type       = -1,
@@ -2566,7 +2506,7 @@ struct tvcard bttv_tvcards[] = {
                .gpiomask         = 0x0,
                .muxsel           = { 2, 2, 2, 2 },
                .muxsel_hook      = sigmaSLC_muxsel,
-               .gpiomux          = { 0 },
+               .audiomux         = { 0 },
                .no_msp34xx       = 1,
                .pll              = PLL_28,
                .tuner_type       = -1,
@@ -2584,8 +2524,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = -1,
                .gpiomask       = 0xFF,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 2, 0, 0, 0 },
-               .gpiomute       = 10,
+               .audiomux       = { 2, 0, 0, 0, 10 },
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
@@ -2619,8 +2558,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x3f,
                .muxsel         = {2, 3, 1, 0 },
-               .gpiomux        = {0x31, 0x31, 0x31, 0x31 },
-               .gpiomute       = 0x31,
+               .audiomux       = {0x31, 0x31, 0x31, 0x31, 0x31, 0x31 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_NTSC_M,
@@ -2643,7 +2581,7 @@ struct tvcard bttv_tvcards[] = {
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .gpiomask       = 0x008007,
-               .gpiomux        = { 0, 0x000001,0,0 },
+               .audiomux       = { 0, 0x000001,0,0, 0 },
                .needs_tvaudio  = 1,
                .has_radio      = 1,
        },
@@ -2753,8 +2691,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .muxsel         = { 2, 3, 1 },
                .gpiomask       = 0x00e00007,
-               .gpiomux        = { 0x00400005, 0, 0x00000001, 0 },
-               .gpiomute       = 0x00c00007,
+               .audiomux       = { 0x00400005, 0, 0x00000001, 0, 0x00c00007, 0 },
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -2770,8 +2707,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x01fe00,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0x001e00, 0, 0x018000, 0x014000 },
-               .gpiomute       = 0x002000,
+               .audiomux       = { 0x001e00, 0, 0x018000, 0x014000, 0x002000, 0 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_YMEC_TVF66T5_B_DFF,
@@ -2788,8 +2724,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x001c0007,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 1, 2, 2 },
-               .gpiomute       = 3,
+               .audiomux       = { 0, 1, 2, 2, 3 },
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = TUNER_TENA_9533_DI,
@@ -2808,8 +2743,7 @@ struct tvcard bttv_tvcards[] = {
                .gpiomask      = 0x01fe00,
                .muxsel        = { 2,3,1,1,-1 },
                .digital_mode  = DIGITAL_MODE_CAMERA,
-               .gpiomux       = { 0x00400, 0x10400, 0x04400, 0x80000 },
-               .gpiomute      = 0x12400,
+               .audiomux      = { 0x00400, 0x10400, 0x04400, 0x80000, 0x12400, 0x46000  },
                .no_msp34xx    = 1,
                .pll           = PLL_28,
                .tuner_type    = TUNER_LG_PAL_FM,
@@ -2827,8 +2761,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x3f,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0x21, 0x20, 0x24, 0x2c },
-               .gpiomute       = 0x29,
+               .audiomux       = { 0x21, 0x20, 0x24, 0x2c, 0x29, 0x29 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_YMEC_TVF_5533MF,
@@ -2862,8 +2795,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 2, 0, 0, 0 },
-               .gpiomute       = 1,
+               .audiomux       = { 2, 0, 0, 0, 1 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = 2,
@@ -2879,7 +2811,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 0x108007,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 100000, 100002, 100002, 100000 },
+               .audiomux       = { 100000, 100002, 100002, 100000 },
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
@@ -2919,8 +2851,7 @@ struct tvcard bttv_tvcards[] = {
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
-               .gpiomux        = { 0, 1, 2, 3 },
-               .gpiomute       = 4,
+               .audiomux       = { 0, 1, 2, 3, 4 },
                .tuner_type     = TUNER_TEMIC_4009FR5_PAL,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
@@ -2991,21 +2922,21 @@ void __devinit bttv_idcard(struct bttv *btv)
 
        if (UNSET != audiomux[0]) {
                gpiobits = 0;
-               for (i = 0; i < 4; i++) {
-                       bttv_tvcards[btv->c.type].gpiomux[i] = audiomux[i];
+               for (i = 0; i < 5; i++) {
+                       bttv_tvcards[btv->c.type].audiomux[i] = audiomux[i];
                        gpiobits |= audiomux[i];
                }
        } else {
                gpiobits = audioall;
-               for (i = 0; i < 4; i++) {
-                       bttv_tvcards[btv->c.type].gpiomux[i] = audioall;
+               for (i = 0; i < 5; i++) {
+                       bttv_tvcards[btv->c.type].audiomux[i] = audioall;
                }
        }
        bttv_tvcards[btv->c.type].gpiomask = (UNSET != gpiomask) ? gpiomask : gpiobits;
        printk(KERN_INFO "bttv%d: gpio config override: mask=0x%x, mux=",
               btv->c.nr,bttv_tvcards[btv->c.type].gpiomask);
        for (i = 0; i < 5; i++) {
-               printk("%s0x%x", i ? "," : "", bttv_tvcards[btv->c.type].gpiomux[i]);
+               printk("%s0x%x", i ? "," : "", bttv_tvcards[btv->c.type].audiomux[i]);
        }
        printk("\n");
 }
@@ -3113,7 +3044,7 @@ static void miro_pinnacle_gpio(struct bttv *btv)
        gpio_inout(0xffffff, 0);
        gpio = gpio_read();
        id   = ((gpio>>10) & 63) -1;
-       msp  = bttv_I2CRead(btv, I2C_ADDR_MSP3400, "MSP34xx");
+       msp  = bttv_I2CRead(btv, I2C_MSP3400, "MSP34xx");
        if (id < 32) {
                btv->tuner_type = miro_tunermap[id];
                if (0 == (gpio & 0x20)) {
@@ -3509,8 +3440,8 @@ void __devinit bttv_init_card2(struct bttv *btv)
 
        if (bttv_tvcards[btv->c.type].digital_mode == DIGITAL_MODE_CAMERA) {
                /* detect Bt832 chip for quartzsight digital camera */
-               if ((bttv_I2CRead(btv, I2C_ADDR_BT832_ALT1, "Bt832") >=0) ||
-                   (bttv_I2CRead(btv, I2C_ADDR_BT832_ALT2, "Bt832") >=0))
+               if ((bttv_I2CRead(btv, I2C_BT832_ALT1, "Bt832") >=0) ||
+                   (bttv_I2CRead(btv, I2C_BT832_ALT2, "Bt832") >=0))
                        boot_bt832(btv);
        }
 
@@ -3519,19 +3450,19 @@ void __devinit bttv_init_card2(struct bttv *btv)
 
        /* try to detect audio/fader chips */
        if (!bttv_tvcards[btv->c.type].no_msp34xx &&
-           bttv_I2CRead(btv, I2C_ADDR_MSP3400, "MSP34xx") >=0)
+           bttv_I2CRead(btv, I2C_MSP3400, "MSP34xx") >=0)
                request_module("msp3400");
 
        if (bttv_tvcards[btv->c.type].msp34xx_alt &&
-           bttv_I2CRead(btv, I2C_ADDR_MSP3400_ALT, "MSP34xx (alternate address)") >=0)
+           bttv_I2CRead(btv, I2C_MSP3400_ALT, "MSP34xx (alternate address)") >=0)
                request_module("msp3400");
 
        if (!bttv_tvcards[btv->c.type].no_tda9875 &&
-           bttv_I2CRead(btv, I2C_ADDR_TDA9875, "TDA9875") >=0)
+           bttv_I2CRead(btv, I2C_TDA9875, "TDA9875") >=0)
                request_module("tda9875");
 
        if (!bttv_tvcards[btv->c.type].no_tda7432 &&
-           bttv_I2CRead(btv, I2C_ADDR_TDA7432, "TDA7432") >=0)
+           bttv_I2CRead(btv, I2C_TDA7432, "TDA7432") >=0)
                request_module("tda7432");
 
        if (bttv_tvcards[btv->c.type].needs_tvaudio)
@@ -3542,7 +3473,7 @@ void __devinit bttv_init_card2(struct bttv *btv)
        if (btv->tda9887_conf)
                tda9887 = 1;
        if (0 == tda9887 && 0 == bttv_tvcards[btv->c.type].has_dvb &&
-           bttv_I2CRead(btv, I2C_ADDR_TDA9887, "TDA9887") >=0)
+           bttv_I2CRead(btv, I2C_TDA9887, "TDA9887") >=0)
                tda9887 = 1;
        /* Hybrid DVB card, DOES have a tda9887 */
        if (btv->c.type == BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE)
@@ -3863,18 +3794,18 @@ void bttv_tda9880_setnorm(struct bttv *btv, int norm)
 {
        /* fix up our card entry */
        if(norm==VIDEO_MODE_NTSC) {
-               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x957fff;
-               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x957fff;
+               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].audiomux[0]=0x957fff;
+               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].audiomux[4]=0x957fff;
                dprintk("bttv_tda9880_setnorm to NTSC\n");
        }
        else {
-               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x947fff;
-               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x947fff;
+               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].audiomux[0]=0x947fff;
+               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].audiomux[4]=0x947fff;
                dprintk("bttv_tda9880_setnorm to PAL\n");
        }
        /* set GPIO according */
        gpio_bits(bttv_tvcards[btv->c.type].gpiomask,
-                 bttv_tvcards[btv->c.type].gpiomux[btv->audio]);
+                 bttv_tvcards[btv->c.type].audiomux[btv->audio]);
 }
 
 
@@ -5013,14 +4944,12 @@ void __devinit bttv_check_chipset(void)
        if (vsfx)
                printk(KERN_INFO "bttv: Host bridge needs VSFX enabled.\n");
        if (pcipci_fail) {
-               printk(KERN_INFO "bttv: bttv and your chipset may not work "
-                                                       "together.\n");
+               printk(KERN_WARNING "bttv: BT848 and your chipset may not work together.\n");
                if (!no_overlay) {
-                       printk(KERN_INFO "bttv: overlay will be disabled.\n");
+                       printk(KERN_WARNING "bttv: overlay will be disabled.\n");
                        no_overlay = 1;
                } else {
-                       printk(KERN_INFO "bttv: overlay forced. Use this "
-                                               "option at your own risk.\n");
+                       printk(KERN_WARNING "bttv: overlay forced. Use this option at your own risk.\n");
                }
        }
        if (UNSET != latency)