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 57