drv_ci.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. #ifndef __DRV_CI_H__
  2. #define __DRV_CI_H__
  3. #include <drv_types.h>
  4. #include <linux/ioctl.h>
  5. #include <linux/types.h>
  6. #define CIDRV_DEVNAME "/dev/ci0" /* Driver Device Name */
  7. #define CIDRV_CISLEN 0x90 /* CIS size in bytes */
  8. /* Signal number for DRV_TSIGNAL command */
  9. #define CI_CARD_DETECT 1
  10. #define CI_READY_BUSY 2
  11. /* Signal number for DRV_SSIGNAL command */
  12. #define CI_EMSTREAM 0
  13. #define CI_ENSLOT 1
  14. #define CI_RSTSLOT 2
  15. #define CI_IOMEM 6
  16. #define CI_SLOTSEL 7
  17. typedef struct
  18. {
  19. UINT16 addr; /* address to read/write */
  20. UINT16 len; /* number of bytes to read/write */
  21. UINT8 *pbytes; /* pointer to bytes to read/write */
  22. UINT16 rlen; /* number of bytes actually read/write */
  23. } CIDRV_stMem; /* structure for DRV_READMEM and DRV_WRITEMEM commands */
  24. typedef struct
  25. {
  26. UINT16 registr; /* register addresse to read/write */
  27. UINT8 *pvalue; /* pointer to the value to read/write */
  28. } CIDRV_stIO; /* structure for DRV_READIO and DRV_WRITEIO commands */
  29. typedef struct
  30. {
  31. UINT8 sig; /* signal number */
  32. UINT8 value;
  33. #define STATE_CAM_REMOVE 0
  34. #define STATE_CAM_INSERT 1
  35. #define STATE_CAM_ERROR 2
  36. } CIDRV_stSignal; /* structure for DRV_TSIGNAL command */
  37. typedef struct
  38. {
  39. UINT8 pin; /* pin code */
  40. UINT8 cs; /* value(1 : Set ; 0 clear) */
  41. } CIDRV_ssSignal; /* structure for DRV_SSIGNAL command */
  42. typedef struct
  43. {
  44. UINT8 cipher_type; /* 0:DES, 1:AES */
  45. UINT8 key_reg; /* 0:even, 1:odd */
  46. UINT8 *civ; /* civ addr, 16 bytes */
  47. UINT8 *cck; /* cck addr, 16 bytes */
  48. } CIDRV_stKey; /* structure for CIDRV_NOTIFYKEY */
  49. typedef struct
  50. {
  51. UINT16 len; /* number of bytes to read/write */
  52. UINT8 *pbytes; /* pointer to bytes to read/write */
  53. } CIDRV_stNvm; /* structure for CIDRV_READNVM and CIDRV_WRITENVM */
  54. typedef struct
  55. {
  56. UINT16 len;
  57. #define CIPLUS_KEY_HEADER_SIZE (4)
  58. #define CIPLUS_KEY_DATA_SIZE (0x2800)
  59. #define CIPLUS_RESERVED01_SIZE (0x30)
  60. #define CIPLUS_RND_SEED_SIZE (0x10)
  61. #define CIPLUS_RESERVED02_SIZE (0x10)
  62. #define CIPLUS_LCONST_DATA_SIZE (CIPLUS_KEY_DATA_SIZE - CIPLUS_RND_SEED_SIZE - CIPLUS_RESERVED01_SIZE - CIPLUS_RESERVED02_SIZE)
  63. UINT8 *pbytes;
  64. } CIDRV_htKey;
  65. #if 1//ci+_14
  66. typedef struct
  67. {
  68. UINT8 version;
  69. UINT8 aps;
  70. UINT8 emi;
  71. UINT8 ict;
  72. UINT8 rct;
  73. UINT8 dot;
  74. UINT16 rl;
  75. UINT8 trk;
  76. } CIDRV_applyuri;
  77. #else
  78. typedef struct
  79. {
  80. UINT8 version;
  81. UINT8 aps;
  82. UINT8 emi;
  83. UINT8 ict;
  84. UINT8 rct;
  85. UINT8 rl;
  86. } CIDRV_applyuri;
  87. #endif
  88. typedef enum
  89. {
  90. CIIOC_IDX_READMEM,
  91. CIIOC_IDX_WRITEMEM,
  92. CIIOC_IDX_READIO,
  93. CIIOC_IDX_WRITEIO,
  94. CIIOC_IDX_TSIGNAL,
  95. CIIOC_IDX_SSIGNAL,
  96. CIIOC_IDX_NOTIFYKEY,
  97. CIIOC_IDX_GETHOSTKEY,
  98. CIIOC_IDX_APPLYURI,
  99. CIIOC_IDX_CIRESET,
  100. CIIOC_IDX_CAMHWRESET,
  101. CIIOC_IDX_NOTIFYEMI,
  102. CIIOC_IDX_SERVICE_TYPE,
  103. CIIOC_IDX_BRIDGE_HWRESET_BIT,
  104. CIIOC_IDX_MAX,
  105. } CIIOC_IDX_ENUM;
  106. #define CIDRV_MAGIC 'a'
  107. #define CIDRV_READMEM _IOWR(CIDRV_MAGIC,CIIOC_IDX_READMEM,CIDRV_stMem)
  108. #define CIDRV_WRITEMEM _IOWR(CIDRV_MAGIC,CIIOC_IDX_WRITEMEM,CIDRV_stMem)
  109. #define CIDRV_READIO _IOWR(CIDRV_MAGIC,CIIOC_IDX_READIO,CIDRV_stIO)
  110. #define CIDRV_WRITEIO _IOW(CIDRV_MAGIC,CIIOC_IDX_WRITEIO,CIDRV_stIO)
  111. #define CIDRV_TSIGNAL _IOWR(CIDRV_MAGIC,CIIOC_IDX_TSIGNAL,CIDRV_stSignal)
  112. #define CIDRV_SSIGNAL _IOW(CIDRV_MAGIC,CIIOC_IDX_SSIGNAL,CIDRV_ssSignal)
  113. #define CIDRV_NOTIFYKEY _IOW(CIDRV_MAGIC,CIIOC_IDX_NOTIFYKEY,CIDRV_stKey)
  114. #define CIDRV_GETHOSTKEY _IOR(CIDRV_MAGIC,CIIOC_IDX_GETHOSTKEY,CIDRV_htKey)
  115. #define CIDRV_APPLYURI _IOWR(CIDRV_MAGIC,CIIOC_IDX_APPLYURI,CIDRV_applyuri)
  116. #define CIDRV_CIRESET _IO(CIDRV_MAGIC,CIIOC_IDX_CIRESET)
  117. #define CIDRV_CAMHWRESET _IO(CIDRV_MAGIC,CIIOC_IDX_CAMHWRESET)
  118. #define CIDRV_NOTIFYEMI _IOWR(CIDRV_MAGIC,CIIOC_IDX_NOTIFYEMI,CIDRV_applyuri)
  119. #define CIDRV_NOTIFYSERVICETYPE _IOW(CIDRV_MAGIC,CIIOC_IDX_SERVICE_TYPE,UINT8)
  120. #define CIDRV_BRIDGE_HWRESET_BIT _IOW(CIDRV_MAGIC,CIIOC_IDX_BRIDGE_HWRESET_BIT,UINT8)
  121. #endif /* __DRV_CI_H__ */