anysee.h (14432B)
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * DVB USB Linux driver for Anysee E30 DVB-C & DVB-T USB2.0 receiver 4 * 5 * Copyright (C) 2007 Antti Palosaari <crope@iki.fi> 6 * 7 * TODO: 8 * - add smart card reader support for Conditional Access (CA) 9 * 10 * Card reader in Anysee is nothing more than ISO 7816 card reader. 11 * There is no hardware CAM in any Anysee device sold. 12 * In my understanding it should be implemented by making own module 13 * for ISO 7816 card reader, like dvb_ca_en50221 is implemented. This 14 * module registers serial interface that can be used to communicate 15 * with any ISO 7816 smart card. 16 * 17 * Any help according to implement serial smart card reader support 18 * is highly welcome! 19 */ 20 21#ifndef _DVB_USB_ANYSEE_H_ 22#define _DVB_USB_ANYSEE_H_ 23 24#define DVB_USB_LOG_PREFIX "anysee" 25#include "dvb_usb.h" 26#include <media/dvb_ca_en50221.h> 27 28enum cmd { 29 CMD_I2C_READ = 0x33, 30 CMD_I2C_WRITE = 0x31, 31 CMD_REG_READ = 0xb0, 32 CMD_REG_WRITE = 0xb1, 33 CMD_STREAMING_CTRL = 0x12, 34 CMD_LED_AND_IR_CTRL = 0x16, 35 CMD_GET_IR_CODE = 0x41, 36 CMD_GET_HW_INFO = 0x19, 37 CMD_SMARTCARD = 0x34, 38 CMD_CI = 0x37, 39}; 40 41struct anysee_state { 42 u8 buf[64]; 43 u8 seq; 44 u8 hw; /* PCB ID */ 45 #define ANYSEE_I2C_CLIENT_MAX 1 46 struct i2c_client *i2c_client[ANYSEE_I2C_CLIENT_MAX]; 47 u8 fe_id:1; /* frondend ID */ 48 u8 has_ci:1; 49 u8 has_tda18212:1; 50 u8 ci_attached:1; 51 struct dvb_ca_en50221 ci; 52 unsigned long ci_cam_ready; /* jiffies */ 53}; 54 55#define ANYSEE_HW_507T 2 /* E30 */ 56#define ANYSEE_HW_507CD 6 /* E30 Plus */ 57#define ANYSEE_HW_507DC 10 /* E30 C Plus */ 58#define ANYSEE_HW_507SI 11 /* E30 S2 Plus */ 59#define ANYSEE_HW_507FA 15 /* E30 Combo Plus / E30 C Plus */ 60#define ANYSEE_HW_508TC 18 /* E7 TC */ 61#define ANYSEE_HW_508S2 19 /* E7 S2 */ 62#define ANYSEE_HW_508T2C 20 /* E7 T2C */ 63#define ANYSEE_HW_508PTC 21 /* E7 PTC Plus */ 64#define ANYSEE_HW_508PS2 22 /* E7 PS2 Plus */ 65 66#define REG_IOA 0x80 /* Port A (bit addressable) */ 67#define REG_IOB 0x90 /* Port B (bit addressable) */ 68#define REG_IOC 0xa0 /* Port C (bit addressable) */ 69#define REG_IOD 0xb0 /* Port D (bit addressable) */ 70#define REG_IOE 0xb1 /* Port E (NOT bit addressable) */ 71#define REG_OEA 0xb2 /* Port A Output Enable */ 72#define REG_OEB 0xb3 /* Port B Output Enable */ 73#define REG_OEC 0xb4 /* Port C Output Enable */ 74#define REG_OED 0xb5 /* Port D Output Enable */ 75#define REG_OEE 0xb6 /* Port E Output Enable */ 76 77#endif 78 79/*************************************************************************** 80 * USB API description (reverse engineered) 81 *************************************************************************** 82 83Transaction flow: 84================= 85BULK[00001] >>> REQUEST PACKET 64 bytes 86BULK[00081] <<< REPLY PACKET #1 64 bytes (PREVIOUS TRANSACTION REPLY) 87BULK[00081] <<< REPLY PACKET #2 64 bytes (CURRENT TRANSACTION REPLY) 88 89General reply packet(s) are always used if not own reply defined. 90 91============================================================================ 92| 00-63 | GENERAL REPLY PACKET #1 (PREVIOUS REPLY) 93============================================================================ 94| 00 | reply data (if any) from previous transaction 95| | Just same reply packet as returned during previous transaction. 96| | Needed only if reply is missed in previous transaction. 97| | Just skip normally. 98---------------------------------------------------------------------------- 99| 01-59 | don't care 100---------------------------------------------------------------------------- 101| 60 | packet sequence number 102---------------------------------------------------------------------------- 103| 61-63 | don't care 104---------------------------------------------------------------------------- 105 106============================================================================ 107| 00-63 | GENERAL REPLY PACKET #2 (CURRENT REPLY) 108============================================================================ 109| 00 | reply data (if any) 110---------------------------------------------------------------------------- 111| 01-59 | don't care 112---------------------------------------------------------------------------- 113| 60 | packet sequence number 114---------------------------------------------------------------------------- 115| 61-63 | don't care 116---------------------------------------------------------------------------- 117 118============================================================================ 119| 00-63 | I2C WRITE REQUEST PACKET 120============================================================================ 121| 00 | 0x31 I2C write command 122---------------------------------------------------------------------------- 123| 01 | i2c address 124---------------------------------------------------------------------------- 125| 02 | data length 126| | 0x02 (for typical I2C reg / val pair) 127---------------------------------------------------------------------------- 128| 03 | 0x01 129---------------------------------------------------------------------------- 130| 04- | data 131---------------------------------------------------------------------------- 132| -59 | don't care 133---------------------------------------------------------------------------- 134| 60 | packet sequence number 135---------------------------------------------------------------------------- 136| 61-63 | don't care 137---------------------------------------------------------------------------- 138 139============================================================================ 140| 00-63 | I2C READ REQUEST PACKET 141============================================================================ 142| 00 | 0x33 I2C read command 143---------------------------------------------------------------------------- 144| 01 | i2c address + 1 145---------------------------------------------------------------------------- 146| 02 | register 147---------------------------------------------------------------------------- 148| 03 | 0x00 149---------------------------------------------------------------------------- 150| 04 | 0x00 151---------------------------------------------------------------------------- 152| 05 | data length 153---------------------------------------------------------------------------- 154| 06-59 | don't care 155---------------------------------------------------------------------------- 156| 60 | packet sequence number 157---------------------------------------------------------------------------- 158| 61-63 | don't care 159---------------------------------------------------------------------------- 160 161============================================================================ 162| 00-63 | USB CONTROLLER REGISTER WRITE REQUEST PACKET 163============================================================================ 164| 00 | 0xb1 register write command 165---------------------------------------------------------------------------- 166| 01-02 | register 167---------------------------------------------------------------------------- 168| 03 | 0x01 169---------------------------------------------------------------------------- 170| 04 | value 171---------------------------------------------------------------------------- 172| 05-59 | don't care 173---------------------------------------------------------------------------- 174| 60 | packet sequence number 175---------------------------------------------------------------------------- 176| 61-63 | don't care 177---------------------------------------------------------------------------- 178 179============================================================================ 180| 00-63 | USB CONTROLLER REGISTER READ REQUEST PACKET 181============================================================================ 182| 00 | 0xb0 register read command 183---------------------------------------------------------------------------- 184| 01-02 | register 185---------------------------------------------------------------------------- 186| 03 | 0x01 187---------------------------------------------------------------------------- 188| 04-59 | don't care 189---------------------------------------------------------------------------- 190| 60 | packet sequence number 191---------------------------------------------------------------------------- 192| 61-63 | don't care 193---------------------------------------------------------------------------- 194 195============================================================================ 196| 00-63 | LED CONTROL REQUEST PACKET 197============================================================================ 198| 00 | 0x16 LED and IR control command 199---------------------------------------------------------------------------- 200| 01 | 0x01 (LED) 201---------------------------------------------------------------------------- 202| 03 | 0x00 blink 203| | 0x01 lights continuously 204---------------------------------------------------------------------------- 205| 04 | blink interval 206| | 0x00 fastest (looks like LED lights continuously) 207| | 0xff slowest 208---------------------------------------------------------------------------- 209| 05-59 | don't care 210---------------------------------------------------------------------------- 211| 60 | packet sequence number 212---------------------------------------------------------------------------- 213| 61-63 | don't care 214---------------------------------------------------------------------------- 215 216============================================================================ 217| 00-63 | IR CONTROL REQUEST PACKET 218============================================================================ 219| 00 | 0x16 LED and IR control command 220---------------------------------------------------------------------------- 221| 01 | 0x02 (IR) 222---------------------------------------------------------------------------- 223| 03 | 0x00 IR disabled 224| | 0x01 IR enabled 225---------------------------------------------------------------------------- 226| 04-59 | don't care 227---------------------------------------------------------------------------- 228| 60 | packet sequence number 229---------------------------------------------------------------------------- 230| 61-63 | don't care 231---------------------------------------------------------------------------- 232 233============================================================================ 234| 00-63 | STREAMING CONTROL REQUEST PACKET 235============================================================================ 236| 00 | 0x12 streaming control command 237---------------------------------------------------------------------------- 238| 01 | 0x00 streaming disabled 239| | 0x01 streaming enabled 240---------------------------------------------------------------------------- 241| 02 | 0x00 242---------------------------------------------------------------------------- 243| 03-59 | don't care 244---------------------------------------------------------------------------- 245| 60 | packet sequence number 246---------------------------------------------------------------------------- 247| 61-63 | don't care 248---------------------------------------------------------------------------- 249 250============================================================================ 251| 00-63 | REMOTE CONTROL REQUEST PACKET 252============================================================================ 253| 00 | 0x41 remote control command 254---------------------------------------------------------------------------- 255| 01-59 | don't care 256---------------------------------------------------------------------------- 257| 60 | packet sequence number 258---------------------------------------------------------------------------- 259| 61-63 | don't care 260---------------------------------------------------------------------------- 261 262============================================================================ 263| 00-63 | REMOTE CONTROL REPLY PACKET 264============================================================================ 265| 00 | 0x00 code not received 266| | 0x01 code received 267---------------------------------------------------------------------------- 268| 01 | remote control code 269---------------------------------------------------------------------------- 270| 02-59 | don't care 271---------------------------------------------------------------------------- 272| 60 | packet sequence number 273---------------------------------------------------------------------------- 274| 61-63 | don't care 275---------------------------------------------------------------------------- 276 277============================================================================ 278| 00-63 | GET HARDWARE INFO REQUEST PACKET 279============================================================================ 280| 00 | 0x19 get hardware info command 281---------------------------------------------------------------------------- 282| 01-59 | don't care 283---------------------------------------------------------------------------- 284| 60 | packet sequence number 285---------------------------------------------------------------------------- 286| 61-63 | don't care 287---------------------------------------------------------------------------- 288 289============================================================================ 290| 00-63 | GET HARDWARE INFO REPLY PACKET 291============================================================================ 292| 00 | hardware id 293---------------------------------------------------------------------------- 294| 01-02 | firmware version 295---------------------------------------------------------------------------- 296| 03-59 | don't care 297---------------------------------------------------------------------------- 298| 60 | packet sequence number 299---------------------------------------------------------------------------- 300| 61-63 | don't care 301---------------------------------------------------------------------------- 302 303============================================================================ 304| 00-63 | SMART CARD READER PACKET 305============================================================================ 306| 00 | 0x34 smart card reader command 307---------------------------------------------------------------------------- 308| xx | 309---------------------------------------------------------------------------- 310| xx-59 | don't care 311---------------------------------------------------------------------------- 312| 60 | packet sequence number 313---------------------------------------------------------------------------- 314| 61-63 | don't care 315---------------------------------------------------------------------------- 316 317*/