tuner-types.h revision de03d21b908bd4c49f1fe7b0c4dc5876551cf819
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;
177b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky	unsigned char cb;
187b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky};
197b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky
207b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufkystruct tuner_params {
217b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky	enum param_type type;
2227487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	/* Many Philips based tuners have a comment like this in their
2327487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 * datasheet:
2427487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 *
2527487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 *   For channel selection involving band switching, and to ensure
2627487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 *   smooth tuning to the desired channel without causing
2727487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 *   unnecessary charge pump action, it is recommended to consider
2827487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 *   the difference between wanted channel frequency and the
2927487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 *   current channel frequency.  Unnecessary charge pump action
3027487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 *   will result in very low tuning voltage which may drive the
3127487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 *   oscillator to extreme conditions.
3227487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 *
33de03d21b908bd4c49f1fe7b0c4dc5876551cf819Michael Krufky	 * Set cb_first_if_lower_freq to 1, if this check is
3401872c5d253298b9f360c7c9b9f33504b6ad5469Michael Krufky	 * required for this tuner.
3527487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 *
3627487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 * I tested this for PAL by first setting the TV frequency to
3727487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 * 203 MHz and then switching to 96.6 MHz FM radio. The result was
3827487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 * static unless the control byte was sent first.
3927487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	 */
4027487d44712aaa37710cc508d5bd6119f5e9f976Hans Verkuil	unsigned int cb_first_if_lower_freq:1;
417b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky	unsigned char config; /* to be moved into struct tuner_range for dvb-pll merge */
427b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky
437b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky	unsigned int count;
447b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky	struct tuner_range *ranges;
457b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky};
467b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky
477b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufkystruct tunertype {
487b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky	char *name;
497b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky	struct tuner_params *params;
507b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky};
517b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky
527b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufkyextern struct tunertype tuners[];
537b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufkyextern unsigned const int tuner_count;
547b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky
557b0ac9cdd42b254ae2ec0f6c1cc6389655e4ba96Michael Krufky#endif
56