linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / media / tuner-types.h
1 /*
2  * descriptions for simple tuners.
3  */
4
5 #ifndef __TUNER_TYPES_H__
6 #define __TUNER_TYPES_H__
7
8 enum param_type {
9         TUNER_PARAM_TYPE_RADIO, \
10         TUNER_PARAM_TYPE_PAL, \
11         TUNER_PARAM_TYPE_SECAM, \
12         TUNER_PARAM_TYPE_NTSC
13 };
14
15 struct tuner_range {
16         unsigned short limit;
17         unsigned char cb;
18 };
19
20 struct tuner_params {
21         enum param_type type;
22         /* Many Philips based tuners have a comment like this in their
23          * datasheet:
24          *
25          *   For channel selection involving band switching, and to ensure
26          *   smooth tuning to the desired channel without causing
27          *   unnecessary charge pump action, it is recommended to consider
28          *   the difference between wanted channel frequency and the
29          *   current channel frequency.  Unnecessary charge pump action
30          *   will result in very low tuning voltage which may drive the
31          *   oscillator to extreme conditions.
32          *
33          * Set cb_first_if_lower_freq to 1, if this check is
34          * required for this tuner.
35          *
36          * I tested this for PAL by first setting the TV frequency to
37          * 203 MHz and then switching to 96.6 MHz FM radio. The result was
38          * static unless the control byte was sent first.
39          */
40         unsigned int cb_first_if_lower_freq:1;
41         unsigned char config; /* to be moved into struct tuner_range for dvb-pll merge */
42
43         unsigned int count;
44         struct tuner_range *ranges;
45 };
46
47 struct tunertype {
48         char *name;
49         struct tuner_params *params;
50 };
51
52 extern struct tunertype tuners[];
53 extern unsigned const int tuner_count;
54
55 #endif