V4L/DVB (3577): Cleanup audio input handling

Cleanup audio input handling in bttv and tvaudio:
- inputs were specified that were never used
- mute was handled as a special input which led to confusing code
- confusing naming made it difficult to see if the setting was for
  i2c or gpio.
The old audiochip.h input names moved to tvaudio.h. Currently this
is used both by tvaudio and msp3400 until the msp3400 implements the
new msp3400-specific inputs.
Detect in bttv the tvaudio and msp3400 i2c clients and use these
client pointers to set the inputs directly instead of broadcasting the
command.
Removed AUDC_SET_INPUT. Now replaced by VIDIOC_S_AUDIO. This will be
replaced again later by the new ROUTING commands.
Removed VIDIOC_G_AUDIO implementations in i2c drivers: this command is
a user level command and not to be used internally. It wasn't called at
all anyway.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
diff --git a/drivers/media/video/bt8xx/bttv-cards.c b/drivers/media/video/bt8xx/bttv-cards.c
index e869bfb..f209a74 100644
--- a/drivers/media/video/bt8xx/bttv-cards.c
+++ b/drivers/media/video/bt8xx/bttv-cards.c
@@ -39,6 +39,7 @@
 
 #include "bttvp.h"
 #include <media/v4l2-common.h>
+#include <media/tvaudio.h>
 
 /* fwd decl */
 static void boot_msp34xx(struct bttv *btv, int pin);
@@ -336,7 +337,8 @@
 		.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,
@@ -350,7 +352,8 @@
 		.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,
@@ -364,7 +367,8 @@
 		.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,
@@ -383,7 +387,7 @@
 		.svhs		= 2,
 		.gpiomask	= 0,
 		.muxsel		= { 2, 3, 1, 1 },
-		.audiomux	= { 0 },
+		.gpiomux 	= { 0 },
 		.needs_tvaudio	= 0,
 		.tuner_type	= 4,
 		.tuner_addr	= ADDR_UNSET,
@@ -397,7 +401,8 @@
 		.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,
@@ -411,7 +416,7 @@
 		.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,
@@ -428,7 +433,7 @@
 		.svhs		= 3,
 		.gpiomask	= 0,
 		.muxsel		= { 2, 3, 1, 0, 0 },
-		.audiomux	= { 0 },
+		.gpiomux 	= { 0 },
 		.needs_tvaudio	= 1,
 		.tuner_type	= -1,
 		.tuner_addr	= ADDR_UNSET,
@@ -444,7 +449,8 @@
 		.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,
@@ -459,7 +465,7 @@
 		.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,
@@ -474,7 +480,8 @@
 		.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,
@@ -489,7 +496,8 @@
 		.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,
@@ -505,7 +513,7 @@
 		.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,
@@ -519,7 +527,7 @@
 		.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,
@@ -537,7 +545,8 @@
 		.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,
@@ -552,7 +561,8 @@
 		.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,
@@ -570,10 +580,11 @@
 		.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,
@@ -587,7 +598,8 @@
 		.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,
@@ -603,7 +615,7 @@
 		.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,
@@ -617,7 +629,7 @@
 		.svhs		= -1,
 		.gpiomask	= 0x8dff00,
 		.muxsel		= { 2, 3, 1, 1 },
-		.audiomux	= { 0 },
+		.gpiomux 	= { 0 },
 		.no_msp34xx	= 1,
 		.tuner_type	= -1,
 		.tuner_addr	= ADDR_UNSET,
@@ -644,7 +656,8 @@
 		.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,
@@ -658,7 +671,8 @@
 		.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,
@@ -674,7 +688,7 @@
 		.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,
@@ -691,7 +705,8 @@
 		.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,
@@ -707,7 +722,8 @@
 		.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,
@@ -722,7 +738,8 @@
 		.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,
@@ -736,7 +753,8 @@
 		.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,
@@ -752,7 +770,8 @@
 		.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,
@@ -799,7 +818,7 @@
 		.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,
@@ -815,7 +834,8 @@
 		.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,
@@ -829,7 +849,7 @@
 		.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,
