/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * DVB USB Linux driver for Anysee E30 DVB-C & DVB-T USB2.0 receiver * * Copyright (C) 2007 Antti Palosaari <[email protected]> * * TODO: * - add smart card reader support for Conditional Access (CA) * * Card reader in Anysee is nothing more than ISO 7816 card reader. * There is no hardware CAM in any Anysee device sold. * In my understanding it should be implemented by making own module * for ISO 7816 card reader, like dvb_ca_en50221 is implemented. This * module registers serial interface that can be used to communicate * with any ISO 7816 smart card. * * Any help according to implement serial smart card reader support * is highly welcome! */ #ifndef _DVB_USB_ANYSEE_H_ #define _DVB_USB_ANYSEE_H_ #define DVB_USB_LOG_PREFIX … #include "dvb_usb.h" #include <media/dvb_ca_en50221.h> enum cmd { … }; struct anysee_state { … }; #define ANYSEE_HW_507T … #define ANYSEE_HW_507CD … #define ANYSEE_HW_507DC … #define ANYSEE_HW_507SI … #define ANYSEE_HW_507FA … #define ANYSEE_HW_508TC … #define ANYSEE_HW_508S2 … #define ANYSEE_HW_508T2C … #define ANYSEE_HW_508PTC … #define ANYSEE_HW_508PS2 … #define REG_IOA … #define REG_IOB … #define REG_IOC … #define REG_IOD … #define REG_IOE … #define REG_OEA … #define REG_OEB … #define REG_OEC … #define REG_OED … #define REG_OEE … #endif /*************************************************************************** * USB API description (reverse engineered) *************************************************************************** Transaction flow: ================= BULK[00001] >>> REQUEST PACKET 64 bytes BULK[00081] <<< REPLY PACKET #1 64 bytes (PREVIOUS TRANSACTION REPLY) BULK[00081] <<< REPLY PACKET #2 64 bytes (CURRENT TRANSACTION REPLY) General reply packet(s) are always used if not own reply defined. ============================================================================ | 00-63 | GENERAL REPLY PACKET #1 (PREVIOUS REPLY) ============================================================================ | 00 | reply data (if any) from previous transaction | | Just same reply packet as returned during previous transaction. | | Needed only if reply is missed in previous transaction. | | Just skip normally. ---------------------------------------------------------------------------- | 01-59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- ============================================================================ | 00-63 | GENERAL REPLY PACKET #2 (CURRENT REPLY) ============================================================================ | 00 | reply data (if any) ---------------------------------------------------------------------------- | 01-59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- ============================================================================ | 00-63 | I2C WRITE REQUEST PACKET ============================================================================ | 00 | 0x31 I2C write command ---------------------------------------------------------------------------- | 01 | i2c address ---------------------------------------------------------------------------- | 02 | data length | | 0x02 (for typical I2C reg / val pair) ---------------------------------------------------------------------------- | 03 | 0x01 ---------------------------------------------------------------------------- | 04- | data ---------------------------------------------------------------------------- | -59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- ============================================================================ | 00-63 | I2C READ REQUEST PACKET ============================================================================ | 00 | 0x33 I2C read command ---------------------------------------------------------------------------- | 01 | i2c address + 1 ---------------------------------------------------------------------------- | 02 | register ---------------------------------------------------------------------------- | 03 | 0x00 ---------------------------------------------------------------------------- | 04 | 0x00 ---------------------------------------------------------------------------- | 05 | data length ---------------------------------------------------------------------------- | 06-59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- ============================================================================ | 00-63 | USB CONTROLLER REGISTER WRITE REQUEST PACKET ============================================================================ | 00 | 0xb1 register write command ---------------------------------------------------------------------------- | 01-02 | register ---------------------------------------------------------------------------- | 03 | 0x01 ---------------------------------------------------------------------------- | 04 | value ---------------------------------------------------------------------------- | 05-59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- ============================================================================ | 00-63 | USB CONTROLLER REGISTER READ REQUEST PACKET ============================================================================ | 00 | 0xb0 register read command ---------------------------------------------------------------------------- | 01-02 | register ---------------------------------------------------------------------------- | 03 | 0x01 ---------------------------------------------------------------------------- | 04-59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- ============================================================================ | 00-63 | LED CONTROL REQUEST PACKET ============================================================================ | 00 | 0x16 LED and IR control command ---------------------------------------------------------------------------- | 01 | 0x01 (LED) ---------------------------------------------------------------------------- | 03 | 0x00 blink | | 0x01 lights continuously ---------------------------------------------------------------------------- | 04 | blink interval | | 0x00 fastest (looks like LED lights continuously) | | 0xff slowest ---------------------------------------------------------------------------- | 05-59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- ============================================================================ | 00-63 | IR CONTROL REQUEST PACKET ============================================================================ | 00 | 0x16 LED and IR control command ---------------------------------------------------------------------------- | 01 | 0x02 (IR) ---------------------------------------------------------------------------- | 03 | 0x00 IR disabled | | 0x01 IR enabled ---------------------------------------------------------------------------- | 04-59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- ============================================================================ | 00-63 | STREAMING CONTROL REQUEST PACKET ============================================================================ | 00 | 0x12 streaming control command ---------------------------------------------------------------------------- | 01 | 0x00 streaming disabled | | 0x01 streaming enabled ---------------------------------------------------------------------------- | 02 | 0x00 ---------------------------------------------------------------------------- | 03-59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- ============================================================================ | 00-63 | REMOTE CONTROL REQUEST PACKET ============================================================================ | 00 | 0x41 remote control command ---------------------------------------------------------------------------- | 01-59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- ============================================================================ | 00-63 | REMOTE CONTROL REPLY PACKET ============================================================================ | 00 | 0x00 code not received | | 0x01 code received ---------------------------------------------------------------------------- | 01 | remote control code ---------------------------------------------------------------------------- | 02-59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- ============================================================================ | 00-63 | GET HARDWARE INFO REQUEST PACKET ============================================================================ | 00 | 0x19 get hardware info command ---------------------------------------------------------------------------- | 01-59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- ============================================================================ | 00-63 | GET HARDWARE INFO REPLY PACKET ============================================================================ | 00 | hardware id ---------------------------------------------------------------------------- | 01-02 | firmware version ---------------------------------------------------------------------------- | 03-59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- ============================================================================ | 00-63 | SMART CARD READER PACKET ============================================================================ | 00 | 0x34 smart card reader command ---------------------------------------------------------------------------- | xx | ---------------------------------------------------------------------------- | xx-59 | don't care ---------------------------------------------------------------------------- | 60 | packet sequence number ---------------------------------------------------------------------------- | 61-63 | don't care ---------------------------------------------------------------------------- */