summaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/bt8xx
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/dvb/bt8xx')
-rw-r--r--drivers/media/dvb/bt8xx/dst.c30
-rw-r--r--drivers/media/dvb/bt8xx/dst_common.h7
2 files changed, 32 insertions, 5 deletions
diff --git a/drivers/media/dvb/bt8xx/dst.c b/drivers/media/dvb/bt8xx/dst.c
index 68db48bf89f4..21f327d9f7d5 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 19449592fd99..9323f948e940 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 {