dvb: dst: Correcty Identify Tuner and Daughterboards
PATCH 1/37 dvb: dst: Correcty Identify Tuner and Daughterboards
From: Manu Abraham <[email protected]>
- Identify Tuner, Daughterboards correctly
- Added partial support for
VP-10320A (DVB-S), VP-20210 (DVB-C), VP-3040 (DVB-T)
drivers/media/dvb/bt8xx/dst.c | 58 +++++++++++++++++++++++++++++++++-- drivers/media/dvb/bt8xx/dst_common.h | 2 + 2 files changed, 58 insertions(+), 2 deletions(-)
drivers/media/dvb/bt8xx/dst.c +56 -2
@@ -690,8 +690,8 @@ .device_id = "DTT-CI", .offset = 1, .dst_type = DST_TYPE_IS_TERR, - .type_flags = DST_TYPE_HAS_TS204 | DST_TYPE_HAS_FW_2, - .dst_feature = 0 + .type_flags = DST_TYPE_HAS_TS204 | DST_TYPE_HAS_NEWTUNE | DST_TYPE_HAS_FW_2 | DST_TYPE_HAS_MULTI_FE, + .dst_feature = DST_TYPE_HAS_CA }, {
@@ -796,6 +796,56 @@return 0 ; } +static int dst_get_tuner_info (struct dst_state *state) +{ +u8 get_tuner_1[] = {0x00 ,0x13 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 }; +u8 get_tuner_2[] = {0x00 ,0x0b ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 }; + + get_tuner_1[7 ] =dst_check_sum (get_tuner_1,7 ); + get_tuner_2[7 ] =dst_check_sum (get_tuner_2,7 ); +if (state->type_flags &DST_TYPE_HAS_MULTI_FE ) { +if (dst_command (state, get_tuner_2,8 ) <0 ) { +dprintk (verbose,DST_INFO ,1 ,"Unsupported Command" ); +return -1 ; + } + }else { +if (dst_command (state, get_tuner_1,8 ) <0 ) { +dprintk (verbose,DST_INFO ,1 ,"Unsupported Command" ); +return -1 ; + } + } +memset (&state->board_info,'\0' ,8 ); +memcpy (&state->board_info, &state->rxbuffer,8 ); +if (state->type_flags &DST_TYPE_HAS_MULTI_FE ) { +if (state->board_info[1 ] ==0x0b ) { +if (state->type_flags &DST_TYPE_HAS_TS204 ) + state->type_flags &= ~DST_TYPE_HAS_TS204 ; + state->type_flags |=DST_TYPE_HAS_NEWTUNE ; +dprintk (verbose,DST_INFO ,1 ,"DST type has TS=188" ); + }else { +if (state->type_flags &DST_TYPE_HAS_NEWTUNE ) + state->type_flags &= ~DST_TYPE_HAS_NEWTUNE ; + state->type_flags |=DST_TYPE_HAS_TS204 ; +dprintk (verbose,DST_INFO ,1 ,"DST type has TS=204" ); + } + }else { +if (state->board_info[0 ] ==0xbc ) { +if (state->type_flags &DST_TYPE_HAS_TS204 ) + state->type_flags &= ~DST_TYPE_HAS_TS204 ; + state->type_flags |=DST_TYPE_HAS_NEWTUNE ; +dprintk (verbose,DST_INFO ,1 ,"DST type has TS=188, Daughterboard=[%d]" , state->board_info[1 ]); + + }else if (state->board_info[0 ] ==0xcc ) { +if (state->type_flags &DST_TYPE_HAS_NEWTUNE ) + state->type_flags &= ~DST_TYPE_HAS_NEWTUNE ; + state->type_flags |=DST_TYPE_HAS_TS204 ; +dprintk (verbose,DST_INFO ,1 ,"DST type has TS=204 Daughterboard=[%d]" , state->board_info[1 ]); + } + } + +return 0 ; +} +static int dst_get_device_id (struct dst_state *state) {u8 reply;
@@ -886,6 +936,10 @@dprintk (verbose,DST_INFO ,1 ,"MAC: Unsupported command" );return 0 ; } +if ((state->type_flags &DST_TYPE_HAS_MULTI_FE ) || (state->type_flags &DST_TYPE_HAS_FW_BUILD )) { +if (dst_get_tuner_info (state) <0 ) +dprintk (verbose,DST_INFO ,1 ,"Tuner: Unsupported command" ); + }if (state->type_flags &DST_TYPE_HAS_FW_BUILD ) {if (dst_fw_ver (state) <0 ) {dprintk (verbose,DST_INFO ,1 ,"FW: Unsupported command" );
drivers/media/dvb/bt8xx/dst_common.h +2 -0
@@ -49,6 +49,7 @@#define DST_TYPE_HAS_FW_BUILD 64#define DST_TYPE_HAS_OBS_REGS 128#define DST_TYPE_HAS_INC_COUNT 256 +#define DST_TYPE_HAS_MULTI_FE 512/* Card capability list */
@@ -117,6 +118,7 @@u8 fw_version[8 ];u8 card_info[8 ];u8 vendor[8 ]; +u8 board_info[8 ]; };struct dst_types {
Quoted 13 lines · Michael Krufky
+static int
dst_get_tuner_info(struct dst_state *state)+{
+ u8 get_tuner_1[] = {0x00,0x13,0x00,0x00,0x00,0x00,0x00,0x00};
+ u8 get_tuner_2[] = {0x00,0x0b,0x00,0x00,0x00,0x00,0x00,0x00};
+
+ get_tuner_1[7] =dst_check_sum(get_tuner_1, 7);
+ get_tuner_2[7] =dst_check_sum(get_tuner_2, 7);
+ if (state->type_flags&DST_TYPE_HAS_MULTI_FE) {
+ if (dst_command(state, get_tuner_2, 8)< 0) {
+dprintk(verbose, DST_INFO, 1, "Unsupported Command");
+ return -1;
+ }
Quoted 8 lines
+ } else {
+ if (dst_command(state, get_tuner_1, 8)< 0) {
+dprintk(verbose, DST_INFO, 1, "Unsupported Command");
+ return -1;
+ }
+ }
+memset(&state->board_info, '\0', 8);
+memcpy(&state->board_info, &state->rxbuffer, 8);
The memset is unneeded...
Quoted 19 lines · Andrew Morton
Quoted 16 lines · Michael Krufky
drivers/media/dvb/bt8xx/dst.c +16
-0+static int dst_get_tuner_info (struct dst_state *state) +{ +u8 get_tuner_1[] = {0x00 ,0x13 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 }; +u8 get_tuner_2[] = {0x00 ,0x0b ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 }; + + get_tuner_1[7 ] =dst_check_sum (get_tuner_1,7 ); + get_tuner_2[7 ] =dst_check_sum (get_tuner_2,7 ); +if (state->type_flags &DST_TYPE_HAS_MULTI_FE ) { +if (dst_command (state, get_tuner_2,8 ) <0 ) { +dprintk (verbose,DST_INFO ,1 ,"Unsupported Command" ); +return -1 ; + } + }else { +if (dst_command (state, get_tuner_1,8 ) <0 ) { +dprintk (verbose,DST_INFO ,1 ,"Unsupported Command" ); +return -1 ;
Quoted 10 lines
drivers/media/dvb/bt8xx/dst.c line 818
Quoted 6 lines
drivers/media/dvb/bt8xx/dst.c +4
-0+ } + } +memset (&state->board_info,'\0' ,8 ); +memcpy (&state->board_info, &state->rxbuffer,8 );The memset is unneeded...
Hello Andrew,
I will have that changed in dvb-kernel CVS. Would you like me to send in a patch for the same. Or you can have it changed .. ?
Thanks,
Manu
Quoted 32 lines · Manu Abraham
Quoted 19 lines · Andrew Morton
Quoted 16 lines · Michael Krufky
drivers/media/dvb/bt8xx/dst.c +16
-0+static int dst_get_tuner_info (struct dst_state *state) +{ +u8 get_tuner_1[] = {0x00 ,0x13 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 }; +u8 get_tuner_2[] = {0x00 ,0x0b ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 }; + + get_tuner_1[7 ] =dst_check_sum (get_tuner_1,7 ); + get_tuner_2[7 ] =dst_check_sum (get_tuner_2,7 ); +if (state->type_flags &DST_TYPE_HAS_MULTI_FE ) { +if (dst_command (state, get_tuner_2,8 ) <0 ) { +dprintk (verbose,DST_INFO ,1 ,"Unsupported Command" ); +return -1 ; + } + }else { +if (dst_command (state, get_tuner_1,8 ) <0 ) { +dprintk (verbose,DST_INFO ,1 ,"Unsupported Command" ); +return -1 ;Quoted 10 lines
drivers/media/dvb/bt8xx/dst.c line 818
Quoted 6 lines
drivers/media/dvb/bt8xx/dst.c +4
-0+ } + } +memset (&state->board_info,'\0' ,8 ); +memcpy (&state->board_info, &state->rxbuffer,8 );The memset is unneeded...
Quoted 5 lines
Hello Andrew,
I will have that changed in dvb-kernel CVS. Would you like me to send in a patch for the same. Or you can have it changed .. ?
There's certainly no rush ;) Please just add it to the 2.6.16 to-do list.
Quoted 41 lines · Andrew Morton
Quoted 38 lines · Manu Abraham
Quoted 34 lines · Andrew Morton
Quoted 14 lines · Michael Krufky
drivers/media/dvb/bt8xx/dst.c +10
-0+static int dst_get_tuner_info (struct dst_state *state) +{ +u8 get_tuner_1[] = {0x00 ,0x13 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 }; +u8 get_tuner_2[] = {0x00 ,0x0b ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 }; + + get_tuner_1[7 ] =dst_check_sum (get_tuner_1,7 ); + get_tuner_2[7 ] =dst_check_sum (get_tuner_2,7 ); +if (state->type_flags &DST_TYPE_HAS_MULTI_FE ) { +if (dst_command (state, get_tuner_2,8 ) <0 ) { +dprintk (verbose,DST_INFO ,1 ,"Unsupported Command" );drivers/media/dvb/bt8xx/dst.c line 818
Quoted 10 lines
drivers/media/dvb/bt8xx/dst.c +10
-0+return -1 ; + } + }else { +if (dst_command (state, get_tuner_1,8 ) <0 ) { +dprintk (verbose,DST_INFO ,1 ,"Unsupported Command" ); +return -1 ; + } + } +memset (&state->board_info,'\0' ,8 ); +memcpy (&state->board_info, &state->rxbuffer,8 );The memset is unneeded...
Quoted 11 lines
Quoted 6 lines
Hello Andrew,
I will have that changed in dvb-kernel CVS. Would you like me to send in a patch for the same. Or you can have it changed .. ?
There's certainly no rush ;) Please just add it to the 2.6.16 to-do list.
Ok, done. I will queue it up in the TODO list for 2.6.16.
Thanks,
Manu