#include "bttvp.h"
 #include <media/v4l2-common.h>
+#include <media/tvaudio.h>
 
 /* fwd decl */
 static void boot_msp34xx(struct bttv *btv, int pin);
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 2, 0, 0, 0, 10 },
+               .gpiomux        = { 2, 0, 0, 0 },
+               .gpiomute       = 10,
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 1, 2, 3, 4 },
+               .gpiomux        = { 0, 1, 2, 3 },
+               .gpiomute       = 4,
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 4, 0, 2, 3, 1 },
+               .gpiomux        = { 4, 0, 2, 3 },
+               .gpiomute       = 1,
                .no_msp34xx     = 1,
                .needs_tvaudio  = 1,
                .tuner_type     = TUNER_PHILIPS_NTSC,
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0 },
+               .gpiomux        = { 0 },
                .needs_tvaudio  = 0,
                .tuner_type     = 4,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 0 },
-               .audiomux       = { 0, 1, 0, 1, 3 },
+               .gpiomux        = { 0, 1, 0, 1 },
+               .gpiomute       = 3,
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 3,
                .muxsel         = { 2, 3, 1, 1 },
                .gpiomask       = 0x0f,
-               .audiomux       = { 0x0c, 0x04, 0x08, 0x04, 0 },
+               .gpiomux        = { 0x0c, 0x04, 0x08, 0x04 },
                /*                0x04 for some cards ?? */
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .svhs           = 3,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0 },
-               .audiomux       = { 0 },
+               .gpiomux        = { 0 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0xc00,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 0xc00, 0x800, 0x400, 0xc00, 0 },
+               .gpiomux        = { 0, 0xc00, 0x800, 0x400 },
+               .gpiomute       = 0xc00,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .svhs           = 2,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 1, 1, 2, 3, 0 },
+               .gpiomux        = { 1, 1, 2, 3 },
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_PAL,
                .svhs           = 2,
                .gpiomask       = 0x0f, /* old: 7 */
                .muxsel         = { 2, 0, 1, 1 },
-               .audiomux       = { 0, 1, 2, 3, 4 },
+               .gpiomux        = { 0, 1, 2, 3 },
+               .gpiomute       = 4,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .svhs           = 2,
                .gpiomask       = 0x3014f,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0x20001,0x10001, 0, 0,10 },
+               .gpiomux        = { 0x20001,0x10001, 0, 0 },
+               .gpiomute       = 10,
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 13, 14, 11, 7, 0, 0 },
+               .gpiomux        = { 13, 14, 11, 7 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 13, 14, 11, 7, 0, 0 },
+               .gpiomux        = { 13, 14, 11, 7 },
                .needs_tvaudio  = 1,
                .msp34xx_alt    = 1,
                .pll            = PLL_28,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 2, 1, 3, 4 }, /* old: {0, 1, 2, 3, 4} */
+               .gpiomux        = { 0, 2, 1, 3 }, /* old: {0, 1, 2, 3, 4} */
+               .gpiomute       = 4,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0 , 0, 1 , 0, 10 },
+               .gpiomux        = { 0, 0, 1, 0 },
+               .gpiomute       = 10,
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .muxsel         = { 2, 3, 1, 1 },
        #if 0
                /* old */
-               .audiomux       = { 0x01c000, 0, 0x018000, 0x014000, 0x002000, 0 },
+               .gpiomux        = { 0x01c000, 0, 0x018000, 0x014000, 0x002000 },
        #else
                /* 2003-10-20 by "Anton A. Arapov" <arapov@mail.ru> */
-               .audiomux       = { 0x001e00, 0, 0x018000, 0x014000, 0x002000, 0 },
+               .gpiomux        = { 0x001e00, 0, 0x018000, 0x014000 },
+               .gpiomute       = 0x002000,
        #endif
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .svhs           = 2,
                .gpiomask       = 0x8300f8,
                .muxsel         = { 2, 3, 1, 1,0 },
