Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  * Linux driver for digital TV devices equipped with B2C2 FlexcopII(b)/III
  3  * flexcop-misc.c - miscellaneous functions
  4  * see flexcop.c for copyright information
  5  */
  6 #include "flexcop.h"
  7 
  8 void flexcop_determine_revision(struct flexcop_device *fc)
  9 {
 10         flexcop_ibi_value v = fc->read_ibi_reg(fc,misc_204);
 11 
 12         switch (v.misc_204.Rev_N_sig_revision_hi) {
 13         case 0x2:
 14                 deb_info("found a FlexCopII.\n");
 15                 fc->rev = FLEXCOP_II;
 16                 break;
 17         case 0x3:
 18                 deb_info("found a FlexCopIIb.\n");
 19                 fc->rev = FLEXCOP_IIB;
 20                 break;
 21         case 0x0:
 22                 deb_info("found a FlexCopIII.\n");
 23                 fc->rev = FLEXCOP_III;
 24                 break;
 25         default:
 26                 err("unknown FlexCop Revision: %x. Please report this to "
 27                                 "linux-dvb@linuxtv.org.",
 28                                 v.misc_204.Rev_N_sig_revision_hi);
 29                 break;
 30         }
 31 
 32         if ((fc->has_32_hw_pid_filter = v.misc_204.Rev_N_sig_caps))
 33                 deb_info("this FlexCop has "
 34                                 "the additional 32 hardware pid filter.\n");
 35         else
 36                 deb_info("this FlexCop has "
 37                                 "the 6 basic main hardware pid filter.\n");
 38         /* bus parts have to decide if hw pid filtering is used or not. */
 39 }
 40 
 41 static const char *flexcop_revision_names[] = {
 42         "Unknown chip",
 43         "FlexCopII",
 44         "FlexCopIIb",
 45         "FlexCopIII",
 46 };
 47 
 48 static const char *flexcop_device_names[] = {
 49         [FC_UNK]        = "Unknown device",
 50         [FC_CABLE]      = "Cable2PC/CableStar 2 DVB-C",
 51         [FC_AIR_DVBT]   = "Air2PC/AirStar 2 DVB-T",
 52         [FC_AIR_ATSC1]  = "Air2PC/AirStar 2 ATSC 1st generation",
 53         [FC_AIR_ATSC2]  = "Air2PC/AirStar 2 ATSC 2nd generation",
 54         [FC_AIR_ATSC3]  = "Air2PC/AirStar 2 ATSC 3rd generation (HD5000)",
 55         [FC_SKY_REV23]  = "Sky2PC/SkyStar 2 DVB-S rev 2.3 (old version)",
 56         [FC_SKY_REV26]  = "Sky2PC/SkyStar 2 DVB-S rev 2.6",
 57         [FC_SKY_REV27]  = "Sky2PC/SkyStar 2 DVB-S rev 2.7a/u",
 58         [FC_SKY_REV28]  = "Sky2PC/SkyStar 2 DVB-S rev 2.8",
 59 };
 60 
 61 static const char *flexcop_bus_names[] = {
 62         "USB",
 63         "PCI",
 64 };
 65 
 66 void flexcop_device_name(struct flexcop_device *fc,
 67                 const char *prefix, const char *suffix)
 68 {
 69         info("%s '%s' at the '%s' bus controlled by a '%s' %s",
 70                         prefix, flexcop_device_names[fc->dev_type],
 71                         flexcop_bus_names[fc->bus_type],
 72                         flexcop_revision_names[fc->rev], suffix);
 73 }
 74 
 75 void flexcop_dump_reg(struct flexcop_device *fc,
 76                 flexcop_ibi_register reg, int num)
 77 {
 78         flexcop_ibi_value v;
 79         int i;
 80         for (i = 0; i < num; i++) {
 81                 v = fc->read_ibi_reg(fc, reg+4*i);
 82                 deb_rdump("0x%03x: %08x, ", reg+4*i, v.raw);
 83         }
 84         deb_rdump("\n");
 85 }
 86 EXPORT_SYMBOL(flexcop_dump_reg);
 87 
  This page was automatically generated by the LXR engine.