PageRenderTime 50ms CodeModel.GetById 23ms app.highlight 10ms RepoModel.GetById 1ms app.codeStats 1ms

/drivers/media/dvb/dvb-usb/anysee.h

https://bitbucket.org/wisechild/galaxy-nexus
C++ Header | 323 lines | 43 code | 9 blank | 271 comment | 0 complexity | ea86aec09ca9228318b08d0a22451284 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
  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
 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 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
 89Transaction flow:
 90=================
 91BULK[00001] >>> REQUEST PACKET 64 bytes
 92BULK[00081] <<< REPLY PACKET #1 64 bytes (PREVIOUS TRANSACTION REPLY)
 93BULK[00081] <<< REPLY PACKET #2 64 bytes (CURRENT TRANSACTION REPLY)
 94
 95General 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*/