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