Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/drivers/media/dvb/dvb-usb/anysee.h
15111 views
1
/*
2
* DVB USB Linux driver for Anysee E30 DVB-C & DVB-T USB2.0 receiver
3
*
4
* Copyright (C) 2007 Antti Palosaari <[email protected]>
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_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 */
69
#define ANYSEE_HW_508TC 18 /* E7 TC */
70
#define ANYSEE_HW_508S2 19 /* E7 S2 */
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
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
----------------------------------------------------------------------------
158
| 05 | data length
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
*/
324
325