divas.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:6k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * External Diva Server driver include file
  3.  *
  4.  * Copyright (C) Eicon Technology Corporation, 2000.
  5.  *
  6.  * Eicon File Revision :    1.5  
  7.  *
  8.  * This software may be used and distributed according to the terms
  9.  * of the GNU General Public License, incorporated herein by reference.
  10.  *
  11.  */
  12. #if !defined(DIVAS_H)
  13. #define DIVAS_H
  14. #include "sys.h"
  15. /* IOCTL commands */
  16. #define DIA_IOCTL_INIT (0)
  17. #define DIA_IOCTL_LOAD (1)
  18. #define DIA_IOCTL_CONFIG (2)
  19. #define DIA_IOCTL_START (3)
  20. #define DIA_IOCTL_GET_NUM (4)
  21. #define DIA_IOCTL_GET_LIST (5)
  22. #define DIA_IOCTL_LOG (6)
  23. #define DIA_IOCTL_DETECT (7)
  24. #define DIA_IOCTL_SPACE (8)
  25. #define DIA_IOCTL_GET_MEM           (9)
  26. #define DIA_IOCTL_FLAVOUR (10)
  27. #define DIA_IOCTL_XLOG_REQ (11)
  28. /* Error codes */
  29. #define XLOG_ERR_CARD_NUM (13)
  30. #define XLOG_ERR_DONE (14)
  31. #define XLOG_ERR_CMD (15)
  32. #define XLOG_ERR_TIMEOUT (16)
  33. #define XLOG_ERR_CARD_STATE (17)
  34. #define XLOG_ERR_UNKNOWN (18)
  35. #define XLOG_OK  (0)
  36. /* Adapter states */
  37. #define DIA_UNKNOWN (0)
  38. #define DIA_RESET (1)
  39. #define DIA_LOADED (2)
  40. #define DIA_CONFIGURED (3)
  41. #define DIA_RUNNING (4)
  42. /* Stucture for getting card specific information from active cad driver */
  43. typedef struct
  44. {
  45. int card_type;
  46. int card_slot;
  47. int state;
  48. } dia_card_list_t;
  49. /* use following to select which logging to have active */
  50. #define DIVAS_LOG_DEBUG (1 << 0)
  51. #define DIVAS_LOG_XLOG (1 << 1)
  52. #define DIVAS_LOG_IDI (1 << 2)
  53. #define DIVAS_LOG_CAPI (1 << 3)
  54. /* stucture for DIA_IOCTL_LOG to get information from adapter */
  55. typedef struct
  56. {
  57. int card_id;
  58. int log_types; /* bit mask of log types: use DIVAS_LOG_XXX */
  59. } dia_log_t;
  60. /* list of cards supported by this driver */
  61. #define DIA_CARD_TYPE_DIVA_SERVER (0) /* Diva Server PRI */
  62. #define DIA_CARD_TYPE_DIVA_SERVER_B (1) /* Diva Server BRI */
  63. #define DIA_CARD_TYPE_DIVA_SERVER_Q (2) /* Diva Server 4-BRI */
  64. /* bus types */
  65. #define DIA_BUS_TYPE_ISA (0)
  66. #define DIA_BUS_TYPE_ISA_PNP (1)
  67. #define DIA_BUS_TYPE_PCI (2)
  68. #define DIA_BUS_TYPE_MCA (3)
  69. /* types of memory used (index for memory array below) */
  70. #define DIVAS_RAM_MEMORY  0
  71. #define DIVAS_REG_MEMORY  1
  72. #define DIVAS_CFG_MEMORY  2
  73. #define DIVAS_SHARED_MEMORY 3
  74. #define DIVAS_CTL_MEMORY 4
  75. /*
  76.  * card config information
  77.  * passed as parameter to DIA_IOCTL_INIT ioctl to initialise new card
  78.  */
  79. typedef struct
  80. {
  81. int card_id; /* unique id assigned to this card */
  82. int card_type; /* use DIA_CARD_TYPE_xxx above */
  83. int bus_type; /* use DIA_BUS_TYPE_xxx above */
  84. int bus_num; /* bus number (instance number of bus type) */
  85. int func_num; /* adapter function number (PCI register) */
  86. int slot; /* slot number in bus */
  87. unsigned char irq; /* IRQ number */
  88.     int     reset_base; /* Reset register  for I/O mapped cards */
  89. int io_base; /* I/O base for I/O mapped cards */
  90. void *memory[5]; /* memory base addresses for memory mapped cards */
  91. char name[9]; /* name of adapter */
  92. int serial; /* serial number */
  93. unsigned char int_priority; /* Interrupt priority */
  94. } dia_card_t;
  95. /*
  96.  * protocol configuration information
  97.  * passed as parameter to DIA_IOCTL_CONFIG ioctl to configure card
  98.  */
  99. typedef struct
  100. {
  101. int card_id; /* to identify particular card */
  102. unsigned char tei;
  103. unsigned char nt2;
  104. unsigned char watchdog;
  105. unsigned char permanent;
  106. unsigned char x_interface;
  107. unsigned char stable_l2;
  108. unsigned char no_order_check;
  109. unsigned char handset_type;
  110. unsigned char sig_flags;
  111. unsigned char low_channel;
  112. unsigned char prot_version;
  113. unsigned char crc4;
  114. struct
  115. {
  116. unsigned char oad[32];
  117. unsigned char osa[32];
  118. unsigned char spid[32];
  119. }terminal[2];
  120. } dia_config_t;
  121. /*
  122.  * code configuration 
  123.  * passed as parameter to DIA_IOCTL_LOAD ioctl
  124.  * one of these ioctl per code file to load
  125.  */
  126. typedef struct
  127. {
  128. int card_id; /* card to load */
  129. enum
  130. {
  131. DIA_CPU_CODE, /* CPU code */
  132. DIA_DSP_CODE, /* DSP code */
  133. DIA_CONT_CODE, /* continuation of code */
  134. DIA_TABLE_CODE, /* code table */
  135.         DIA_DLOAD_CNT,           /* number of downloads*/
  136. DIA_FPGA_CODE
  137. } code_type; /* code for CPU or DSP ? */
  138. int length; /* length of code */
  139. unsigned char *code; /* pointer (in user-space) to code */
  140. } dia_load_t;
  141. /*
  142.  * start configuration 
  143.  * passed as parameter to DIA_IOCTL_START ioctl
  144.  */
  145. typedef struct
  146. {
  147. int card_id; /* card to start */
  148. } dia_start_t;
  149. /* used for retrieving memory from the card */
  150. typedef struct {
  151. word card_id;
  152. dword  addr;
  153. byte data[16 * 8];
  154. } mem_block_t;
  155. /* DIVA Server specific addresses */
  156. #define DIVAS_CPU_START_ADDR    (0x0)
  157. #define ORG_MAX_PROTOCOL_CODE_SIZE 0x000A0000
  158. #define ORG_MAX_DSP_CODE_SIZE (0x000F0000 - ORG_MAX_PROTOCOL_CODE_SIZE)
  159. #define ORG_DSP_CODE_BASE (0xBF7F0000 - ORG_MAX_DSP_CODE_SIZE)
  160. #define DIVAS_DSP_START_ADDR    (0xBF7A0000)
  161. #define DIVAS_SHARED_OFFSET     (0x1000)
  162. #define MP_DSP_CODE_BASE           0xa03a0000
  163. #define MQ_PROTCODE_OFFSET  0x100000
  164. #define MQ_SM_OFFSET 0X0f0000
  165. #define V90D_MAX_PROTOCOL_CODE_SIZE 0x00090000
  166. #define V90D_MAX_DSP_CODE_SIZE (0x000F0000 - V90D_MAX_PROTOCOL_CODE_SIZE)
  167. #define V90D_DSP_CODE_BASE (0xBF7F0000 - V90D_MAX_DSP_CODE_SIZE)
  168. #define MQ_ORG_MAX_PROTOCOL_CODE_SIZE   0x000a0000  /* max 640K Protocol-Code */
  169. #define MQ_ORG_MAX_DSP_CODE_SIZE        0x00050000  /* max 320K DSP-Code */
  170. #define MQ_ORG_DSP_CODE_BASE           (MQ_MAX_DSP_DOWNLOAD_ADDR 
  171.                                       - MQ_ORG_MAX_DSP_CODE_SIZE)
  172. #define MQ_V90D_MAX_PROTOCOL_CODE_SIZE  0x00090000  /* max 576K Protocol-Code */
  173. #define MQ_V90D_MAX_DSP_CODE_SIZE       0x00060000  /* max 384K DSP-Code if V.90D included */
  174. #define MQ_MAX_DSP_DOWNLOAD_ADDR        0xa03f0000
  175. #define MQ_V90D_DSP_CODE_BASE          (MQ_MAX_DSP_DOWNLOAD_ADDR 
  176.                                       - MQ_V90D_MAX_DSP_CODE_SIZE)
  177. #define ALIGNMENT_MASK_MAESTRA        0xfffffffc
  178. #endif /* DIVAS_H */