Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
[sfrench/cifs-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 config;
18         unsigned char cb;
19 };
20
21 struct tuner_params {
22         enum param_type type;
23         /* Many Philips based tuners have a comment like this in their
24          * datasheet:
25          *
26          *   For channel selection involving band switching, and to ensure
27          *   smooth tuning to the desired channel without causing
28          *   unnecessary charge pump action, it is recommended to consider
29          *   the difference between wanted channel frequency and the
30          *   current channel frequency.  Unnecessary charge pump action
31          *   will result in very low tuning voltage which may drive the
32          *   oscillator to extreme conditions.
33          *
34          * Set cb_first_if_lower_freq to 1, if this check is
35          * required for this tuner.
36          *
37          * I tested this for PAL by first setting the TV frequency to
38          * 203 MHz and then switching to 96.6 MHz FM radio. The result was
39          * static unless the control byte was sent first.
40          */
41         unsigned int cb_first_if_lower_freq:1;
42
43         unsigned int count;
44         struct tuner_range *ranges;
45 };
46
47 struct tunertype {
48         char *name;
49         unsigned int count;
50         struct tuner_params *params;
51 };
52
53 extern struct tunertype tuners[];
54 extern unsigned const int tuner_count;
55
56 #endif