-               .audiomux       = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007 },
+               .gpiomux        = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007 },
+               .gpiomute       = 0xcfa007,
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 1, 0, 0, 0, 0 },
+               .gpiomux        = { 1, 0, 0, 0 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = -1,
                .gpiomask       = 0x8dff00,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0 },
+               .gpiomux        = { 0 },
                .no_msp34xx     = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 0x800, 0x1000, 0x1000, 0x1800 },
+               .gpiomux        = { 0, 0x800, 0x1000, 0x1000 },
+               .gpiomute       = 0x1800,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL_I,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0xc00,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 1, 0x800, 0x400, 0xc00, 0 },
+               .gpiomux        = { 0, 1, 0x800, 0x400 },
+               .gpiomute       = 0xc00,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, -1 },
                .digital_mode   = DIGITAL_MODE_CAMERA,
-               .audiomux       = { 0, 0, 0, 0, 0 },
+               .gpiomux        = { 0, 0, 0, 0 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_ALPS_TSBB5_PAL_I,
                .svhs           = 2,
                .gpiomask       = 0xe00,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = {0x400, 0x400, 0x400, 0x400, 0xc00 },
+               .gpiomux        = {0x400, 0x400, 0x400, 0x400 },
+               .gpiomute       = 0xc00,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .svhs           = 2,
                .gpiomask       = 0x1f0fff,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0x20000, 0x30000, 0x10000, 0, 0x40000 },
+               .gpiomux        = { 0x20000, 0x30000, 0x10000, 0 },
+               .gpiomute       = 0x40000,
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 3,
                .gpiomask       = 7,
                .muxsel         = { 2, 0, 1, 1 },
-               .audiomux       = { 0, 1, 2, 3, 4 },
+               .gpiomux        = { 0, 1, 2, 3 },
+               .gpiomute       = 4,
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 0x800, 0x1000, 0x1000, 0x1800 },
+               .gpiomux        = { 0, 0x800, 0x1000, 0x1000 },
+               .gpiomute       = 0x1800,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_SECAM,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0x1f0fff,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0x20000, 0x30000, 0x10000, 0x00000, 0x40000 },
+               .gpiomux        = { 0x20000, 0x30000, 0x10000, 0x00000 },
+               .gpiomute       = 0x40000,
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 1, /* was: 4 */
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0},
-               .audiomux       = { 0 },
+               .gpiomux        = { 0 },
                .needs_tvaudio  = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0x1800,  /* 0x8dfe00 */
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 0x0800, 0x1000, 0x1000, 0x1800, 0 },
+               .gpiomux        = { 0, 0x0800, 0x1000, 0x1000 },
+               .gpiomute       = 0x1800,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 3,
                .gpiomask       = 1,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 1, 0, 0, 0, 0 },
+               .gpiomux        = { 1, 0, 0, 0 },
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0 },
+               .gpiomux        = { 0 },
                .needs_tvaudio  = 0,
                .tuner_type     = 4,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0xffff00,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0x500, 0, 0x300, 0x900, 0x900 },
+               .gpiomux        = { 0x500, 0, 0x300, 0x900 },
+               .gpiomute       = 0x900,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .muxsel         = { 2, 3, 1, 1, 0 }, /* TV, CVid, SVid, CVid over SVid connector */
        #if 0
                .gpiomask       = 0xc33000,
-               .audiomux       = { 0x422000,0x1000,0x0000,0x620000,0x800000 },
+               .gpiomux        = { 0x422000,0x1000,0x0000,0x620000,0x800000 },
        #else
                /* Alexander Varakin <avarakin@hotmail.com> [stereo version] */
                .gpiomask       = 0xb33000,
