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

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 
  28 enum 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 
  41 struct 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 
  83 Transaction flow:
  84 =================
  85 BULK[00001] >>> REQUEST PACKET 64 bytes
  86 BULK[00081] <<< REPLY PACKET #1 64 bytes (PREVIOUS TRANSACTION REPLY)
  87 BULK[00081] <<< REPLY PACKET #2 64 bytes (CURRENT TRANSACTION REPLY)
  88 
  89 General 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 */

/* [<][>][^][v][top][bottom][index][help] */