#ifndef __DRV_CI_H__ #define __DRV_CI_H__ #include #include #include #define CIDRV_DEVNAME "/dev/ci0" /* Driver Device Name */ #define CIDRV_CISLEN 0x90 /* CIS size in bytes */ /* Signal number for DRV_TSIGNAL command */ #define CI_CARD_DETECT 1 #define CI_READY_BUSY 2 /* Signal number for DRV_SSIGNAL command */ #define CI_EMSTREAM 0 #define CI_ENSLOT 1 #define CI_RSTSLOT 2 #define CI_IOMEM 6 #define CI_SLOTSEL 7 typedef struct { UINT16 addr; /* address to read/write */ UINT16 len; /* number of bytes to read/write */ UINT8 *pbytes; /* pointer to bytes to read/write */ UINT16 rlen; /* number of bytes actually read/write */ } CIDRV_stMem; /* structure for DRV_READMEM and DRV_WRITEMEM commands */ typedef struct { UINT16 registr; /* register addresse to read/write */ UINT8 *pvalue; /* pointer to the value to read/write */ } CIDRV_stIO; /* structure for DRV_READIO and DRV_WRITEIO commands */ typedef struct { UINT8 sig; /* signal number */ UINT8 value; #define STATE_CAM_REMOVE 0 #define STATE_CAM_INSERT 1 #define STATE_CAM_ERROR 2 } CIDRV_stSignal; /* structure for DRV_TSIGNAL command */ typedef struct { UINT8 pin; /* pin code */ UINT8 cs; /* value(1 : Set ; 0 clear) */ } CIDRV_ssSignal; /* structure for DRV_SSIGNAL command */ typedef struct { UINT8 cipher_type; /* 0:DES, 1:AES */ UINT8 key_reg; /* 0:even, 1:odd */ UINT8 *civ; /* civ addr, 16 bytes */ UINT8 *cck; /* cck addr, 16 bytes */ } CIDRV_stKey; /* structure for CIDRV_NOTIFYKEY */ typedef struct { UINT16 len; /* number of bytes to read/write */ UINT8 *pbytes; /* pointer to bytes to read/write */ } CIDRV_stNvm; /* structure for CIDRV_READNVM and CIDRV_WRITENVM */ typedef struct { UINT16 len; #define CIPLUS_KEY_HEADER_SIZE (4) #define CIPLUS_KEY_DATA_SIZE (0x2800) #define CIPLUS_RESERVED01_SIZE (0x30) #define CIPLUS_RND_SEED_SIZE (0x10) #define CIPLUS_RESERVED02_SIZE (0x10) #define CIPLUS_LCONST_DATA_SIZE (CIPLUS_KEY_DATA_SIZE - CIPLUS_RND_SEED_SIZE - CIPLUS_RESERVED01_SIZE - CIPLUS_RESERVED02_SIZE) UINT8 *pbytes; } CIDRV_htKey; #if 1//ci+_14 typedef struct { UINT8 version; UINT8 aps; UINT8 emi; UINT8 ict; UINT8 rct; UINT8 dot; UINT16 rl; UINT8 trk; } CIDRV_applyuri; #else typedef struct { UINT8 version; UINT8 aps; UINT8 emi; UINT8 ict; UINT8 rct; UINT8 rl; } CIDRV_applyuri; #endif typedef enum { CIIOC_IDX_READMEM, CIIOC_IDX_WRITEMEM, CIIOC_IDX_READIO, CIIOC_IDX_WRITEIO, CIIOC_IDX_TSIGNAL, CIIOC_IDX_SSIGNAL, CIIOC_IDX_NOTIFYKEY, CIIOC_IDX_GETHOSTKEY, CIIOC_IDX_APPLYURI, CIIOC_IDX_CIRESET, CIIOC_IDX_CAMHWRESET, CIIOC_IDX_NOTIFYEMI, CIIOC_IDX_SERVICE_TYPE, CIIOC_IDX_BRIDGE_HWRESET_BIT, CIIOC_IDX_MAX, } CIIOC_IDX_ENUM; #define CIDRV_MAGIC 'a' #define CIDRV_READMEM _IOWR(CIDRV_MAGIC,CIIOC_IDX_READMEM,CIDRV_stMem) #define CIDRV_WRITEMEM _IOWR(CIDRV_MAGIC,CIIOC_IDX_WRITEMEM,CIDRV_stMem) #define CIDRV_READIO _IOWR(CIDRV_MAGIC,CIIOC_IDX_READIO,CIDRV_stIO) #define CIDRV_WRITEIO _IOW(CIDRV_MAGIC,CIIOC_IDX_WRITEIO,CIDRV_stIO) #define CIDRV_TSIGNAL _IOWR(CIDRV_MAGIC,CIIOC_IDX_TSIGNAL,CIDRV_stSignal) #define CIDRV_SSIGNAL _IOW(CIDRV_MAGIC,CIIOC_IDX_SSIGNAL,CIDRV_ssSignal) #define CIDRV_NOTIFYKEY _IOW(CIDRV_MAGIC,CIIOC_IDX_NOTIFYKEY,CIDRV_stKey) #define CIDRV_GETHOSTKEY _IOR(CIDRV_MAGIC,CIIOC_IDX_GETHOSTKEY,CIDRV_htKey) #define CIDRV_APPLYURI _IOWR(CIDRV_MAGIC,CIIOC_IDX_APPLYURI,CIDRV_applyuri) #define CIDRV_CIRESET _IO(CIDRV_MAGIC,CIIOC_IDX_CIRESET) #define CIDRV_CAMHWRESET _IO(CIDRV_MAGIC,CIIOC_IDX_CAMHWRESET) #define CIDRV_NOTIFYEMI _IOWR(CIDRV_MAGIC,CIIOC_IDX_NOTIFYEMI,CIDRV_applyuri) #define CIDRV_NOTIFYSERVICETYPE _IOW(CIDRV_MAGIC,CIIOC_IDX_SERVICE_TYPE,UINT8) #define CIDRV_BRIDGE_HWRESET_BIT _IOW(CIDRV_MAGIC,CIIOC_IDX_BRIDGE_HWRESET_BIT,UINT8) #endif /* __DRV_CI_H__ */