-               .audiomux       = { 0x122000,0x1000,0x0000,0x620000,0x800000 },
+               .gpiomux        = { 0x122000,0x1000,0x0000,0x620000 },
+               .gpiomute       = 0x800000,
        #endif
                /* Audio Routing for "WinFast 2000 XP" (no tv stereo !)
                        gpio23 -- hef4052:nEnable (0x800000)
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 0x800, 0x1000, 0x1000, 0x1800 },
+               .gpiomux        = { 0, 0x800, 0x1000, 0x1000 },
+               .gpiomute       = 0x1800,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 },
+               .gpiomux        = { 0, 0x800, 0x1000, 0x1000 },
+               .gpiomute       = 0x1800,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0xff,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0x21, 0x20, 0x24, 0x2c, 0x29, 0x29 },
+               .gpiomux        = { 0x21, 0x20, 0x24, 0x2c },
+               .gpiomute       = 0x29,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .svhs           = 2,
                .gpiomask       = 0x551e00,
                .muxsel         = { 2, 3, 1, 0 },
-               .audiomux       = { 0x551400, 0x551200, 0, 0, 0x551c00, 0x551200 },
+               .gpiomux        = { 0x551400, 0x551200, 0, 0 },
+               .gpiomute       = 0x551c00,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = 1,
                .svhs           = 2,
                .gpiomask       = 0x03000F,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 2, 0xd0001, 0, 0, 1 },
+               .gpiomux        = { 2, 0xd0001, 0, 0 },
+               .gpiomute       = 1,
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 4, 0, 2, 3, 1 },
+               .gpiomux        = { 4, 0, 2, 3 },
+               .gpiomute       = 1,
                .no_msp34xx     = 1,
                .needs_tvaudio  = 1,
                .tuner_type     = TUNER_PHILIPS_NTSC,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 13, 4, 11, 7, 0, 0 },
+               .gpiomux        = { 13, 4, 11, 7 },
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .svhs           = 2,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 1},
-               .audiomux       = { 0, 0, 0, 0, 0},
+               .gpiomux        = { 0, 0, 0, 0},
                .needs_tvaudio  = 1,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .svhs           = 2,
                .gpiomask       = 0xe00b,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0xff9ff6, 0xff9ff6, 0xff1ff7, 0, 0xff3ffc },
+               .gpiomux        = { 0xff9ff6, 0xff9ff6, 0xff1ff7, 0 },
+               .gpiomute       = 0xff3ffc,
                .no_msp34xx     = 1,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = -1,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 1, 1, 0, 2, 3 },
+               .gpiomux        = { 1, 1, 0, 2 },
+               .gpiomute       = 3,
                .no_msp34xx     = 1,
                .pll            = PLL_NONE,
                .tuner_type     = -1,
                .svhs           = 3,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0 },
-               .audiomux       = { 0 },
+               .gpiomux        = { 0 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .svhs           = 2,
                .gpiomask       = 0xbcf03f,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0xbc803f, 0xbc903f, 0xbcb03f, 0, 0xbcb03f },
+               .gpiomux        = { 0xbc803f, 0xbc903f, 0xbcb03f, 0 },
+               .gpiomute       = 0xbcb03f,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = 21,
                .svhs           = 2,
                .gpiomask       = 0x70000,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0x20000, 0x30000, 0x10000, 0, 0x40000, 0x20000 },
+               .gpiomux        = { 0x20000, 0x30000, 0x10000, 0 },
+               .gpiomute       = 0x40000,
                .needs_tvaudio  = 1,
                .no_msp34xx     = 1,
                .pll            = PLL_35,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = {2,0,0,0,1 },
+               .gpiomux        = {2,0,0,0 },
+               .gpiomute       = 1,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .svhs           = 2,
                .gpiomask       = 0x010f00,
                .muxsel         = {2, 3, 0, 0 },
-               .audiomux       = {0x10000, 0, 0x10000, 0, 0, 0 },
+               .gpiomux        = {0x10000, 0, 0x10000, 0 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_ALPS_TSHC6_NTSC,
                .gpiomask       = 0xAA0000,
                .muxsel         = { 2,3,1,1,-1 },
                .digital_mode   = DIGITAL_MODE_CAMERA,
-               .audiomux       = { 0x20000, 0, 0x80000, 0x80000, 0xa8000, 0x46000  },
+               .gpiomux        = { 0x20000, 0, 0x80000, 0x80000 },
+               .gpiomute       = 0xa8000,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL_I,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 0, 1, 1 },
-               .audiomux       = { 0, 1, 2, 3, 4 },
+               .gpiomux        = { 0, 1, 2, 3 },
+               .gpiomute       = 4,
                .pll            = PLL_28,
                .tuner_type     = -1 /* TUNER_ALPS_TMDH2_NTSC */,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 3,
                .gpiomask       = 0x03000F,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 1, 0xd0001, 0, 0, 10 },
