From 364f255af783a105b262eae018f0cad68e186681 Mon Sep 17 00:00:00 2001
From: Manu Abraham <abraham.manu@gmail.com>
Date: Wed, 21 Jun 2006 10:28:01 -0300
Subject: [PATCH] V4L/DVB (4167): Add Board Names

Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
---
 drivers/media/dvb/bt8xx/dst.c        | 30 +++++++++++++++++++++++-----
 drivers/media/dvb/bt8xx/dst_common.h |  7 +++++++
 2 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/drivers/media/dvb/bt8xx/dst.c b/drivers/media/dvb/bt8xx/dst.c
index 68db48bf89f..21f327d9f7d 100644
--- a/drivers/media/dvb/bt8xx/dst.c
+++ b/drivers/media/dvb/bt8xx/dst.c
@@ -589,18 +589,27 @@ static int dst_type_print(u8 type)
 struct tuner_types tuner_list[] = {
 	{
 		.tuner_type = 2,
-		.tuner_name = "L 64724"
+		.tuner_name = "L 64724",
+		.board_name = " "
 	},
 
 	{
 		.tuner_type = 4,
-		.tuner_name = "STV 0299"
+		.tuner_name = "STV 0299",
+		.board_name = "VP1030"
 	},
 
 	{
 		.tuner_type = 8,
-		.tuner_name = "MB 86A15"
+		.tuner_name = "MB 86A15",
+		.board_name = "VP1025"
 	},
+
+	{
+		.tuner_type = 16,
+		.tuner_name = "NXT 200x",
+		.board_name = "VP3250"
+	}
 };
 
 /*
@@ -818,6 +827,9 @@ static int dst_fw_ver(struct dst_state *state)
 
 static int dst_card_type(struct dst_state *state)
 {
+	int j;
+	struct tuner_types *p_tuner_list = NULL;
+
 	u8 get_type[] = { 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
 	get_type[7] = dst_check_sum(get_type, 7);
 	if (dst_command(state, get_type, 8) < 0) {
@@ -828,6 +840,14 @@ static int dst_card_type(struct dst_state *state)
 	memcpy(&state->card_info, &state->rxbuffer, 7);
 	dprintk(verbose, DST_ERROR, 1, "Device Model=[%s]", &state->card_info[0]);
 
+	for (j = 0, p_tuner_list = tuner_list; j < ARRAY_SIZE(tuner_list); j++, p_tuner_list++) {
+		if (!strcmp(&state->card_info[0], p_tuner_list->board_name)) {
+			state->tuner_type = p_tuner_list->tuner_type;
+			dprintk(verbose, DST_ERROR, 1, "DST has [%s] tuner, tuner type=[%d]\n",
+				p_tuner_list->tuner_name, p_tuner_list->tuner_type);
+		}
+	}
+
 	return 0;
 }
 
@@ -954,8 +974,8 @@ static int dst_get_device_id(struct dst_state *state)
 
 				for (j = 0, p_tuner_list = tuner_list; j < ARRAY_SIZE(tuner_list); j++, p_tuner_list++) {
 					if (p_dst_type->tuner_type == p_tuner_list->tuner_type) {
-						state->tuner_name = p_tuner_list->tuner_name;
-						dprintk(verbose, DST_ERROR, 1, "DST has a [%s] based tuner\n", state->tuner_name);
+						state->tuner_type = p_tuner_list->tuner_type;
+						dprintk(verbose, DST_ERROR, 1, "DST has a [%s] based tuner\n", p_tuner_list->tuner_name);
 					}
 				}
 			}
diff --git a/drivers/media/dvb/bt8xx/dst_common.h b/drivers/media/dvb/bt8xx/dst_common.h
index 19449592fd9..9323f948e94 100644
--- a/drivers/media/dvb/bt8xx/dst_common.h
+++ b/drivers/media/dvb/bt8xx/dst_common.h
@@ -65,10 +65,16 @@
 #define DST_TYPE_HAS_SESSION	128
 
 #define TUNER_TYPE_MULTI	1
+
+/*	DVB-S		*/
 #define TUNER_TYPE_L64724	2
 #define TUNER_TYPE_STV0299	4
 #define TUNER_TYPE_MB86A15	8
 
+/*	ATSC		*/
+#define TUNER_TYPE_NXT200x	16
+
+
 #define RDC_8820_PIO_0_DISABLE	0
 #define RDC_8820_PIO_0_ENABLE	1
 #define RDC_8820_INT		2
@@ -132,6 +138,7 @@ struct dst_state {
 struct tuner_types {
 	u32 tuner_type;
 	char *tuner_name;
+	char *board_name;
 };
 
 struct dst_types {
-- 
2.25.4