2005-05-16 21:54:10 -07:00
/*
2009-03-29 07:46:58 -03:00
* Linux driver for digital TV devices equipped with B2C2 FlexcopII ( b ) / III
* flexcop - misc . c - miscellaneous functions
* see flexcop . c for copyright information
2005-05-16 21:54:10 -07:00
*/
# include "flexcop.h"
void flexcop_determine_revision ( struct flexcop_device * fc )
{
flexcop_ibi_value v = fc - > read_ibi_reg ( fc , misc_204 ) ;
switch ( v . misc_204 . Rev_N_sig_revision_hi ) {
2009-03-29 07:46:58 -03:00
case 0x2 :
deb_info ( " found a FlexCopII. \n " ) ;
fc - > rev = FLEXCOP_II ;
break ;
case 0x3 :
deb_info ( " found a FlexCopIIb. \n " ) ;
fc - > rev = FLEXCOP_IIB ;
break ;
case 0x0 :
deb_info ( " found a FlexCopIII. \n " ) ;
fc - > rev = FLEXCOP_III ;
break ;
default :
err ( " unknown FlexCop Revision: %x. Please report this to "
" linux-dvb@linuxtv.org. " ,
v . misc_204 . Rev_N_sig_revision_hi ) ;
break ;
2005-05-16 21:54:10 -07:00
}
if ( ( fc - > has_32_hw_pid_filter = v . misc_204 . Rev_N_sig_caps ) )
2009-03-29 07:46:58 -03:00
deb_info ( " this FlexCop has "
" the additional 32 hardware pid filter. \n " ) ;
2005-05-16 21:54:10 -07:00
else
2009-03-29 07:46:58 -03:00
deb_info ( " this FlexCop has "
" the 6 basic main hardware pid filter. \n " ) ;
2005-05-16 21:54:10 -07:00
/* bus parts have to decide if hw pid filtering is used or not. */
}
2006-01-23 09:58:17 -02:00
static const char * flexcop_revision_names [ ] = {
2009-03-29 07:46:58 -03:00
" Unknown chip " ,
2005-05-16 21:54:10 -07:00
" FlexCopII " ,
" FlexCopIIb " ,
" FlexCopIII " ,
} ;
2006-01-23 09:58:17 -02:00
static const char * flexcop_device_names [ ] = {
2009-05-22 07:19:14 -03:00
[ FC_UNK ] = " Unknown device " ,
[ FC_CABLE ] = " Cable2PC/CableStar 2 DVB-C " ,
[ FC_AIR_DVBT ] = " Air2PC/AirStar 2 DVB-T " ,
[ FC_AIR_ATSC1 ] = " Air2PC/AirStar 2 ATSC 1st generation " ,
[ FC_AIR_ATSC2 ] = " Air2PC/AirStar 2 ATSC 2nd generation " ,
[ FC_AIR_ATSC3 ] = " Air2PC/AirStar 2 ATSC 3rd generation (HD5000) " ,
[ FC_SKY_REV23 ] = " Sky2PC/SkyStar 2 DVB-S rev 2.3 (old version) " ,
[ FC_SKY_REV26 ] = " Sky2PC/SkyStar 2 DVB-S rev 2.6 " ,
[ FC_SKY_REV27 ] = " Sky2PC/SkyStar 2 DVB-S rev 2.7a/u " ,
[ FC_SKY_REV28 ] = " Sky2PC/SkyStar 2 DVB-S rev 2.8 " ,
2005-05-16 21:54:10 -07:00
} ;
2006-01-23 09:58:17 -02:00
static const char * flexcop_bus_names [ ] = {
2005-05-16 21:54:10 -07:00
" USB " ,
" PCI " ,
} ;
2009-03-29 07:46:58 -03:00
void flexcop_device_name ( struct flexcop_device * fc ,
const char * prefix , const char * suffix )
2005-05-16 21:54:10 -07:00
{
2009-03-29 07:46:58 -03:00
info ( " %s '%s' at the '%s' bus controlled by a '%s' %s " ,
prefix , flexcop_device_names [ fc - > dev_type ] ,
flexcop_bus_names [ fc - > bus_type ] ,
flexcop_revision_names [ fc - > rev ] , suffix ) ;
2005-05-16 21:54:10 -07:00
}
2005-07-07 17:57:49 -07:00
2009-03-29 07:46:58 -03:00
void flexcop_dump_reg ( struct flexcop_device * fc ,
flexcop_ibi_register reg , int num )
2005-07-07 17:57:49 -07:00
{
flexcop_ibi_value v ;
int i ;
for ( i = 0 ; i < num ; i + + ) {
2009-03-29 07:46:58 -03:00
v = fc - > read_ibi_reg ( fc , reg + 4 * i ) ;
deb_rdump ( " 0x%03x: %08x, " , reg + 4 * i , v . raw ) ;
2005-07-07 17:57:49 -07:00
}
deb_rdump ( " \n " ) ;
}
EXPORT_SYMBOL ( flexcop_dump_reg ) ;