]>
Commit | Line | Data |
---|---|---|
825b9670 | 1 | /* |
c89f66f6 | 2 | * Afatech AF9013 demodulator driver |
825b9670 AP |
3 | * |
4 | * Copyright (C) 2007 Antti Palosaari <crope@iki.fi> | |
5 | * | |
6 | * Thanks to Afatech who kindly provided information. | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or modify | |
9 | * it under the terms of the GNU General Public License as published by | |
10 | * the Free Software Foundation; either version 2 of the License, or | |
11 | * (at your option) any later version. | |
12 | * | |
13 | * This program is distributed in the hope that it will be useful, | |
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | * GNU General Public License for more details. | |
17 | * | |
18 | * You should have received a copy of the GNU General Public License | |
19 | * along with this program; if not, write to the Free Software | |
20 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
21 | * | |
22 | */ | |
23 | ||
24 | #ifndef _AF9013_H_ | |
25 | #define _AF9013_H_ | |
26 | ||
27 | #include <linux/dvb/frontend.h> | |
28 | ||
29 | enum af9013_ts_mode { | |
30 | AF9013_OUTPUT_MODE_PARALLEL, | |
31 | AF9013_OUTPUT_MODE_SERIAL, | |
32 | AF9013_OUTPUT_MODE_USB, /* only for AF9015 */ | |
33 | }; | |
34 | ||
35 | enum af9013_tuner { | |
36 | AF9013_TUNER_MXL5003D = 3, /* MaxLinear */ | |
37 | AF9013_TUNER_MXL5005D = 13, /* MaxLinear */ | |
38 | AF9013_TUNER_MXL5005R = 30, /* MaxLinear */ | |
39 | AF9013_TUNER_ENV77H11D5 = 129, /* Panasonic */ | |
40 | AF9013_TUNER_MT2060 = 130, /* Microtune */ | |
41 | AF9013_TUNER_MC44S803 = 133, /* Freescale */ | |
42 | AF9013_TUNER_QT1010 = 134, /* Quantek */ | |
43 | AF9013_TUNER_UNKNOWN = 140, /* for can tuners ? */ | |
44 | AF9013_TUNER_MT2060_2 = 147, /* Microtune */ | |
45 | AF9013_TUNER_TDA18271 = 156, /* NXP */ | |
46 | AF9013_TUNER_QT1010A = 162, /* Quantek */ | |
a4f31d0d | 47 | AF9013_TUNER_MXL5007T = 177, /* MaxLinear */ |
8ef4c211 | 48 | AF9013_TUNER_TDA18218 = 179, /* NXP */ |
825b9670 AP |
49 | }; |
50 | ||
51 | /* AF9013/5 GPIOs (mostly guessed) | |
52 | demod#1-gpio#0 - set demod#2 i2c-addr for dual devices | |
53 | demod#1-gpio#1 - xtal setting (?) | |
54 | demod#1-gpio#3 - tuner#1 | |
55 | demod#2-gpio#0 - tuner#2 | |
56 | demod#2-gpio#1 - xtal setting (?) | |
57 | */ | |
58 | #define AF9013_GPIO_ON (1 << 0) | |
59 | #define AF9013_GPIO_EN (1 << 1) | |
60 | #define AF9013_GPIO_O (1 << 2) | |
61 | #define AF9013_GPIO_I (1 << 3) | |
62 | ||
63 | #define AF9013_GPIO_LO (AF9013_GPIO_ON|AF9013_GPIO_EN) | |
64 | #define AF9013_GPIO_HI (AF9013_GPIO_ON|AF9013_GPIO_EN|AF9013_GPIO_O) | |
65 | ||
66 | #define AF9013_GPIO_TUNER_ON (AF9013_GPIO_ON|AF9013_GPIO_EN) | |
67 | #define AF9013_GPIO_TUNER_OFF (AF9013_GPIO_ON|AF9013_GPIO_EN|AF9013_GPIO_O) | |
68 | ||
69 | struct af9013_config { | |
70 | /* demodulator's I2C address */ | |
71 | u8 demod_address; | |
72 | ||
73 | /* frequencies in kHz */ | |
74 | u32 adc_clock; | |
75 | ||
76 | /* tuner ID */ | |
77 | u8 tuner; | |
78 | ||
79 | /* tuner IF */ | |
80 | u16 tuner_if; | |
81 | ||
82 | /* TS data output mode */ | |
83 | u8 output_mode:2; | |
84 | ||
85 | /* RF spectrum inversion */ | |
86 | u8 rf_spec_inv:1; | |
87 | ||
88 | /* API version */ | |
89 | u8 api_version[4]; | |
90 | ||
91 | /* GPIOs */ | |
92 | u8 gpio[4]; | |
93 | }; | |
94 | ||
95 | ||
96 | #if defined(CONFIG_DVB_AF9013) || \ | |
97 | (defined(CONFIG_DVB_AF9013_MODULE) && defined(MODULE)) | |
98 | extern struct dvb_frontend *af9013_attach(const struct af9013_config *config, | |
99 | struct i2c_adapter *i2c); | |
100 | #else | |
101 | static inline struct dvb_frontend *af9013_attach( | |
102 | const struct af9013_config *config, struct i2c_adapter *i2c) | |
103 | { | |
104 | printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); | |
105 | return NULL; | |
106 | } | |
107 | #endif /* CONFIG_DVB_AF9013 */ | |
108 | ||
109 | #endif /* _AF9013_H_ */ |