[PATCH] v4l: common part Updates and tuner additions

- Remove $Id CVS logs for V4L files
- Included newer cards.
- Added a new NEC protocol for ir based on pulse distance.
- Enable ATSC support for DViCO FusionHDTV5 Gold.
- Added tuner LG NTSC (TALN mini series).
- Fixed tea5767 autodetection.
- Resolve more tuner types.
- Commented debug function removed from mainstream.
- Remove comments from mainstream. Still on development tree.
- linux/version dependencies removed.
- BTSC Lang1 now is set to auto_stereo mode.
- New tuner standby API.
- i2c-core.c uses hexadecimal for the i2c address, so it should stay consistent.

Signed-off-by: Uli Luckas <luckas@musoft.de>
Signed-off-by: Mac Michaels <wmichaels1@earthlink.net>
Signed-off-by: Michael Krufky <mkrufky@m1k.net>
Signed-off-by: Hermann Pitton <hermann.pitton@onlinehome.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c
index 3b1893c..afc96bb 100644
--- a/drivers/media/video/tuner-core.c
+++ b/drivers/media/video/tuner-core.c
@@ -1,5 +1,4 @@
 /*
- * $Id: tuner-core.c,v 1.63 2005/07/28 18:19:55 mchehab Exp $
  *
  * i2c tv tuner chip device driver
  * core core, i.e. kernel interfaces, registering and so on
@@ -182,6 +181,14 @@
 		i2c_master_send(c, buffer, 4);
 		default_tuner_init(c);
 		break;
+	case TUNER_LG_TDVS_H062F:
+		/* Set the Auxiliary Byte. */
+		buffer[2] &= ~0x20;
+		buffer[2] |= 0x18;
+		buffer[3] = 0x20;
+		i2c_master_send(c, buffer, 4);
+		default_tuner_init(c);
+		break;
 	default:
 		default_tuner_init(c);
 		break;
@@ -208,31 +215,31 @@
 {
 	struct tuner *t = i2c_get_clientdata(c);
 
-	if (tun_setup->addr == ADDR_UNSET) {
-		if (t->mode_mask & tun_setup->mode_mask)
+	if ((tun_setup->addr == ADDR_UNSET &&
+		(t->mode_mask & tun_setup->mode_mask)) ||
+		tun_setup->addr == c->addr) {
 			set_type(c, tun_setup->type, tun_setup->mode_mask);
-	} else if (tun_setup->addr == c->addr) {
-		set_type(c, tun_setup->type, tun_setup->mode_mask);
 	}
 }
 
 static inline int check_mode(struct tuner *t, char *cmd)
 {
-	if (1 << t->mode & t->mode_mask) {
-		switch (t->mode) {
-		case V4L2_TUNER_RADIO:
-			tuner_dbg("Cmd %s accepted for radio\n", cmd);
-			break;
-		case V4L2_TUNER_ANALOG_TV:
-			tuner_dbg("Cmd %s accepted for analog TV\n", cmd);
-			break;
-		case V4L2_TUNER_DIGITAL_TV:
-			tuner_dbg("Cmd %s accepted for digital TV\n", cmd);
-			break;
-		}
-		return 0;
+	if ((1 << t->mode & t->mode_mask) == 0) {
+		return EINVAL;
 	}
-	return EINVAL;
+
+	switch (t->mode) {
+	case V4L2_TUNER_RADIO:
+		tuner_dbg("Cmd %s accepted for radio\n", cmd);
+		break;
+	case V4L2_TUNER_ANALOG_TV:
+		tuner_dbg("Cmd %s accepted for analog TV\n", cmd);
+		break;
+	case V4L2_TUNER_DIGITAL_TV:
+		tuner_dbg("Cmd %s accepted for digital TV\n", cmd);
+		break;
+	}
+	return 0;
 }
 
 static char pal[] = "-";
@@ -406,20 +413,18 @@
 
 static inline int set_mode(struct i2c_client *client, struct tuner *t, int mode, char *cmd)
 {
-	if (mode != t->mode) {
+ 	if (mode == t->mode)
+ 		return 0;
 
-		t->mode = mode;
-		if (check_mode(t, cmd) == EINVAL) {
-			t->mode = T_STANDBY;
-			if (V4L2_TUNER_RADIO == mode) {
-				set_tv_freq(client, 400 * 16);
-			} else {
-				set_radio_freq(client, 87.5 * 16000);
-			}
-			return EINVAL;
-		}
-	}
-	return 0;
+ 	t->mode = mode;
+
+ 	if (check_mode(t, cmd) == EINVAL) {
+ 		t->mode = T_STANDBY;
+ 		if (t->standby)
+ 			t->standby (client);
+ 		return EINVAL;
+  	}
+  	return 0;
 }
 
 #define switch_v4l2()	if (!t->using_v4l2) \
@@ -453,6 +458,14 @@
 	case AUDC_SET_RADIO:
 		set_mode(client,t,V4L2_TUNER_RADIO, "AUDC_SET_RADIO");
 		break;
+	case TUNER_SET_STANDBY:
+		{
+			if (check_mode(t, "TUNER_SET_STANDBY") == EINVAL)
+				return 0;
+			if (t->standby)
+				t->standby (client);
+			break;
+		}
 	case AUDC_CONFIG_PINNACLE:
 		if (check_mode(t, "AUDC_CONFIG_PINNACLE") == EINVAL)
 			return 0;