@@ -845,7 +865,7 @@
 		.svhs		= 2,
 		.gpiomask	= 0,
 		.muxsel		= { 2, 3, 1, 1 },
-		.audiomux	= { 0 },
+		.gpiomux 	= { 0 },
 		.needs_tvaudio	= 0,
 		.tuner_type	= 4,
 		.tuner_addr	= ADDR_UNSET,
@@ -859,7 +879,8 @@
 		.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,
@@ -875,11 +896,12 @@
 		.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)
@@ -909,7 +931,8 @@
 		.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,
@@ -925,7 +948,8 @@
 		.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,
@@ -940,7 +964,8 @@
 		.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,
@@ -955,7 +980,8 @@
 		.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,
@@ -971,7 +997,8 @@
 		.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,
@@ -988,7 +1015,8 @@
 		.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,
@@ -1005,7 +1033,7 @@
 		.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,
@@ -1022,7 +1050,7 @@
 		.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,
@@ -1038,7 +1066,8 @@
 		.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,
@@ -1054,7 +1083,8 @@
 		.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,
@@ -1069,7 +1099,7 @@
 		.svhs		= 3,
 		.gpiomask	= 0,
 		.muxsel		= { 2, 3, 1, 0, 0 },
-		.audiomux	= { 0 },
+		.gpiomux 	= { 0 },
 		.no_msp34xx	= 1,
 		.pll		= PLL_28,
 		.tuner_type	= -1,
@@ -1084,7 +1114,8 @@
 		.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,
@@ -1099,7 +1130,8 @@
 		.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,
@@ -1118,7 +1150,8 @@
 		.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,
@@ -1133,7 +1166,7 @@
 		.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,
@@ -1150,7 +1183,8 @@
 		.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,
@@ -1175,7 +1209,8 @@
 		.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,
@@ -1192,7 +1227,8 @@
 		.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
@@ -1218,7 +1254,8 @@
 		.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,