+               .gpiomux        = { 1, 0xd0001, 0, 0 },
+               .gpiomute       = 10,
                                /* sound path (5 sources):
                                MUX1 (mask 0x03), Enable Pin 0x08 (0=enable, 1=disable)
                                        0= ext. Audio IN
                .svhs           = 2,
                .gpiomask       = 0x1c,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 0, 0x10, 8, 4 },
+               .gpiomux        = { 0, 0, 0x10, 8 },
+               .gpiomute       = 4,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                /* Tim Röstermundt <rosterm@uni-muenster.de>
                in de.comp.os.unix.linux.hardware:
                        options bttv card=0 pll=1 radio=1 gpiomask=0x18e0
-                       audiomux=0x44c71f,0x44d71f,0,0x44d71f,0x44dfff
+                       gpiomux =0x44c71f,0x44d71f,0,0x44d71f,0x44dfff
                        options tuner type=5 */
                .name           = "Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]",
                .video_inputs   = 4,
                .svhs           = 2,
                .gpiomask       = 0x18e0,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0x0000,0x0800,0x1000,0x1000,0x18e0 },
+               .gpiomux        = { 0x0000,0x0800,0x1000,0x1000 },
+               .gpiomute       = 0x18e0,
                        /* For cards with tda9820/tda9821:
                                0x0000: Tuner normal stereo
                                0x0080: Tuner A2 SAP (second audio program = Zweikanalton)
                .svhs           = 2,
                .gpiomask       = 0xF,
                .muxsel         = { 2, 3, 1, 0 },
-               .audiomux       = { 2, 0, 0, 0, 10 },
+               .gpiomux        = { 2, 0, 0, 0 },
+               .gpiomute       = 10,
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_PAL,
                .svhs           = 2,
                .gpiomask       = 0x1800,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 },
+               .gpiomux        = { 0, 0x800, 0x1000, 0x1000 },
+               .gpiomute       = 0x1800,
                .pll            = PLL_28,
                .tuner_type     = 5,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 1,
                .gpiomask       = 0,
                .muxsel         = { 3, 1 },
-               .audiomux       = { 0 },
+               .gpiomux        = { 0 },
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_35,
                .svhs           = 2,
                .gpiomask       = 0xe00,
                .muxsel         = { 2, 3, 1, 1},
-               .audiomux       = { 0x400, 0x400, 0x400, 0x400, 0x800, 0x400 },
+               .gpiomux        = { 0x400, 0x400, 0x400, 0x400 },
+               .gpiomute       = 0x800,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_4036FY5_NTSC,
                .svhs           = 2,
                .gpiomask       = 0x03000F,
                .muxsel         = { 2, 3, 1, 0 },
-               .audiomux       = { 2, 0, 0, 0, 1 },
+               .gpiomux        = { 2, 0, 0, 0 },
+               .gpiomute       = 1,
                .pll            = PLL_28,
                .tuner_type     = 0,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = -1,
                .gpiomask       = 11,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 2, 0, 0, 1, 8 },
+               .gpiomux        = { 2, 0, 0, 1 },
+               .gpiomute       = 8,
                .pll            = PLL_35,
                .tuner_type     = TUNER_TEMIC_PAL,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 1,
                .gpiomask       = 0xF,
                .muxsel         = { 2, 2 },
-               .audiomux       = { },
+               .gpiomux        = { },
                .no_msp34xx     = 1,
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .svhs           = 2,
                .gpiomask       = 0xFF,
                .muxsel         = { 2, 3, 1, 0 },
-               .audiomux       = { 1, 0, 4, 4, 9 },
+               .gpiomux        = { 1, 0, 4, 4 },
+               .gpiomute       = 9,
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .svhs           = 2,
                .gpiomask       = 0xf03f,
                .muxsel         = { 2, 3, 1, 0 },
-               .audiomux       = { 0xbffe, 0, 0xbfff, 0, 0xbffe },
+               .gpiomux        = { 0xbffe, 0, 0xbfff, 0 },
+               .gpiomute       = 0xbffe,
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_4006FN5_MULTI_PAL,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = -1,
                .gpiomask       = 1,
                .muxsel         = { 2, 3, 0, 1 },
-               .audiomux       = { 0, 0, 1, 0, 0 },
+               .gpiomux        = { 0, 0, 1, 0 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_TEMIC_4006FN5_MULTI_PAL,
                                /* Radio changed from 1e80 to 0x800 to make
                                FlyVideo2000S in .hu happy (gm)*/
                                /* -dk-???: set mute=0x1800 for tda9874h daughterboard */
