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