diff options
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/dvb/bt8xx/dst.c | 30 | ||||
-rw-r--r-- | 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 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 { |