-               .audiomux       = { 0x0000,0x0800,0x1000,0x1000,0x1800, 0x1080 },
+               .gpiomux        = { 0x0000,0x0800,0x1000,0x1000 },
+               .gpiomute       = 0x1800,
                .audio_hook     = fv2000s_audio,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .svhs           = 2,
                .gpiomask       = 0xffff00,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0x500, 0x500, 0x300, 0x900, 0x900 },
+               .gpiomux        = { 0x500, 0x500, 0x300, 0x900 },
+               .gpiomute       = 0x900,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .svhs           = 2,
                .gpiomask       = 0x010f00,
                .muxsel         = {2, 3, 0, 0 },
-               .audiomux       = {0x10000, 0, 0x10000, 0, 0, 0 },
+               .gpiomux        = {0x10000, 0, 0x10000, 0 },
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_SHARP_2U5JF5540_NTSC,
                .gpiomask       = 0x4f8a00,
                /* 0x100000: 1=MSP enabled (0=disable again)
                * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
-               .audiomux       = {0x947fff, 0x987fff,0x947fff,0x947fff, 0x947fff},
+               .gpiomux        = {0x947fff, 0x987fff,0x947fff,0x947fff },
+               .gpiomute       = 0x947fff,
                /* tvtuner, radio,   external,internal, mute,  stereo
                * tuner, Composit, SVid, Composit-on-Svid-adapter */
                .muxsel         = { 2, 3 ,0 ,1 },
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 0, 11, 7, 13, 0 }, /* TV and Radio with same GPIO ! */
+               .gpiomux        = { 0, 0, 11, 7 }, /* TV and Radio with same GPIO ! */
+               .gpiomute       = 13,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = 25,
                .svhs           = 2,
                .gpiomask       = 0x3f,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0x01, 0x00, 0x03, 0x03, 0x09, 0x02 },
+               .gpiomux        = { 0x01, 0x00, 0x03, 0x03 },
+               .gpiomute       = 0x09,
                .needs_tvaudio  = 1,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .svhs           = 4,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0, 0 },
-               .audiomux       = { 0 },
+               .gpiomux        = { 0 },
                .needs_tvaudio  = 0,
                .tuner_type     = -1,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0x1C800F,  /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset */
                .muxsel         = { 2, 1, 1, },
-               .audiomux       = { 0, 1, 2, 2, 4 },
+               .gpiomux        = { 0, 1, 2, 2 },
+               .gpiomute       = 4,
                .needs_tvaudio  = 0,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0x140007,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 1, 2, 3, 4, 0 },
