tuner-types.h revision bbab6fd81f26b210f0815d79064a3387c3a1ade3
17b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky/* 27b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky * descriptions for simple tuners. 37b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky */ 47b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky 57b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky#ifndef __TUNER_TYPES_H__ 67b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky#define __TUNER_TYPES_H__ 77b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky 87b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufkyenum param_type { 97b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky TUNER_PARAM_TYPE_RADIO, \ 107b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky TUNER_PARAM_TYPE_PAL, \ 117b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky TUNER_PARAM_TYPE_SECAM, \ 12c943aa859c392eb4cc76d911daa1f261555075b2Michael Krufky TUNER_PARAM_TYPE_NTSC 137b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky}; 147b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky 157b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufkystruct tuner_range { 167b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky unsigned short limit; 173fc46d35b30cfae018c4903228a270c9543f4d7aMichael Krufky unsigned char config; 187b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky unsigned char cb; 197b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky}; 207b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky 217b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufkystruct tuner_params { 227b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky enum param_type type; 2327487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil /* Many Philips based tuners have a comment like this in their 2427487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * datasheet: 2527487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * 2627487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * For channel selection involving band switching, and to ensure 2727487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * smooth tuning to the desired channel without causing 2827487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * unnecessary charge pump action, it is recommended to consider 2927487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * the difference between wanted channel frequency and the 3027487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * current channel frequency. Unnecessary charge pump action 3127487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * will result in very low tuning voltage which may drive the 3227487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * oscillator to extreme conditions. 3327487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * 34de03d21b908bd4c49f1fe7b0c4dc5876551cf819Michael Krufky * Set cb_first_if_lower_freq to 1, if this check is 3501872c5d253298b9f360c7c9b9f33504b6ad5469Michael Krufky * required for this tuner. 3627487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * 3727487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * I tested this for PAL by first setting the TV frequency to 3827487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * 203 MHz and then switching to 96.6 MHz FM radio. The result was 3927487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil * static unless the control byte was sent first. 4027487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil */ 4127487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil unsigned int cb_first_if_lower_freq:1; 427b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky 437b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky unsigned int count; 447b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky struct tuner_range *ranges; 457b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky}; 467b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky 477b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufkystruct tunertype { 487b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky char *name; 49bbab6fd81f26b210f0815d79064a3387c3a1ade3Michael Krufky unsigned int count; 507b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky struct tuner_params *params; 517b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky}; 527b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky 537b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufkyextern struct tunertype tuners[]; 547b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufkyextern unsigned const int tuner_count; 557b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky 567b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky#endif 57