@@ -1230,7 +1267,7 @@
 		/* 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,
@@ -1239,7 +1276,8 @@
 		.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)
@@ -1259,7 +1297,8 @@
 		.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,
@@ -1277,7 +1316,8 @@
 		.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,
@@ -1294,7 +1334,7 @@
 		.svhs           = 1,
 		.gpiomask       = 0,
 		.muxsel         = { 3, 1 },
-		.audiomux       = { 0 },
+		.gpiomux        = { 0 },
 		.needs_tvaudio  = 0,
 		.no_msp34xx     = 1,
 		.pll            = PLL_35,
@@ -1311,7 +1351,8 @@
 		.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,
@@ -1327,7 +1368,8 @@
 		.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,
@@ -1344,7 +1386,8 @@
 		.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,
@@ -1359,7 +1402,7 @@
 		.svhs		= 1,
 		.gpiomask       = 0xF,
 		.muxsel		= { 2, 2 },
-		.audiomux       = { },
+		.gpiomux        = { },
 		.no_msp34xx     = 1,
 		.needs_tvaudio  = 0,
 		.pll		= PLL_28,
@@ -1378,7 +1421,8 @@
 		.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,
@@ -1394,7 +1438,8 @@
 		.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,
@@ -1411,7 +1456,7 @@
 		.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,
@@ -1430,7 +1475,8 @@
 				/* 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,
@@ -1448,7 +1494,8 @@
 		.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,
@@ -1465,7 +1512,7 @@
 		.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,
@@ -1486,7 +1533,8 @@
 		.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 },
@@ -1518,7 +1566,8 @@
 		.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,
@@ -1557,7 +1606,8 @@
 		.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,
@@ -1586,7 +1636,7 @@
 		.svhs           = 4,
 		.gpiomask       = 0,
 		.muxsel         = { 2, 3, 1, 0, 0 },
-		.audiomux       = { 0 },
+		.gpiomux        = { 0 },
 		.needs_tvaudio  = 0,
 		.tuner_type     = -1,
 		.tuner_addr	= ADDR_UNSET,
@@ -1618,7 +1668,8 @@
 		.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,
@@ -1637,7 +1688,8 @@
 		.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,
@@ -1651,7 +1703,7 @@
 		.svhs           = -1,
 		.gpiomask       = 0,
 		.muxsel         = { 2, 3, 1, 0 },
-		.audiomux       = { 0 },
+		.gpiomux        = { 0 },
 		.needs_tvaudio  = 0,
 		.no_msp34xx     = 1,
 		.pll            = PLL_28,
@@ -1667,13 +1719,14 @@
 		.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,
@@ -1720,7 +1773,7 @@
 		.radio_addr     = ADDR_UNSET,
 
 		.gpiomask       = 7,
-		.audiomux       = {7},
+		.gpiomux        = {7},
 	},
 	[BTTV_BOARD_GVBCTV5PCI] = {
 		.name           = "IODATA GV-BCTV5/PCI",
@@ -1730,7 +1783,8 @@
 		.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,
@@ -1960,7 +2014,7 @@
 		.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,
@@ -1984,7 +2038,8 @@
 		.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,
@@ -2016,7 +2071,7 @@
 		.svhs           = -1,
 		.gpiomask       = 0,
 		.muxsel         = { 2, 3 },
-		.audiomux       = { 0 },
+		.gpiomux        = { 0 },
 		.needs_tvaudio  = 0,
 		.no_msp34xx     = 1,
 		.pll            = PLL_28,
@@ -2035,7 +2090,8 @@
 		.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,
@@ -2152,7 +2208,7 @@
 		.svhs           = -1,
 		.gpiomask       = 0,
 		.muxsel         = { 2, 3, 1, 0 },
-		.audiomux       = { 0 },
+		.gpiomux        = { 0 },
 		.needs_tvaudio  = 0,
 		.no_msp34xx     = 1,
 		.pll            = PLL_28,
@@ -2169,7 +2225,7 @@
 		.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,
@@ -2184,7 +2240,7 @@
 		.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,
@@ -2204,7 +2260,7 @@
 					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,
@@ -2222,7 +2278,7 @@
 					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,
@@ -2310,7 +2366,7 @@
 		.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,
@@ -2341,7 +2397,8 @@
 		.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,
@@ -2377,7 +2434,7 @@
 		.needs_tvaudio  = 0,
 		.gpiomask       = 0x68,
 		.muxsel         = { 2, 3, 1 },
-		.audiomux       = { 0x68, 0x68, 0x61, 0x61, 0x00 },
+		.gpiomux        = { 0x68, 0x68, 0x61, 0x61 },
 		.pll            = PLL_28,
 	},
 
@@ -2392,7 +2449,8 @@
 		.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,
@@ -2417,7 +2475,7 @@
 		.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*/
@@ -2435,7 +2493,7 @@
 		.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,
@@ -2491,7 +2549,7 @@
 		.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,
@@ -2508,7 +2566,7 @@
 		.gpiomask         = 0x0,
 		.muxsel           = { 2, 2, 2, 2 },
 		.muxsel_hook      = sigmaSLC_muxsel,
-		.audiomux         = { 0 },
+		.gpiomux          = { 0 },
 		.no_msp34xx       = 1,
 		.pll              = PLL_28,
 		.tuner_type       = -1,
@@ -2526,7 +2584,8 @@
 		.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,
@@ -2560,7 +2619,8 @@
 		.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,
@@ -2583,7 +2643,7 @@
 		.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,
 	},
@@ -2693,7 +2753,8 @@
 		.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,
@@ -2709,7 +2770,8 @@
 		.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,
@@ -2726,7 +2788,8 @@
 		.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,
@@ -2745,7 +2808,8 @@
 		.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,
@@ -2763,7 +2827,8 @@
 		.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,
@@ -2797,7 +2862,8 @@
 		.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,
@@ -2813,7 +2879,7 @@
 		.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,
@@ -2853,7 +2919,8 @@
 		.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,
@@ -2925,20 +2992,20 @@
 	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");
 }
@@ -3796,18 +3863,18 @@
 {
 	/* 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]);
 }