+               .gpiomux        = { 0, 1, 2, 3 },
+               .gpiomute       = 4,
                .tuner_type     = TUNER_PHILIPS_NTSC,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .svhs           = -1,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0 },
-               .audiomux       = { 0 },
+               .gpiomux        = { 0 },
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },   /* Tuner, SVid, SVHS, SVid to SVHS connector */
-               .audiomux       = { 0 ,0 ,4, 4,4,4},/* Yes, this tuner uses the same audio output for TV and FM radio!
+               .gpiomux        = { 0, 0, 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.
-                                               * audiomux=1: lower volume, 2+3: mute
+                                               * gpiomux =1: lower volume, 2+3: mute
                                                * btwincap uses 0x80000/0x80003
                                                */
+               .gpiomute       = 4,
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .radio_addr     = ADDR_UNSET,
 
                .gpiomask       = 7,
-               .audiomux       = {7},
+               .gpiomux        = {7},
        },
        [BTTV_BOARD_GVBCTV5PCI] = {
                .name           = "IODATA GV-BCTV5/PCI",
                .svhs           = 2,
                .gpiomask       = 0x0f0f80,
                .muxsel         = {2, 3, 1, 0 },
-               .audiomux       = {0x030000, 0x010000, 0, 0, 0x020000, 0},
+               .gpiomux        = {0x030000, 0x010000, 0, 0 },
+               .gpiomute       = 0x020000,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_NTSC_M,
                .gpiomask       = 2,
                /* TV, Comp1, Composite over SVID con, SVID */
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 2, 2, 0, 0, 0 },
+               .gpiomux        = { 2, 2, 0, 0 },
                .pll            = PLL_28,
                .has_radio      = 1,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .svhs           = -1,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1},
-               .audiomux       = { 0, 1, 2, 3, 4},
+               .gpiomux        = { 0, 1, 2, 3},
+               .gpiomute       = 4,
                .needs_tvaudio  = 1,
                .tuner_type     = 5,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = -1,
                .gpiomask       = 0,
                .muxsel         = { 2, 3 },
-               .audiomux       = { 0 },
+               .gpiomux        = { 0 },
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .gpiomask       = 0x001e8007,
                .muxsel         = { 2, 3, 1, 0 },
                /*                  Tuner, Radio, external, internal, off,  on */
-               .audiomux       = { 0x08,  0x0f,  0x0a,     0x08,     0x0f, 0x08 },
+               .gpiomux        = { 0x08,  0x0f,  0x0a,     0x08 },
+               .gpiomute       = 0x0f,
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .svhs           = -1,
                .gpiomask       = 0,
                .muxsel         = { 2, 3, 1, 0 },
-               .audiomux       = { 0 },
+               .gpiomux        = { 0 },
                .needs_tvaudio  = 0,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .svhs           = 3,
                .gpiomask       = 0x00,
                .muxsel         = { 2, 3, 1, 0 },
-               .audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
+               .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .svhs           = 3,
                .gpiomask       = 0x00,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
+               .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
                                        via the upper nibble of muxsel. here: used for
                                        xternal video-mux */
                .muxsel         = { 0x02, 0x12, 0x22, 0x32, 0x03, 0x13, 0x23, 0x33, 0x01, 0x00 },
-               .audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
+               .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
                                        via the upper nibble of muxsel. here: used for
                                        xternal video-mux */
                .muxsel         = { 0x02, 0x12, 0x22, 0x32, 0x03, 0x13, 0x23, 0x33, 0x01, 0x01 },
-               .audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
+               .gpiomux        = { 0, 0, 0, 0 }, /* card has no audio */
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = -1,
                .svhs           = 2,
                .gpiomask       = 3,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 1, 1, 1, 1, 0 },
+               .gpiomux        = { 1, 1, 1, 1 },
                .needs_tvaudio  = 1,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
                .svhs           = 2,
                .gpiomask       = 0x008007,
                .muxsel         = { 2, 3, 0, 0 },
