V4L/DVB (6473): Prevents double tuner registering

Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c
index 11abd18..cd5f0d8 100644
--- a/drivers/media/video/tuner-core.c
+++ b/drivers/media/video/tuner-core.c
@@ -279,8 +279,7 @@
 		t->tuner_callback = tuner_callback;
 	}
 
-	/* This code detects calls by card attach_inform */
-	if (NULL == t->i2c.dev.driver) {
+	if (t->mode == T_UNINITIALIZED) {
 		tuner_dbg ("tuner 0x%02x: called during i2c_client register by adapter's attach_inform\n", c->addr);
 
 		return;
@@ -684,6 +683,16 @@
 	/* Should be just before return */
 register_client:
 	tuner_info("chip found @ 0x%x (%s)\n", addr << 1, adap->name);
+
+	/* Sets a default mode */
+	if (t->mode_mask & T_ANALOG_TV) {
+		t->mode = T_ANALOG_TV;
+	} else  if (t->mode_mask & T_RADIO) {
+		t->mode = T_RADIO;
+	} else {
+		t->mode = T_DIGITAL_TV;
+	}
+
 	i2c_attach_client (client);
 	set_type (client,t->type, t->mode_mask, t->config, t->tuner_callback);
 	return 0;