V4L/DVB (10562): bttv: rework the way digital inputs are indicated

The code was using a muxsel value of -1U to indicate a digital input.  A
couple places in were checking of muxsel < 0 to detect this, which doesn't
work of course because muxsel is unsigned and can't be negative.

Only a couple cards had digital inputs and it was always the last one, so
for the card database create a one bit field that indicates the last input
is digital.  On init, this is used to set a new field in the bttv struct to
the digital input's number or UNSET for none.  This makes it easier to
check if the current input is digital.

Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/drivers/media/video/bt8xx/bttv-cards.c b/drivers/media/video/bt8xx/bttv-cards.c
index f49e6e6..d545d48 100644
--- a/drivers/media/video/bt8xx/bttv-cards.c
+++ b/drivers/media/video/bt8xx/bttv-cards.c
@@ -633,8 +633,9 @@
 		.video_inputs	= 3,
 		/* .audio_inputs= 1, */
 		.svhs		= NO_SVHS,
+		.has_dig_in	= 1,
 		.gpiomask	= 7,
-		.muxsel		= { 2, 3, -1 },
+		.muxsel		= { 2, 3, 0 }, /* input 2 is digital */
 		/* .digital_mode= DIGITAL_MODE_CAMERA, */
 		.gpiomux 	= { 0, 0, 0, 0 },
 		.no_msp34xx	= 1,
@@ -1069,8 +1070,9 @@
 		.video_inputs	= 5,
 		/* .audio_inputs= 1, */
 		.svhs		= 3,
+		.has_dig_in	= 1,
 		.gpiomask	= 0xAA0000,
-		.muxsel		= { 2, 3, 1, 1, -1 },
+		.muxsel		= { 2, 3, 1, 1, 0 }, /* input 4 is digital */
 		/* .digital_mode= DIGITAL_MODE_CAMERA, */
 		.gpiomux 	= { 0x20000, 0, 0x80000, 0x80000 },
 		.gpiomute 	= 0xa8000,
@@ -2539,8 +2541,9 @@
 		.video_inputs	= 5,
 		/* .audio_inputs= 1, */
 		.svhs		= 3,
+		.has_dig_in	= 1,
 		.gpiomask	= 0x01fe00,
-		.muxsel		= { 2, 3, 1, 1, -1 },
+		.muxsel		= { 2, 3, 1, 1, 0 }, /* in 4 is digital */
 		/* .digital_mode= DIGITAL_MODE_CAMERA, */
 		.gpiomux	= { 0x00400, 0x10400, 0x04400, 0x80000 },
 		.gpiomute	= 0x12400,
@@ -3417,6 +3420,8 @@
 		bttv_call_i2c_clients(btv, TUNER_SET_CONFIG, &tda9887_cfg);
 	}
 
+	btv->dig = bttv_tvcards[btv->c.type].has_dig_in ?
+		   bttv_tvcards[btv->c.type].video_inputs - 1 : UNSET;
 	btv->svhs = bttv_tvcards[btv->c.type].svhs == NO_SVHS ?
 		    UNSET : bttv_tvcards[btv->c.type].svhs;
 	if (svhs[btv->c.nr] != UNSET)