diff options
Diffstat (limited to 'drivers/media/dvb/dvb-usb/anysee.h')
-rw-r--r-- | drivers/media/dvb/dvb-usb/anysee.h | 325 |
1 files changed, 325 insertions, 0 deletions
diff --git a/drivers/media/dvb/dvb-usb/anysee.h b/drivers/media/dvb/dvb-usb/anysee.h new file mode 100644 index 00000000000..ad6ccd1ea2d --- /dev/null +++ b/drivers/media/dvb/dvb-usb/anysee.h | |||
@@ -0,0 +1,325 @@ | |||
1 | /* | ||
2 | * DVB USB Linux driver for Anysee E30 DVB-C & DVB-T USB2.0 receiver | ||
3 | * | ||
4 | * Copyright (C) 2007 Antti Palosaari <crope@iki.fi> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | * | ||
20 | * TODO: | ||
21 | * - add smart card reader support for Conditional Access (CA) | ||
22 | * | ||
23 | * Card reader in Anysee is nothing more than ISO 7816 card reader. | ||
24 | * There is no hardware CAM in any Anysee device sold. | ||
25 | * In my understanding it should be implemented by making own module | ||
26 | * for ISO 7816 card reader, like dvb_ca_en50221 is implemented. This | ||
27 | * module registers serial interface that can be used to communicate | ||
28 | * with any ISO 7816 smart card. | ||
29 | * | ||
30 | * Any help according to implement serial smart card reader support | ||
31 | * is highly welcome! | ||
32 | */ | ||
33 | |||
34 | #ifndef _DVB_USB_ANYSEE_H_ | ||
35 | #define _DVB_USB_ANYSEE_H_ | ||
36 | |||
37 | #define DVB_USB_LOG_PREFIX "anysee" | ||
38 | #include "dvb-usb.h" | ||
39 | |||
40 | #define deb_info(args...) dprintk(dvb_usb_anysee_debug, 0x01, args) | ||
41 | #define deb_xfer(args...) dprintk(dvb_usb_anysee_debug, 0x02, args) | ||
42 | #define deb_rc(args...) dprintk(dvb_usb_anysee_debug, 0x04, args) | ||
43 | #define deb_reg(args...) dprintk(dvb_usb_anysee_debug, 0x08, args) | ||
44 | #define deb_i2c(args...) dprintk(dvb_usb_anysee_debug, 0x10, args) | ||
45 | #define deb_fw(args...) dprintk(dvb_usb_anysee_debug, 0x20, args) | ||
46 | |||
47 | enum cmd { | ||
48 | CMD_I2C_READ = 0x33, | ||
49 | CMD_I2C_WRITE = 0x31, | ||
50 | CMD_REG_READ = 0xb0, | ||
51 | CMD_REG_WRITE = 0xb1, | ||
52 | CMD_STREAMING_CTRL = 0x12, | ||
53 | CMD_LED_AND_IR_CTRL = 0x16, | ||
54 | CMD_GET_IR_CODE = 0x41, | ||
55 | CMD_GET_HW_INFO = 0x19, | ||
56 | CMD_SMARTCARD = 0x34, | ||
57 | }; | ||
58 | |||
59 | struct anysee_state { | ||
60 | u8 hw; /* PCB ID */ | ||
61 | u8 seq; | ||
62 | }; | ||
63 | |||
64 | #define ANYSEE_HW_507T 2 /* E30 */ | ||
65 | #define ANYSEE_HW_507CD 6 /* E30 Plus */ | ||
66 | #define ANYSEE_HW_507DC 10 /* E30 C Plus */ | ||
67 | #define ANYSEE_HW_507SI 11 /* E30 S2 Plus */ | ||
68 | #define ANYSEE_HW_507FA 15 /* E30 Combo Plus / E30 C Plus */ | ||
69 | #define ANYSEE_HW_508TC 18 /* E7 TC */ | ||
70 | #define ANYSEE_HW_508S2 19 /* E7 S2 */ | ||
71 | #define ANYSEE_HW_508PTC 21 /* E7 PTC Plus */ | ||
72 | #define ANYSEE_HW_508PS2 22 /* E7 PS2 Plus */ | ||
73 | |||
74 | #define REG_IOA 0x80 /* Port A (bit addressable) */ | ||
75 | #define REG_IOB 0x90 /* Port B (bit addressable) */ | ||
76 | #define REG_IOC 0xa0 /* Port C (bit addressable) */ | ||
77 | #define REG_IOD 0xb0 /* Port D (bit addressable) */ | ||
78 | #define REG_IOE 0xb1 /* Port E (NOT bit addressable) */ | ||
79 | #define REG_OEA 0xb2 /* Port A Output Enable */ | ||
80 | #define REG_OEB 0xb3 /* Port B Output Enable */ | ||
81 | #define REG_OEC 0xb4 /* Port C Output Enable */ | ||
82 | #define REG_OED 0xb5 /* Port D Output Enable */ | ||
83 | #define REG_OEE 0xb6 /* Port E Output Enable */ | ||
84 | |||
85 | #endif | ||
86 | |||
87 | /*************************************************************************** | ||
88 | * USB API description (reverse engineered) | ||
89 | *************************************************************************** | ||
90 | |||
91 | Transaction flow: | ||
92 | ================= | ||
93 | BULK[00001] >>> REQUEST PACKET 64 bytes | ||
94 | BULK[00081] <<< REPLY PACKET #1 64 bytes (PREVIOUS TRANSACTION REPLY) | ||
95 | BULK[00081] <<< REPLY PACKET #2 64 bytes (CURRENT TRANSACTION REPLY) | ||
96 | |||
97 | General reply packet(s) are always used if not own reply defined. | ||
98 | |||
99 | ============================================================================ | ||
100 | | 00-63 | GENERAL REPLY PACKET #1 (PREVIOUS REPLY) | ||
101 | ============================================================================ | ||
102 | | 00 | reply data (if any) from previous transaction | ||
103 | | | Just same reply packet as returned during previous transaction. | ||
104 | | | Needed only if reply is missed in previous transaction. | ||
105 | | | Just skip normally. | ||
106 | ---------------------------------------------------------------------------- | ||
107 | | 01-59 | don't care | ||
108 | ---------------------------------------------------------------------------- | ||
109 | | 60 | packet sequence number | ||
110 | ---------------------------------------------------------------------------- | ||
111 | | 61-63 | don't care | ||
112 | ---------------------------------------------------------------------------- | ||
113 | |||
114 | ============================================================================ | ||
115 | | 00-63 | GENERAL REPLY PACKET #2 (CURRENT REPLY) | ||
116 | ============================================================================ | ||
117 | | 00 | reply data (if any) | ||
118 | ---------------------------------------------------------------------------- | ||
119 | | 01-59 | don't care | ||
120 | ---------------------------------------------------------------------------- | ||
121 | | 60 | packet sequence number | ||
122 | ---------------------------------------------------------------------------- | ||
123 | | 61-63 | don't care | ||
124 | ---------------------------------------------------------------------------- | ||
125 | |||
126 | ============================================================================ | ||
127 | | 00-63 | I2C WRITE REQUEST PACKET | ||
128 | ============================================================================ | ||
129 | | 00 | 0x31 I2C write command | ||
130 | ---------------------------------------------------------------------------- | ||
131 | | 01 | i2c address | ||
132 | ---------------------------------------------------------------------------- | ||
133 | | 02 | data length | ||
134 | | | 0x02 (for typical I2C reg / val pair) | ||
135 | ---------------------------------------------------------------------------- | ||
136 | | 03 | 0x01 | ||
137 | ---------------------------------------------------------------------------- | ||
138 | | 04- | data | ||
139 | ---------------------------------------------------------------------------- | ||
140 | | -59 | don't care | ||
141 | ---------------------------------------------------------------------------- | ||
142 | | 60 | packet sequence number | ||
143 | ---------------------------------------------------------------------------- | ||
144 | | 61-63 | don't care | ||
145 | ---------------------------------------------------------------------------- | ||
146 | |||
147 | ============================================================================ | ||
148 | | 00-63 | I2C READ REQUEST PACKET | ||
149 | ============================================================================ | ||
150 | | 00 | 0x33 I2C read command | ||
151 | ---------------------------------------------------------------------------- | ||
152 | | 01 | i2c address + 1 | ||
153 | ---------------------------------------------------------------------------- | ||
154 | | 02 | register | ||
155 | ---------------------------------------------------------------------------- | ||
156 | | 03 | 0x00 | ||
157 | ---------------------------------------------------------------------------- | ||
158 | | 04 | 0x00 | ||
159 | ---------------------------------------------------------------------------- | ||
160 | | 05 | data length | ||
161 | ---------------------------------------------------------------------------- | ||
162 | | 06-59 | don't care | ||
163 | ---------------------------------------------------------------------------- | ||
164 | | 60 | packet sequence number | ||
165 | ---------------------------------------------------------------------------- | ||
166 | | 61-63 | don't care | ||
167 | ---------------------------------------------------------------------------- | ||
168 | |||
169 | ============================================================================ | ||
170 | | 00-63 | USB CONTROLLER REGISTER WRITE REQUEST PACKET | ||
171 | ============================================================================ | ||
172 | | 00 | 0xb1 register write command | ||
173 | ---------------------------------------------------------------------------- | ||
174 | | 01-02 | register | ||
175 | ---------------------------------------------------------------------------- | ||
176 | | 03 | 0x01 | ||
177 | ---------------------------------------------------------------------------- | ||
178 | | 04 | value | ||
179 | ---------------------------------------------------------------------------- | ||
180 | | 05-59 | don't care | ||
181 | ---------------------------------------------------------------------------- | ||
182 | | 60 | packet sequence number | ||
183 | ---------------------------------------------------------------------------- | ||
184 | | 61-63 | don't care | ||
185 | ---------------------------------------------------------------------------- | ||
186 | |||
187 | ============================================================================ | ||
188 | | 00-63 | USB CONTROLLER REGISTER READ REQUEST PACKET | ||
189 | ============================================================================ | ||
190 | | 00 | 0xb0 register read command | ||
191 | ---------------------------------------------------------------------------- | ||
192 | | 01-02 | register | ||
193 | ---------------------------------------------------------------------------- | ||
194 | | 03 | 0x01 | ||
195 | ---------------------------------------------------------------------------- | ||
196 | | 04-59 | don't care | ||
197 | ---------------------------------------------------------------------------- | ||
198 | | 60 | packet sequence number | ||
199 | ---------------------------------------------------------------------------- | ||
200 | | 61-63 | don't care | ||
201 | ---------------------------------------------------------------------------- | ||
202 | |||
203 | ============================================================================ | ||
204 | | 00-63 | LED CONTROL REQUEST PACKET | ||
205 | ============================================================================ | ||
206 | | 00 | 0x16 LED and IR control command | ||
207 | ---------------------------------------------------------------------------- | ||
208 | | 01 | 0x01 (LED) | ||
209 | ---------------------------------------------------------------------------- | ||
210 | | 03 | 0x00 blink | ||
211 | | | 0x01 lights continuously | ||
212 | ---------------------------------------------------------------------------- | ||
213 | | 04 | blink interval | ||
214 | | | 0x00 fastest (looks like LED lights continuously) | ||
215 | | | 0xff slowest | ||
216 | ---------------------------------------------------------------------------- | ||
217 | | 05-59 | don't care | ||
218 | ---------------------------------------------------------------------------- | ||
219 | | 60 | packet sequence number | ||
220 | ---------------------------------------------------------------------------- | ||
221 | | 61-63 | don't care | ||
222 | ---------------------------------------------------------------------------- | ||
223 | |||
224 | ============================================================================ | ||
225 | | 00-63 | IR CONTROL REQUEST PACKET | ||
226 | ============================================================================ | ||
227 | | 00 | 0x16 LED and IR control command | ||
228 | ---------------------------------------------------------------------------- | ||
229 | | 01 | 0x02 (IR) | ||
230 | ---------------------------------------------------------------------------- | ||
231 | | 03 | 0x00 IR disabled | ||
232 | | | 0x01 IR enabled | ||
233 | ---------------------------------------------------------------------------- | ||
234 | | 04-59 | don't care | ||
235 | ---------------------------------------------------------------------------- | ||
236 | | 60 | packet sequence number | ||
237 | ---------------------------------------------------------------------------- | ||
238 | | 61-63 | don't care | ||
239 | ---------------------------------------------------------------------------- | ||
240 | |||
241 | ============================================================================ | ||
242 | | 00-63 | STREAMING CONTROL REQUEST PACKET | ||
243 | ============================================================================ | ||
244 | | 00 | 0x12 streaming control command | ||
245 | ---------------------------------------------------------------------------- | ||
246 | | 01 | 0x00 streaming disabled | ||
247 | | | 0x01 streaming enabled | ||
248 | ---------------------------------------------------------------------------- | ||
249 | | 02 | 0x00 | ||
250 | ---------------------------------------------------------------------------- | ||
251 | | 03-59 | don't care | ||
252 | ---------------------------------------------------------------------------- | ||
253 | | 60 | packet sequence number | ||
254 | ---------------------------------------------------------------------------- | ||
255 | | 61-63 | don't care | ||
256 | ---------------------------------------------------------------------------- | ||
257 | |||
258 | ============================================================================ | ||
259 | | 00-63 | REMOTE CONTROL REQUEST PACKET | ||
260 | ============================================================================ | ||
261 | | 00 | 0x41 remote control command | ||
262 | ---------------------------------------------------------------------------- | ||
263 | | 01-59 | don't care | ||
264 | ---------------------------------------------------------------------------- | ||
265 | | 60 | packet sequence number | ||
266 | ---------------------------------------------------------------------------- | ||
267 | | 61-63 | don't care | ||
268 | ---------------------------------------------------------------------------- | ||
269 | |||
270 | ============================================================================ | ||
271 | | 00-63 | REMOTE CONTROL REPLY PACKET | ||
272 | ============================================================================ | ||
273 | | 00 | 0x00 code not received | ||
274 | | | 0x01 code received | ||
275 | ---------------------------------------------------------------------------- | ||
276 | | 01 | remote control code | ||
277 | ---------------------------------------------------------------------------- | ||
278 | | 02-59 | don't care | ||
279 | ---------------------------------------------------------------------------- | ||
280 | | 60 | packet sequence number | ||
281 | ---------------------------------------------------------------------------- | ||
282 | | 61-63 | don't care | ||
283 | ---------------------------------------------------------------------------- | ||
284 | |||
285 | ============================================================================ | ||
286 | | 00-63 | GET HARDWARE INFO REQUEST PACKET | ||
287 | ============================================================================ | ||
288 | | 00 | 0x19 get hardware info command | ||
289 | ---------------------------------------------------------------------------- | ||
290 | | 01-59 | don't care | ||
291 | ---------------------------------------------------------------------------- | ||
292 | | 60 | packet sequence number | ||
293 | ---------------------------------------------------------------------------- | ||
294 | | 61-63 | don't care | ||
295 | ---------------------------------------------------------------------------- | ||
296 | |||
297 | ============================================================================ | ||
298 | | 00-63 | GET HARDWARE INFO REPLY PACKET | ||
299 | ============================================================================ | ||
300 | | 00 | hardware id | ||
301 | ---------------------------------------------------------------------------- | ||
302 | | 01-02 | firmware version | ||
303 | ---------------------------------------------------------------------------- | ||
304 | | 03-59 | don't care | ||
305 | ---------------------------------------------------------------------------- | ||
306 | | 60 | packet sequence number | ||
307 | ---------------------------------------------------------------------------- | ||
308 | | 61-63 | don't care | ||
309 | ---------------------------------------------------------------------------- | ||
310 | |||
311 | ============================================================================ | ||
312 | | 00-63 | SMART CARD READER PACKET | ||
313 | ============================================================================ | ||
314 | | 00 | 0x34 smart card reader command | ||
315 | ---------------------------------------------------------------------------- | ||
316 | | xx | | ||
317 | ---------------------------------------------------------------------------- | ||
318 | | xx-59 | don't care | ||
319 | ---------------------------------------------------------------------------- | ||
320 | | 60 | packet sequence number | ||
321 | ---------------------------------------------------------------------------- | ||
322 | | 61-63 | don't care | ||
323 | ---------------------------------------------------------------------------- | ||
324 | |||
325 | */ | ||