-               .audiomux       = { 0, 0, 0, 0, 0x000003, 0 },
+               .gpiomux        = { 0, 0, 0, 0 },
+               .gpiomute       = 0x000003,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .tuner_addr     = ADDR_UNSET,
                .needs_tvaudio  = 0,
                .gpiomask       = 0x68,
                .muxsel         = { 2, 3, 1 },
-               .audiomux       = { 0x68, 0x68, 0x61, 0x61, 0x00 },
+               .gpiomux        = { 0x68, 0x68, 0x61, 0x61 },
                .pll            = PLL_28,
        },
 
                .svhs           = 2,
                .gpiomask       = 0x008007,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 1, 2, 2, 3 },
+               .gpiomux        = { 0, 1, 2, 2 },
+               .gpiomute       = 3,
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
                .muxsel         = {2,2,2,2},/*878A input is always MUX0, see above.*/
-               .audiomux       = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */
+               .gpiomux        = { 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*/
                .svhs           = 2,
                .gpiomask       = 0x0000000f,
                .muxsel         = { 2, 1, 1 },
-               .audiomux       = { 0x02, 0x00, 0x00, 0x00, 0x00 },
+               .gpiomux        = { 0x02, 0x00, 0x00, 0x00 },
                .tuner_type     = TUNER_TEMIC_PAL,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .muxsel           = { 2, 2, 2, 2, 2, 2, 2, 2,
                                3, 3, 3, 3, 3, 3, 3, 3 },
                .muxsel_hook      = sigmaSQ_muxsel,
-               .audiomux         = { 0 },
+               .gpiomux          = { 0 },
                .no_msp34xx       = 1,
                .pll              = PLL_28,
                .tuner_type       = -1,
                .gpiomask         = 0x0,
                .muxsel           = { 2, 2, 2, 2 },
                .muxsel_hook      = sigmaSLC_muxsel,
-               .audiomux         = { 0 },
+               .gpiomux          = { 0 },
                .no_msp34xx       = 1,
                .pll              = PLL_28,
                .tuner_type       = -1,
                .svhs           = -1,
                .gpiomask       = 0xFF,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 2, 0, 0, 0, 10 },
+               .gpiomux        = { 2, 0, 0, 0 },
+               .gpiomute       = 10,
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_PAL,
                .svhs           = 2,
                .gpiomask       = 0x3f,
                .muxsel         = {2, 3, 1, 0 },
-               .audiomux       = {0x31, 0x31, 0x31, 0x31, 0x31, 0x31 },
+               .gpiomux        = {0x31, 0x31, 0x31, 0x31 },
+               .gpiomute       = 0x31,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_PHILIPS_NTSC_M,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
                .gpiomask       = 0x008007,
-               .audiomux       = { 0, 0x000001,0,0, 0 },
+               .gpiomux        = { 0, 0x000001,0,0 },
                .needs_tvaudio  = 1,
                .has_radio      = 1,
        },
                .svhs           = 2,
                .muxsel         = { 2, 3, 1 },
                .gpiomask       = 0x00e00007,
-               .audiomux       = { 0x00400005, 0, 0x00000001, 0, 0x00c00007, 0 },
+               .gpiomux        = { 0x00400005, 0, 0x00000001, 0 },
+               .gpiomute       = 0x00c00007,
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
                .svhs           = 2,
                .gpiomask       = 0x01fe00,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0x001e00, 0, 0x018000, 0x014000, 0x002000, 0 },
+               .gpiomux        = { 0x001e00, 0, 0x018000, 0x014000 },
+               .gpiomute       = 0x002000,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_YMEC_TVF66T5_B_DFF,
                .svhs           = 2,
                .gpiomask       = 0x001c0007,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 1, 2, 2, 3 },
