2 * DVB USB Linux driver for Anysee E30 DVB-C & DVB-T USB2.0 receiver
4 * Copyright (C) 2007 Antti Palosaari <crope@iki.fi>
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.
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.
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.
21 * - add smart card reader support for Conditional Access (CA)
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.
30 * Any help according to implement serial smart card reader support
34 #ifndef _DVB_USB_ANYSEE_H_
35 #define _DVB_USB_ANYSEE_H_
37 #define DVB_USB_LOG_PREFIX "anysee"
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)
52 CMD_STREAMING_CTRL
= 0x12,
53 CMD_LED_AND_IR_CTRL
= 0x16,
54 CMD_GET_IR_CODE
= 0x41,
55 CMD_GET_HW_INFO
= 0x19,
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 */
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 */
87 /***************************************************************************
88 * USB API description (reverse engineered)
89 ***************************************************************************
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)
97 General reply packet(s) are always used if not own reply defined.
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 ----------------------------------------------------------------------------
108 ----------------------------------------------------------------------------
109 | 60 | packet sequence number
110 ----------------------------------------------------------------------------
112 ----------------------------------------------------------------------------
114 ============================================================================
115 | 00-63 | GENERAL REPLY PACKET #2 (CURRENT REPLY)
116 ============================================================================
117 | 00 | reply data (if any)
118 ----------------------------------------------------------------------------
120 ----------------------------------------------------------------------------
121 | 60 | packet sequence number
122 ----------------------------------------------------------------------------
124 ----------------------------------------------------------------------------
126 ============================================================================
127 | 00-63 | I2C WRITE REQUEST PACKET
128 ============================================================================
129 | 00 | 0x31 I2C write command
130 ----------------------------------------------------------------------------
132 ----------------------------------------------------------------------------
134 | | 0x02 (for typical I2C reg / val pair)
135 ----------------------------------------------------------------------------
137 ----------------------------------------------------------------------------
139 ----------------------------------------------------------------------------
141 ----------------------------------------------------------------------------
142 | 60 | packet sequence number
143 ----------------------------------------------------------------------------
145 ----------------------------------------------------------------------------
147 ============================================================================
148 | 00-63 | I2C READ REQUEST PACKET
149 ============================================================================
150 | 00 | 0x33 I2C read command
151 ----------------------------------------------------------------------------
152 | 01 | i2c address + 1
153 ----------------------------------------------------------------------------
155 ----------------------------------------------------------------------------
157 ----------------------------------------------------------------------------
159 ----------------------------------------------------------------------------
161 ----------------------------------------------------------------------------
163 ----------------------------------------------------------------------------
164 | 60 | packet sequence number
165 ----------------------------------------------------------------------------
167 ----------------------------------------------------------------------------
169 ============================================================================
170 | 00-63 | USB CONTROLLER REGISTER WRITE REQUEST PACKET
171 ============================================================================
172 | 00 | 0xb1 register write command
173 ----------------------------------------------------------------------------
175 ----------------------------------------------------------------------------
177 ----------------------------------------------------------------------------
179 ----------------------------------------------------------------------------
181 ----------------------------------------------------------------------------
182 | 60 | packet sequence number
183 ----------------------------------------------------------------------------
185 ----------------------------------------------------------------------------
187 ============================================================================
188 | 00-63 | USB CONTROLLER REGISTER READ REQUEST PACKET
189 ============================================================================
190 | 00 | 0xb0 register read command
191 ----------------------------------------------------------------------------
193 ----------------------------------------------------------------------------
195 ----------------------------------------------------------------------------
197 ----------------------------------------------------------------------------
198 | 60 | packet sequence number
199 ----------------------------------------------------------------------------
201 ----------------------------------------------------------------------------
203 ============================================================================
204 | 00-63 | LED CONTROL REQUEST PACKET
205 ============================================================================
206 | 00 | 0x16 LED and IR control command
207 ----------------------------------------------------------------------------
209 ----------------------------------------------------------------------------
211 | | 0x01 lights continuously
212 ----------------------------------------------------------------------------
213 | 04 | blink interval
214 | | 0x00 fastest (looks like LED lights continuously)
216 ----------------------------------------------------------------------------
218 ----------------------------------------------------------------------------
219 | 60 | packet sequence number
220 ----------------------------------------------------------------------------
222 ----------------------------------------------------------------------------
224 ============================================================================
225 | 00-63 | IR CONTROL REQUEST PACKET
226 ============================================================================
227 | 00 | 0x16 LED and IR control command
228 ----------------------------------------------------------------------------
230 ----------------------------------------------------------------------------
231 | 03 | 0x00 IR disabled
233 ----------------------------------------------------------------------------
235 ----------------------------------------------------------------------------
236 | 60 | packet sequence number
237 ----------------------------------------------------------------------------
239 ----------------------------------------------------------------------------
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 ----------------------------------------------------------------------------
250 ----------------------------------------------------------------------------
252 ----------------------------------------------------------------------------
253 | 60 | packet sequence number
254 ----------------------------------------------------------------------------
256 ----------------------------------------------------------------------------
258 ============================================================================
259 | 00-63 | REMOTE CONTROL REQUEST PACKET
260 ============================================================================
261 | 00 | 0x41 remote control command
262 ----------------------------------------------------------------------------
264 ----------------------------------------------------------------------------
265 | 60 | packet sequence number
266 ----------------------------------------------------------------------------
268 ----------------------------------------------------------------------------
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 ----------------------------------------------------------------------------
279 ----------------------------------------------------------------------------
280 | 60 | packet sequence number
281 ----------------------------------------------------------------------------
283 ----------------------------------------------------------------------------
285 ============================================================================
286 | 00-63 | GET HARDWARE INFO REQUEST PACKET
287 ============================================================================
288 | 00 | 0x19 get hardware info command
289 ----------------------------------------------------------------------------
291 ----------------------------------------------------------------------------
292 | 60 | packet sequence number
293 ----------------------------------------------------------------------------
295 ----------------------------------------------------------------------------
297 ============================================================================
298 | 00-63 | GET HARDWARE INFO REPLY PACKET
299 ============================================================================
301 ----------------------------------------------------------------------------
302 | 01-02 | firmware version
303 ----------------------------------------------------------------------------
305 ----------------------------------------------------------------------------
306 | 60 | packet sequence number
307 ----------------------------------------------------------------------------
309 ----------------------------------------------------------------------------
311 ============================================================================
312 | 00-63 | SMART CARD READER PACKET
313 ============================================================================
314 | 00 | 0x34 smart card reader command
315 ----------------------------------------------------------------------------
317 ----------------------------------------------------------------------------
319 ----------------------------------------------------------------------------
320 | 60 | packet sequence number
321 ----------------------------------------------------------------------------
323 ----------------------------------------------------------------------------