aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/dvb/bt8xx/dst.c33
-rw-r--r--drivers/media/dvb/bt8xx/dst_common.h6
2 files changed, 37 insertions, 2 deletions
diff --git a/drivers/media/dvb/bt8xx/dst.c b/drivers/media/dvb/bt8xx/dst.c
index d2a7e413e9e1..52cbe150077d 100644
--- a/drivers/media/dvb/bt8xx/dst.c
+++ b/drivers/media/dvb/bt8xx/dst.c
@@ -586,6 +586,23 @@ static int dst_type_print(u8 type)
586 return 0; 586 return 0;
587} 587}
588 588
589struct tuner_types tuner_list[] = {
590 {
591 .tuner_type = 2,
592 .tuner_name = "L 64724"
593 },
594
595 {
596 .tuner_type = 4,
597 .tuner_name = "STV 0299"
598 },
599
600 {
601 .tuner_type = 8,
602 .tuner_name = "MB 86A15"
603 },
604};
605
589/* 606/*
590 Known cards list 607 Known cards list
591 Satellite 608 Satellite
@@ -656,7 +673,7 @@ static struct dst_types dst_tlist[] = {
656 .type_flags = DST_TYPE_HAS_SYMDIV | DST_TYPE_HAS_TS204 | DST_TYPE_HAS_FW_2, 673 .type_flags = DST_TYPE_HAS_SYMDIV | DST_TYPE_HAS_TS204 | DST_TYPE_HAS_FW_2,
657 .dst_feature = DST_TYPE_HAS_DISEQC3 | DST_TYPE_HAS_DISEQC4 | DST_TYPE_HAS_DISEQC5 674 .dst_feature = DST_TYPE_HAS_DISEQC3 | DST_TYPE_HAS_DISEQC4 | DST_TYPE_HAS_DISEQC5
658 | DST_TYPE_HAS_MAC | DST_TYPE_HAS_MOTO, 675 | DST_TYPE_HAS_MAC | DST_TYPE_HAS_MOTO,
659 .tuner_type = TUNER_TYPE_STV0299 676 .tuner_type = TUNER_TYPE_MULTI
660 }, 677 },
661 678
662 { 679 {
@@ -890,8 +907,10 @@ static int dst_get_device_id(struct dst_state *state)
890{ 907{
891 u8 reply; 908 u8 reply;
892 909
893 int i; 910 int i, j;
894 struct dst_types *p_dst_type; 911 struct dst_types *p_dst_type;
912 struct tuner_types *p_tuner_list;
913
895 u8 use_dst_type = 0; 914 u8 use_dst_type = 0;
896 u32 use_type_flags = 0; 915 u32 use_type_flags = 0;
897 916
@@ -930,6 +949,16 @@ static int dst_get_device_id(struct dst_state *state)
930 state->dst_hw_cap = p_dst_type->dst_feature; 949 state->dst_hw_cap = p_dst_type->dst_feature;
931 dprintk(verbose, DST_ERROR, 1, "Recognise [%s]\n", p_dst_type->device_id); 950 dprintk(verbose, DST_ERROR, 1, "Recognise [%s]\n", p_dst_type->device_id);
932 951
952 if (p_dst_type->tuner_type != TUNER_TYPE_MULTI) {
953 state->tuner_type = p_dst_type->tuner_type;
954
955 for (j = 0, p_tuner_list = tuner_list; j < ARRAY_SIZE(tuner_list); j++, p_tuner_list++) {
956 if (p_dst_type->tuner_type == p_tuner_list->tuner_type) {
957 state->tuner_name = p_tuner_list->tuner_name;
958 dprintk(verbose, DST_ERROR, 1, "DST has a [%s] based tuner\n", state->tuner_name);
959 }
960 }
961 }
933 break; 962 break;
934 } 963 }
935 } 964 }
diff --git a/drivers/media/dvb/bt8xx/dst_common.h b/drivers/media/dvb/bt8xx/dst_common.h
index 3908c5b8c72d..19449592fd99 100644
--- a/drivers/media/dvb/bt8xx/dst_common.h
+++ b/drivers/media/dvb/bt8xx/dst_common.h
@@ -125,9 +125,15 @@ struct dst_state {
125 u8 vendor[8]; 125 u8 vendor[8];
126 u8 board_info[8]; 126 u8 board_info[8];
127 u32 tuner_type; 127 u32 tuner_type;
128 char *tuner_name;
128 struct mutex dst_mutex; 129 struct mutex dst_mutex;
129}; 130};
130 131
132struct tuner_types {
133 u32 tuner_type;
134 char *tuner_name;
135};
136
131struct dst_types { 137struct dst_types {
132 char *device_id; 138 char *device_id;
133 int offset; 139 int offset;