Commit | Line | Data |
---|---|---|
a51e34dd AP |
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 | |
9fdd9caf AP |
26 | * for ISO 7816 card reader, like dvb_ca_en50221 is implemented. This |
27 | * module registers serial interface that can be used to communicate | |
a51e34dd AP |
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 { | |
41f81f68 | 60 | u8 hw; /* PCB ID */ |
a51e34dd AP |
61 | u8 seq; |
62 | }; | |
63 | ||
41f81f68 AP |
64 | #define ANYSEE_HW_02 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 */ | |
a43be980 | 69 | #define ANYSEE_HW_508TC 18 /* E7 TC */ |
bedbf3d1 | 70 | #define ANYSEE_HW_508S2 19 /* E7 S2 */ |
41f81f68 AP |
71 | |
72 | #define REG_IOA 0x80 /* Port A (bit addressable) */ | |
73 | #define REG_IOB 0x90 /* Port B (bit addressable) */ | |
74 | #define REG_IOC 0xa0 /* Port C (bit addressable) */ | |
75 | #define REG_IOD 0xb0 /* Port D (bit addressable) */ | |
76 | #define REG_IOE 0xb1 /* Port E (NOT bit addressable) */ | |
77 | #define REG_OEA 0xb2 /* Port A Output Enable */ | |
78 | #define REG_OEB 0xb3 /* Port B Output Enable */ | |
79 | #define REG_OEC 0xb4 /* Port C Output Enable */ | |
80 | #define REG_OED 0xb5 /* Port D Output Enable */ | |
81 | #define REG_OEE 0xb6 /* Port E Output Enable */ | |
82 | ||
a51e34dd AP |
83 | #endif |
84 | ||
85 | /*************************************************************************** | |
86 | * USB API description (reverse engineered) | |
87 | *************************************************************************** | |
88 | ||
89 | Transaction flow: | |
90 | ================= | |
91 | BULK[00001] >>> REQUEST PACKET 64 bytes | |
92 | BULK[00081] <<< REPLY PACKET #1 64 bytes (PREVIOUS TRANSACTION REPLY) | |
93 | BULK[00081] <<< REPLY PACKET #2 64 bytes (CURRENT TRANSACTION REPLY) | |
94 | ||
95 | General reply packet(s) are always used if not own reply defined. | |
96 | ||
97 | ============================================================================ | |
98 | | 00-63 | GENERAL REPLY PACKET #1 (PREVIOUS REPLY) | |
99 | ============================================================================ | |
100 | | 00 | reply data (if any) from previous transaction | |
101 | | | Just same reply packet as returned during previous transaction. | |
102 | | | Needed only if reply is missed in previous transaction. | |
103 | | | Just skip normally. | |
104 | ---------------------------------------------------------------------------- | |
105 | | 01-59 | don't care | |
106 | ---------------------------------------------------------------------------- | |
107 | | 60 | packet sequence number | |
108 | ---------------------------------------------------------------------------- | |
109 | | 61-63 | don't care | |
110 | ---------------------------------------------------------------------------- | |
111 | ||
112 | ============================================================================ | |
113 | | 00-63 | GENERAL REPLY PACKET #2 (CURRENT REPLY) | |
114 | ============================================================================ | |
115 | | 00 | reply data (if any) | |
116 | ---------------------------------------------------------------------------- | |
117 | | 01-59 | don't care | |
118 | ---------------------------------------------------------------------------- | |
119 | | 60 | packet sequence number | |
120 | ---------------------------------------------------------------------------- | |
121 | | 61-63 | don't care | |
122 | ---------------------------------------------------------------------------- | |
123 | ||
124 | ============================================================================ | |
125 | | 00-63 | I2C WRITE REQUEST PACKET | |
126 | ============================================================================ | |
127 | | 00 | 0x31 I2C write command | |
128 | ---------------------------------------------------------------------------- | |
129 | | 01 | i2c address | |
130 | ---------------------------------------------------------------------------- | |
131 | | 02 | data length | |
132 | | | 0x02 (for typical I2C reg / val pair) | |
133 | ---------------------------------------------------------------------------- | |
134 | | 03 | 0x01 | |
135 | ---------------------------------------------------------------------------- | |
136 | | 04- | data | |
137 | ---------------------------------------------------------------------------- | |
138 | | -59 | don't care | |
139 | ---------------------------------------------------------------------------- | |
140 | | 60 | packet sequence number | |
141 | ---------------------------------------------------------------------------- | |
142 | | 61-63 | don't care | |
143 | ---------------------------------------------------------------------------- | |
144 | ||
145 | ============================================================================ | |
146 | | 00-63 | I2C READ REQUEST PACKET | |
147 | ============================================================================ | |
148 | | 00 | 0x33 I2C read command | |
149 | ---------------------------------------------------------------------------- | |
150 | | 01 | i2c address + 1 | |
151 | ---------------------------------------------------------------------------- | |
152 | | 02 | register | |
153 | ---------------------------------------------------------------------------- | |
154 | | 03 | 0x00 | |
155 | ---------------------------------------------------------------------------- | |
156 | | 04 | 0x00 | |
157 | ---------------------------------------------------------------------------- | |
b3e6a5af | 158 | | 05 | data length |
a51e34dd AP |
159 | ---------------------------------------------------------------------------- |
160 | | 06-59 | don't care | |
161 | ---------------------------------------------------------------------------- | |
162 | | 60 | packet sequence number | |
163 | ---------------------------------------------------------------------------- | |
164 | | 61-63 | don't care | |
165 | ---------------------------------------------------------------------------- | |
166 | ||
167 | ============================================================================ | |
168 | | 00-63 | USB CONTROLLER REGISTER WRITE REQUEST PACKET | |
169 | ============================================================================ | |
170 | | 00 | 0xb1 register write command | |
171 | ---------------------------------------------------------------------------- | |
172 | | 01-02 | register | |
173 | ---------------------------------------------------------------------------- | |
174 | | 03 | 0x01 | |
175 | ---------------------------------------------------------------------------- | |
176 | | 04 | value | |
177 | ---------------------------------------------------------------------------- | |
178 | | 05-59 | don't care | |
179 | ---------------------------------------------------------------------------- | |
180 | | 60 | packet sequence number | |
181 | ---------------------------------------------------------------------------- | |
182 | | 61-63 | don't care | |
183 | ---------------------------------------------------------------------------- | |
184 | ||
185 | ============================================================================ | |
186 | | 00-63 | USB CONTROLLER REGISTER READ REQUEST PACKET | |
187 | ============================================================================ | |
188 | | 00 | 0xb0 register read command | |
189 | ---------------------------------------------------------------------------- | |
190 | | 01-02 | register | |
191 | ---------------------------------------------------------------------------- | |
192 | | 03 | 0x01 | |
193 | ---------------------------------------------------------------------------- | |
194 | | 04-59 | don't care | |
195 | ---------------------------------------------------------------------------- | |
196 | | 60 | packet sequence number | |
197 | ---------------------------------------------------------------------------- | |
198 | | 61-63 | don't care | |
199 | ---------------------------------------------------------------------------- | |
200 | ||
201 | ============================================================================ | |
202 | | 00-63 | LED CONTROL REQUEST PACKET | |
203 | ============================================================================ | |
204 | | 00 | 0x16 LED and IR control command | |
205 | ---------------------------------------------------------------------------- | |
206 | | 01 | 0x01 (LED) | |
207 | ---------------------------------------------------------------------------- | |
208 | | 03 | 0x00 blink | |
209 | | | 0x01 lights continuously | |
210 | ---------------------------------------------------------------------------- | |
211 | | 04 | blink interval | |
212 | | | 0x00 fastest (looks like LED lights continuously) | |
213 | | | 0xff slowest | |
214 | ---------------------------------------------------------------------------- | |
215 | | 05-59 | don't care | |
216 | ---------------------------------------------------------------------------- | |
217 | | 60 | packet sequence number | |
218 | ---------------------------------------------------------------------------- | |
219 | | 61-63 | don't care | |
220 | ---------------------------------------------------------------------------- | |
221 | ||
222 | ============================================================================ | |
223 | | 00-63 | IR CONTROL REQUEST PACKET | |
224 | ============================================================================ | |
225 | | 00 | 0x16 LED and IR control command | |
226 | ---------------------------------------------------------------------------- | |
227 | | 01 | 0x02 (IR) | |
228 | ---------------------------------------------------------------------------- | |
229 | | 03 | 0x00 IR disabled | |
230 | | | 0x01 IR enabled | |
231 | ---------------------------------------------------------------------------- | |
232 | | 04-59 | don't care | |
233 | ---------------------------------------------------------------------------- | |
234 | | 60 | packet sequence number | |
235 | ---------------------------------------------------------------------------- | |
236 | | 61-63 | don't care | |
237 | ---------------------------------------------------------------------------- | |
238 | ||
239 | ============================================================================ | |
240 | | 00-63 | STREAMING CONTROL REQUEST PACKET | |
241 | ============================================================================ | |
242 | | 00 | 0x12 streaming control command | |
243 | ---------------------------------------------------------------------------- | |
244 | | 01 | 0x00 streaming disabled | |
245 | | | 0x01 streaming enabled | |
246 | ---------------------------------------------------------------------------- | |
247 | | 02 | 0x00 | |
248 | ---------------------------------------------------------------------------- | |
249 | | 03-59 | don't care | |
250 | ---------------------------------------------------------------------------- | |
251 | | 60 | packet sequence number | |
252 | ---------------------------------------------------------------------------- | |
253 | | 61-63 | don't care | |
254 | ---------------------------------------------------------------------------- | |
255 | ||
256 | ============================================================================ | |
257 | | 00-63 | REMOTE CONTROL REQUEST PACKET | |
258 | ============================================================================ | |
259 | | 00 | 0x41 remote control command | |
260 | ---------------------------------------------------------------------------- | |
261 | | 01-59 | don't care | |
262 | ---------------------------------------------------------------------------- | |
263 | | 60 | packet sequence number | |
264 | ---------------------------------------------------------------------------- | |
265 | | 61-63 | don't care | |
266 | ---------------------------------------------------------------------------- | |
267 | ||
268 | ============================================================================ | |
269 | | 00-63 | REMOTE CONTROL REPLY PACKET | |
270 | ============================================================================ | |
271 | | 00 | 0x00 code not received | |
272 | | | 0x01 code received | |
273 | ---------------------------------------------------------------------------- | |
274 | | 01 | remote control code | |
275 | ---------------------------------------------------------------------------- | |
276 | | 02-59 | don't care | |
277 | ---------------------------------------------------------------------------- | |
278 | | 60 | packet sequence number | |
279 | ---------------------------------------------------------------------------- | |
280 | | 61-63 | don't care | |
281 | ---------------------------------------------------------------------------- | |
282 | ||
283 | ============================================================================ | |
284 | | 00-63 | GET HARDWARE INFO REQUEST PACKET | |
285 | ============================================================================ | |
286 | | 00 | 0x19 get hardware info command | |
287 | ---------------------------------------------------------------------------- | |
288 | | 01-59 | don't care | |
289 | ---------------------------------------------------------------------------- | |
290 | | 60 | packet sequence number | |
291 | ---------------------------------------------------------------------------- | |
292 | | 61-63 | don't care | |
293 | ---------------------------------------------------------------------------- | |
294 | ||
295 | ============================================================================ | |
296 | | 00-63 | GET HARDWARE INFO REPLY PACKET | |
297 | ============================================================================ | |
298 | | 00 | hardware id | |
299 | ---------------------------------------------------------------------------- | |
300 | | 01-02 | firmware version | |
301 | ---------------------------------------------------------------------------- | |
302 | | 03-59 | don't care | |
303 | ---------------------------------------------------------------------------- | |
304 | | 60 | packet sequence number | |
305 | ---------------------------------------------------------------------------- | |
306 | | 61-63 | don't care | |
307 | ---------------------------------------------------------------------------- | |
308 | ||
309 | ============================================================================ | |
310 | | 00-63 | SMART CARD READER PACKET | |
311 | ============================================================================ | |
312 | | 00 | 0x34 smart card reader command | |
313 | ---------------------------------------------------------------------------- | |
314 | | xx | | |
315 | ---------------------------------------------------------------------------- | |
316 | | xx-59 | don't care | |
317 | ---------------------------------------------------------------------------- | |
318 | | 60 | packet sequence number | |
319 | ---------------------------------------------------------------------------- | |
320 | | 61-63 | don't care | |
321 | ---------------------------------------------------------------------------- | |
322 | ||
323 | */ |