aboutsummaryrefslogtreecommitdiffstats
path: root/include/media/tuner.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/media/tuner.h')
-rw-r--r--include/media/tuner.h98
1 files changed, 46 insertions, 52 deletions
diff --git a/include/media/tuner.h b/include/media/tuner.h
index b37cde606692..7674b121ce8b 100644
--- a/include/media/tuner.h
+++ b/include/media/tuner.h
@@ -82,9 +82,9 @@
82#define TUNER_PHILIPS_FM1236_MK3 43 82#define TUNER_PHILIPS_FM1236_MK3 43
83 83
84#define TUNER_PHILIPS_4IN1 44 /* ATI TV Wonder Pro - Conexant */ 84#define TUNER_PHILIPS_4IN1 44 /* ATI TV Wonder Pro - Conexant */
85/* Microtune mergeged with Temic 12/31/1999 partially financed by Alps - these may be similar to Temic */ 85/* Microtune merged with Temic 12/31/1999 partially financed by Alps - these may be similar to Temic */
86#define TUNER_MICROTUNE_4049FM5 45 86#define TUNER_MICROTUNE_4049FM5 45
87#define TUNER_MICROTUNE_4042_FI5 46 87#define TUNER_PANASONIC_VP27 46
88#define TUNER_LG_NTSC_TAPE 47 88#define TUNER_LG_NTSC_TAPE 47
89 89
90#define TUNER_TNF_8831BGFF 48 90#define TUNER_TNF_8831BGFF 48
@@ -102,7 +102,7 @@
102#define TUNER_YMEC_TVF_8531MF 58 102#define TUNER_YMEC_TVF_8531MF 58
103#define TUNER_YMEC_TVF_5533MF 59 /* Pixelview Pro Ultra NTSC */ 103#define TUNER_YMEC_TVF_5533MF 59 /* Pixelview Pro Ultra NTSC */
104 104
105#define TUNER_THOMSON_DTT7611 60 /* DViCO FusionHDTV 3 Gold-T */ 105#define TUNER_THOMSON_DTT761X 60 /* DTT 7611 7611A 7612 7613 7613A 7614 7615 7615A */
106#define TUNER_TENA_9533_DI 61 106#define TUNER_TENA_9533_DI 61
107#define TUNER_TEA5767 62 /* Only FM Radio Tuner */ 107#define TUNER_TEA5767 62 /* Only FM Radio Tuner */
108#define TUNER_PHILIPS_FMD1216ME_MK3 63 108#define TUNER_PHILIPS_FMD1216ME_MK3 63
@@ -115,47 +115,26 @@
115#define TUNER_PHILIPS_TUV1236D 68 /* ATI HDTV Wonder */ 115#define TUNER_PHILIPS_TUV1236D 68 /* ATI HDTV Wonder */
116#define TUNER_TNF_5335MF 69 /* Sabrent Bt848 */ 116#define TUNER_TNF_5335MF 69 /* Sabrent Bt848 */
117 117
118#define NOTUNER 0
119#define PAL 1 /* PAL_BG */
120#define PAL_I 2
121#define NTSC 3
122#define SECAM 4
123#define ATSC 5
124#define RADIO 6
125
126#define NoTuner 0
127#define Philips 1
128#define TEMIC 2
129#define Sony 3
130#define Alps 4
131#define LGINNOTEK 5
132#define SHARP 6
133#define Samsung 7
134#define Microtune 8
135#define HITACHI 9
136#define Panasonic 10
137#define TCL 11
138#define THOMSON 12
139
140#define TUNER_SET_TYPE_ADDR _IOW('T',3,int)
141#define TUNER_SET_STANDBY _IOW('T',4,int)
142#define TDA9887_SET_CONFIG _IOW('t',5,int)
143
144/* tv card specific */ 118/* tv card specific */
145# define TDA9887_PRESENT (1<<0) 119#define TDA9887_PRESENT (1<<0)
146# define TDA9887_PORT1_INACTIVE (1<<1) 120#define TDA9887_PORT1_INACTIVE (1<<1)
147# define TDA9887_PORT2_INACTIVE (1<<2) 121#define TDA9887_PORT2_INACTIVE (1<<2)
148# define TDA9887_QSS (1<<3) 122#define TDA9887_QSS (1<<3)
149# define TDA9887_INTERCARRIER (1<<4) 123#define TDA9887_INTERCARRIER (1<<4)
150# define TDA9887_PORT1_ACTIVE (1<<5) 124#define TDA9887_PORT1_ACTIVE (1<<5)
151# define TDA9887_PORT2_ACTIVE (1<<6) 125#define TDA9887_PORT2_ACTIVE (1<<6)
152# define TDA9887_INTERCARRIER_NTSC (1<<7) 126#define TDA9887_INTERCARRIER_NTSC (1<<7)
127/* Tuner takeover point adjustment, in dB, -16 <= top <= 15 */
128#define TDA9887_TOP_MASK (0x3f << 8)
129#define TDA9887_TOP_SET (1 << 13)
130#define TDA9887_TOP(top) (TDA9887_TOP_SET | (((16 + (top)) & 0x1f) << 8))
131
153/* config options */ 132/* config options */
154# define TDA9887_DEEMPHASIS_MASK (3<<16) 133#define TDA9887_DEEMPHASIS_MASK (3<<16)
155# define TDA9887_DEEMPHASIS_NONE (1<<16) 134#define TDA9887_DEEMPHASIS_NONE (1<<16)
156# define TDA9887_DEEMPHASIS_50 (2<<16) 135#define TDA9887_DEEMPHASIS_50 (2<<16)
157# define TDA9887_DEEMPHASIS_75 (3<<16) 136#define TDA9887_DEEMPHASIS_75 (3<<16)
158# define TDA9887_AUTOMUTE (1<<18) 137#define TDA9887_AUTOMUTE (1<<18)
159 138
160#ifdef __KERNEL__ 139#ifdef __KERNEL__
161 140
@@ -167,10 +146,26 @@ enum tuner_mode {
167 T_STANDBY = 1 << 31 146 T_STANDBY = 1 << 31
168}; 147};
169 148
149/* Older boards only had a single tuner device. Nowadays multiple tuner
150 devices may be present on a single board. Using TUNER_SET_TYPE_ADDR
151 to pass the tuner_setup structure it is possible to setup each tuner
152 device in turn.
153
154 Since multiple devices may be present it is no longer sufficient to
155 send a command to a single i2c device. Instead you should broadcast
156 the command to all i2c devices.
157
158 By setting the mode_mask correctly you can select which commands are
159 accepted by a specific tuner device. For example, set mode_mask to
160 T_RADIO if the device is a radio-only tuner. That specific tuner will
161 only accept commands when the tuner is in radio mode and ignore them
162 when the tuner is set to TV mode.
163 */
164
170struct tuner_setup { 165struct tuner_setup {
171 unsigned short addr; 166 unsigned short addr; /* I2C address */
172 unsigned int type; 167 unsigned int type; /* Tuner type */
173 unsigned int mode_mask; 168 unsigned int mode_mask; /* Allowed tuner modes */
174}; 169};
175 170
176struct tuner { 171struct tuner {
@@ -207,7 +202,6 @@ struct tuner {
207 void (*standby)(struct i2c_client *c); 202 void (*standby)(struct i2c_client *c);
208}; 203};
209 204
210extern unsigned int tuner_debug;
211extern unsigned const int tuner_count; 205extern unsigned const int tuner_count;
212 206
213extern int microtune_init(struct i2c_client *c); 207extern int microtune_init(struct i2c_client *c);
@@ -219,15 +213,15 @@ extern int tea5767_autodetection(struct i2c_client *c);
219 213
220#define tuner_warn(fmt, arg...) do {\ 214#define tuner_warn(fmt, arg...) do {\
221 printk(KERN_WARNING "%s %d-%04x: " fmt, t->i2c.driver->driver.name, \ 215 printk(KERN_WARNING "%s %d-%04x: " fmt, t->i2c.driver->driver.name, \
222 t->i2c.adapter->nr, t->i2c.addr , ##arg); } while (0) 216 i2c_adapter_id(t->i2c.adapter), t->i2c.addr , ##arg); } while (0)
223#define tuner_info(fmt, arg...) do {\ 217#define tuner_info(fmt, arg...) do {\
224 printk(KERN_INFO "%s %d-%04x: " fmt, t->i2c.driver->driver.name, \ 218 printk(KERN_INFO "%s %d-%04x: " fmt, t->i2c.driver->driver.name, \
225 t->i2c.adapter->nr, t->i2c.addr , ##arg); } while (0) 219 i2c_adapter_id(t->i2c.adapter), t->i2c.addr , ##arg); } while (0)
226#define tuner_dbg(fmt, arg...) do {\ 220#define tuner_dbg(fmt, arg...) do {\
227 if (tuner_debug) \ 221 extern int debug; \
228 printk(KERN_DEBUG "%s %d-%04x: " fmt, \ 222 if (debug) \
229 t->i2c.driver->driver.name, \ 223 printk(KERN_DEBUG "%s %d-%04x: " fmt, t->i2c.driver->driver.name, \
230 t->i2c.adapter->nr, t->i2c.addr , ##arg); } while (0) 224 i2c_adapter_id(t->i2c.adapter), t->i2c.addr , ##arg); } while (0)
231 225
232#endif /* __KERNEL__ */ 226#endif /* __KERNEL__ */
233 227