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 :
[media] b2c2: don't break long lines
Due to the 80-cols restrictions, and latter due to checkpatch
warnings, several strings were broken into multiple lines. This
is not considered a good practice anymore, as it makes harder
to grep for strings at the source code.
As we're right now fixing other drivers due to KERN_CONT, we need
to be able to identify what printk strings don't end with a "\n".
It is a way easier to detect those if we don't break long lines.
So, join those continuation lines.
The patch was generated via the script below, and manually
adjusted if needed.
</script>
use Text::Tabs;
while (<>) {
if ($next ne "") {
$c=$_;
if ($c =~ /^\s+\"(.*)/) {
$c2=$1;
$next =~ s/\"\n$//;
$n = expand($next);
$funpos = index($n, '(');
$pos = index($c2, '",');
if ($funpos && $pos > 0) {
$s1 = substr $c2, 0, $pos + 2;
$s2 = ' ' x ($funpos + 1) . substr $c2, $pos + 2;
$s2 =~ s/^\s+//;
$s2 = ' ' x ($funpos + 1) . $s2 if ($s2 ne "");
print unexpand("$next$s1\n");
print unexpand("$s2\n") if ($s2 ne "");
} else {
print "$next$c2\n";
}
$next="";
next;
} else {
print $next;
}
$next="";
} else {
if (m/\"$/) {
if (!m/\\n\"$/) {
$next=$_;
next;
}
}
}
print $_;
}
</script>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
2016-10-18 17:44:00 -02:00
err ( " unknown FlexCop Revision: %x. Please report this to linux-dvb@linuxtv.org. " ,
2009-03-29 07:46:58 -03:00
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 ) )
[media] b2c2: don't break long lines
Due to the 80-cols restrictions, and latter due to checkpatch
warnings, several strings were broken into multiple lines. This
is not considered a good practice anymore, as it makes harder
to grep for strings at the source code.
As we're right now fixing other drivers due to KERN_CONT, we need
to be able to identify what printk strings don't end with a "\n".
It is a way easier to detect those if we don't break long lines.
So, join those continuation lines.
The patch was generated via the script below, and manually
adjusted if needed.
</script>
use Text::Tabs;
while (<>) {
if ($next ne "") {
$c=$_;
if ($c =~ /^\s+\"(.*)/) {
$c2=$1;
$next =~ s/\"\n$//;
$n = expand($next);
$funpos = index($n, '(');
$pos = index($c2, '",');
if ($funpos && $pos > 0) {
$s1 = substr $c2, 0, $pos + 2;
$s2 = ' ' x ($funpos + 1) . substr $c2, $pos + 2;
$s2 =~ s/^\s+//;
$s2 = ' ' x ($funpos + 1) . $s2 if ($s2 ne "");
print unexpand("$next$s1\n");
print unexpand("$s2\n") if ($s2 ne "");
} else {
print "$next$c2\n";
}
$next="";
next;
} else {
print $next;
}
$next="";
} else {
if (m/\"$/) {
if (!m/\\n\"$/) {
$next=$_;
next;
}
}
}
print $_;
}
</script>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
2016-10-18 17:44:00 -02:00
deb_info ( " this FlexCop has the additional 32 hardware pid filter. \n " ) ;
2005-05-16 21:54:10 -07:00
else
[media] b2c2: don't break long lines
Due to the 80-cols restrictions, and latter due to checkpatch
warnings, several strings were broken into multiple lines. This
is not considered a good practice anymore, as it makes harder
to grep for strings at the source code.
As we're right now fixing other drivers due to KERN_CONT, we need
to be able to identify what printk strings don't end with a "\n".
It is a way easier to detect those if we don't break long lines.
So, join those continuation lines.
The patch was generated via the script below, and manually
adjusted if needed.
</script>
use Text::Tabs;
while (<>) {
if ($next ne "") {
$c=$_;
if ($c =~ /^\s+\"(.*)/) {
$c2=$1;
$next =~ s/\"\n$//;
$n = expand($next);
$funpos = index($n, '(');
$pos = index($c2, '",');
if ($funpos && $pos > 0) {
$s1 = substr $c2, 0, $pos + 2;
$s2 = ' ' x ($funpos + 1) . substr $c2, $pos + 2;
$s2 =~ s/^\s+//;
$s2 = ' ' x ($funpos + 1) . $s2 if ($s2 ne "");
print unexpand("$next$s1\n");
print unexpand("$s2\n") if ($s2 ne "");
} else {
print "$next$c2\n";
}
$next="";
next;
} else {
print $next;
}
$next="";
} else {
if (m/\"$/) {
if (!m/\\n\"$/) {
$next=$_;
next;
}
}
}
print $_;
}
</script>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
2016-10-18 17:44:00 -02: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 " ,
2015-04-14 09:04:50 -03:00
[ FC_SKYS2_REV33 ] = " Sky2PC/SkyStar S2 DVB-S/S2 rev 3.3 " ,
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 ) ;