+               .gpiomux        = { 0, 1, 2, 2 },
+               .gpiomute       = 3,
                .needs_tvaudio  = 0,
                .pll            = PLL_28,
                .tuner_type     = TUNER_TENA_9533_DI,
                .gpiomask      = 0x01fe00,
                .muxsel        = { 2,3,1,1,-1 },
                .digital_mode  = DIGITAL_MODE_CAMERA,
-               .audiomux      = { 0x00400, 0x10400, 0x04400, 0x80000, 0x12400, 0x46000  },
+               .gpiomux       = { 0x00400, 0x10400, 0x04400, 0x80000 },
+               .gpiomute      = 0x12400,
                .no_msp34xx    = 1,
                .pll           = PLL_28,
                .tuner_type    = TUNER_LG_PAL_FM,
                .svhs           = 2,
                .gpiomask       = 0x3f,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0x21, 0x20, 0x24, 0x2c, 0x29, 0x29 },
+               .gpiomux        = { 0x21, 0x20, 0x24, 0x2c },
+               .gpiomute       = 0x29,
                .no_msp34xx     = 1,
                .pll            = PLL_28,
                .tuner_type     = TUNER_YMEC_TVF_5533MF,
                .svhs           = 2,
                .gpiomask       = 15,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 2, 0, 0, 0, 1 },
+               .gpiomux        = { 2, 0, 0, 0 },
+               .gpiomute       = 1,
                .needs_tvaudio  = 1,
                .pll            = PLL_28,
                .tuner_type     = 2,
                .svhs           = 2,
                .gpiomask       = 0x108007,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 100000, 100002, 100002, 100000 },
+               .gpiomux        = { 100000, 100002, 100002, 100000 },
                .no_msp34xx     = 1,
                .no_tda9875     = 1,
                .no_tda7432     = 1,
                .svhs           = 2,
                .gpiomask       = 7,
                .muxsel         = { 2, 3, 1, 1 },
-               .audiomux       = { 0, 1, 2, 3, 4 },
+               .gpiomux        = { 0, 1, 2, 3 },
+               .gpiomute       = 4,
                .tuner_type     = TUNER_TEMIC_4009FR5_PAL,
                .tuner_addr     = ADDR_UNSET,
                .radio_addr     = ADDR_UNSET,
        if (UNSET != audiomux[0]) {
                gpiobits = 0;
                for (i = 0; i < 5; i++) {
-                       bttv_tvcards[btv->c.type].audiomux[i] = audiomux[i];
+                       bttv_tvcards[btv->c.type].gpiomux[i] = audiomux[i];
                        gpiobits |= audiomux[i];
                }
        } else {
                gpiobits = audioall;
                for (i = 0; i < 5; i++) {
-                       bttv_tvcards[btv->c.type].audiomux[i] = audioall;
+                       bttv_tvcards[btv->c.type].gpiomux[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].audiomux[i]);
+               printk("%s0x%x", i ? "," : "", bttv_tvcards[btv->c.type].gpiomux[i]);
        }
        printk("\n");
 }
 {
        /* fix up our card entry */
        if(norm==VIDEO_MODE_NTSC) {
-               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].audiomux[0]=0x957fff;
-               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].audiomux[4]=0x957fff;
+               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x957fff;
+               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x957fff;
                dprintk("bttv_tda9880_setnorm to NTSC\n");
        }
        else {
-               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].audiomux[0]=0x947fff;
-               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].audiomux[4]=0x947fff;
+               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomux[TVAUDIO_INPUT_TUNER]=0x947fff;
+               bttv_tvcards[BTTV_BOARD_VOODOOTV_FM].gpiomute=0x947fff;
                dprintk("bttv_tda9880_setnorm to PAL\n");
        }
        /* set GPIO according */
        gpio_bits(bttv_tvcards[btv->c.type].gpiomask,
-                 bttv_tvcards[btv->c.type].audiomux[btv->audio]);
+                 bttv_tvcards[btv->c.type].gpiomux[btv->audio]);
 }