mb86940.h
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:11k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* mb86940.h - Fujitsu SPARClite companion chip */
  2. /* Copyright 1984-1991 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01e,22sep92,rrr  added support for c++
  7. 01d,27aug92,ccc  added tyCo function prototypes.
  8. 01c,16jun92,jwt  passed through the ansification filter
  9.   -changed copyright notice
  10. 01b,25jan92,ccc  added Timer and Serial definitions.
  11. 01a,20jan92,jwt  created Interrupt Request Controller (IRC) definitions.
  12. */
  13. /*
  14. This file contains constants for the Fujitsu mb86940 companion chip.
  15. The constants SPARCLITE_CCS_OFFSET and SPARCLITE_CCS_BASE must defined when
  16. including this header file.
  17. */
  18. #ifndef __INCmb86940h
  19. #define __INCmb86940h
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23. #define SLCCS_ADDR(reg) (SPARCLITE_CCS_BASE + (reg * SPARCLITE_CCS_OFFSET))
  24. /* SPARClite Companion Chip (MB86940) Interrupt Request Controller (IRC) */
  25. #define IRC_TRIGGER0_ADDR       SLCCS_ADDR (0x00)      /* Trigger Mode 0 */
  26. #define IRC_TRIGGER1_ADDR       SLCCS_ADDR (0x01)      /* Trigger Mode 1 */
  27. #define IRC_REQ_SENSE_ADDR      SLCCS_ADDR (0x02)      /* Request Sense */
  28. #define IRC_REQ_CLEAR_ADDR      SLCCS_ADDR (0x03)      /* Request Clear */
  29. #define IRC_MASK_ADDR           SLCCS_ADDR (0x04)      /* Interrupt Masks */
  30. #define IRC_REQUEST_LEVEL_ADDR  SLCCS_ADDR (0x05)      /* IRL Latch / Clear */
  31. /* SPARClite Companion Chip (MB86940) Serial Data Transmitter and Receiver */
  32. #define SDTR0_DATA_ADDR         SLCCS_ADDR (0x08)
  33. #define SDTR0_CSR_ADDR          SLCCS_ADDR (0x09)
  34. #define SDTR1_DATA_ADDR         SLCCS_ADDR (0x0c)
  35. #define SDTR1_CSR_ADDR          SLCCS_ADDR (0x0d)
  36. /* SPARClite Companion Chip (MB86940) Timers */
  37. #define TIMER0_PRESCALE_ADDR SLCCS_ADDR (0x10)
  38. #define TIMER0_CONTROL_ADDR SLCCS_ADDR (0x11)
  39. #define TIMER0_RELOAD_ADDR SLCCS_ADDR (0x12)
  40. #define TIMER0_COUNT_ADDR SLCCS_ADDR (0x13)
  41. #define TIMER1_PRESCALE_ADDR SLCCS_ADDR (0x14)
  42. #define TIMER1_CONTROL_ADDR SLCCS_ADDR (0x15)
  43. #define TIMER1_RELOAD_ADDR SLCCS_ADDR (0x16)
  44. #define TIMER1_COUNT_ADDR SLCCS_ADDR (0x17)
  45. #define TIMER2_CONTROL_ADDR SLCCS_ADDR (0x19)
  46. #define TIMER2_RELOAD_ADDR SLCCS_ADDR (0x1a)
  47. #define TIMER2_COUNT_ADDR SLCCS_ADDR (0x1b)
  48. #define TIMER3_CONTROL_ADDR SLCCS_ADDR (0x1d)
  49. #define TIMER3_RELOAD_ADDR SLCCS_ADDR (0x1e)
  50. #define TIMER3_COUNT_ADDR SLCCS_ADDR (0x1f)
  51. /* Trigger Mode Register Masks */
  52. #define IRC_TRIGGER_HIGH 0 /* Active HIGH Trigger */
  53. #define IRC_TRIGGER_LOW 1 /* Active LOW Trigger */
  54. #define IRC_TRIGGER_RISING 2 /* Rising Edge Trigger */
  55. #define IRC_TRIGGER_FALLING 3 /* Falling Edge Trigger */
  56. #define IRC_TRIGGER_CH15_MASK 0xC000 /* Interrupt Level 15 */
  57. #define IRC_TRIGGER_CH14_MASK 0x3000 /* Interrupt Level 14 */
  58. #define IRC_TRIGGER_CH13_MASK 0x0C00 /* Interrupt Level 13 */
  59. #define IRC_TRIGGER_CH12_MASK 0x0300 /* Interrupt Level 12 */
  60. #define IRC_TRIGGER_CH11_MASK 0x00C0 /* Interrupt Level 11 */
  61. #define IRC_TRIGGER_CH10_MASK 0x0030 /* Interrupt Level 10 */
  62. #define IRC_TRIGGER_CH9_MASK 0x000C /* Interrupt Level 9 */
  63. #define IRC_TRIGGER_CH8_MASK 0x0003 /* Interrupt Level 8 */
  64. #define IRC_TRIGGER_CH7_MASK 0xC000 /* Interrupt Level 7 */
  65. #define IRC_TRIGGER_CH6_MASK 0x3000 /* Interrupt Level 6 */
  66. #define IRC_TRIGGER_CH5_MASK 0x0C00 /* Interrupt Level 5 */
  67. #define IRC_TRIGGER_CH4_MASK 0x0300 /* Interrupt Level 4 */
  68. #define IRC_TRIGGER_CH3_MASK 0x00C0 /* Interrupt Level 3 */
  69. #define IRC_TRIGGER_CH2_MASK 0x0030 /* Interrupt Level 2 */
  70. #define IRC_TRIGGER_CH1_MASK 0x000C /* Interrupt Level 1 */
  71. /* Request Sense / Clear Level Masks */
  72. #define IRC_REQUEST_LEVEL_15 0x8000 /* Interrupt Level 15 */
  73. #define IRC_REQUEST_LEVEL_14 0x4000 /* Interrupt Level 14 */
  74. #define IRC_REQUEST_LEVEL_13 0x2000 /* Interrupt Level 13 */
  75. #define IRC_REQUEST_LEVEL_12 0x1000 /* Interrupt Level 12 */
  76. #define IRC_REQUEST_LEVEL_11 0x0800 /* Interrupt Level 11 */
  77. #define IRC_REQUEST_LEVEL_10 0x0400 /* Interrupt Level 10 */
  78. #define IRC_REQUEST_LEVEL_9 0x0200 /* Interrupt Level 9 */
  79. #define IRC_REQUEST_LEVEL_8 0x0100 /* Interrupt Level 8 */
  80. #define IRC_REQUEST_LEVEL_7 0x0080 /* Interrupt Level 7 */
  81. #define IRC_REQUEST_LEVEL_6 0x0040 /* Interrupt Level 6 */
  82. #define IRC_REQUEST_LEVEL_5 0x0020 /* Interrupt Level 5 */
  83. #define IRC_REQUEST_LEVEL_4 0x0010 /* Interrupt Level 4 */
  84. #define IRC_REQUEST_LEVEL_3 0x0008 /* Interrupt Level 3 */
  85. #define IRC_REQUEST_LEVEL_2 0x0004 /* Interrupt Level 2 */
  86. #define IRC_REQUEST_LEVEL_1 0x0002 /* Interrupt Level 1 */
  87. #define IRC_REQUEST_LEVEL 0x0001 /* Interrupt Level Mask */
  88. /* IRL Latch / IRL Clear Register */
  89. #define IRC_LATCH_CLEAR_BIT 0x0010 /* Latch Clear Bit */
  90. #define IRC_LATCH_CLEAR_LEVEL 0x000F /* Interrupt Level Mask */
  91. /* Miscellaneous Interrupt Definitions */
  92. #define TIMER1_IACK_ADDR TIMER1_COUNT_ADDR
  93. #define TIMER2_IACK_ADDR TIMER2_COUNT_ADDR
  94. /* Timer bit definitions */
  95. #define TIMER_PRESCALE_INTERNAL 0x0000 /* Internal Clock is Used */
  96. #define TIMER_PRESCALE_EXTERNAL 0x8000 /* External Clock is Used */
  97. #define TIMER_PRESCALE_SELECT0 0x0000 /* First Output   */
  98. #define TIMER_PRESCALE_SELECT1 0x0100 /* Second Output  */
  99. #define TIMER_PRESCALE_SELECT2 0x0200 /* Third Output   */
  100. #define TIMER_PRESCALE_SELECT3 0x0300 /* Fourth Output  */
  101. #define TIMER_PRESCALE_SELECT4 0x0400 /* Fifth Output   */
  102. #define TIMER_PRESCALE_SELECT5 0x0500 /* Sixth Output   */
  103. #define TIMER_PRESCALE_SELECT6 0x0600 /* Seventh Output */
  104. #define TIMER_PRESCALE_SELECT7 0x0700 /* Eighth Output  */
  105. #define TIMER_CONT_OUT_LOW 0x0000 /* Out pin LOW    */
  106. #define TIMER_CONT_OUT_HIGH 0x8000 /* Out pin HIGH   */
  107. #define TIMER_CONT_IN 0x4000 /* In pin mask    */
  108. #define TIMER_CONT_COUNT_EN 0x0800 /* Enable Count   */
  109. #define TIMER_CONT_INTERNAL 0x0000 /* Internal Clock */
  110. #define TIMER_CONT_EXTERNAL 0x0200 /* External Clock */
  111. #define TIMER_CONT_PRESCALE 0x0400 /* Prescaler Output Clock */
  112. #define TIMER_CONT_INHIBIT 0x0600 /* Inhibit */
  113. #define TIMER_CONT_OUT_SAME 0x0000 /* Out pin remains same     */
  114. #define TIMER_CONT_OUT_SET 0x0080 /* Out pin set w/mode set   */
  115. #define TIMER_CONT_OUT_RESET 0x0100 /* Out pin reset w/mode set */
  116. #define TIMER_CONT_OUT_INHIBIT 0x0180 /* Inhibit Out pin          */
  117. #define TIMER_CONT_OUT_NORMAL 0x0000 /* Out noninverted     */
  118. #define TIMER_CONT_OUT_INVERT 0x0040 /* Out inverted     */
  119. #define TIMER_CONT_MODE0 0x0000 /* Mode0:Periodic int mode   */
  120. #define TIMER_CONT_MODE1 0x0008 /* Mode1:Time-out int mode   */
  121. #define TIMER_CONT_MODE2 0x0010 /* Mode2:Sqr wave gen mode   */
  122. #define TIMER_CONT_MODE3 0x0018 /* Mode3:CPU WD/One-shot     */
  123. #define TIMER_CONT_MODE4 0x0020 /* Mode4:Ext Dev WD/One-shot */
  124. #define TIMER_CONT_IN_LOW 0x0000 /* IN pin: Low Level    */
  125. #define TIMER_CONT_IN_HIGH 0x0001 /* IN pin: High Level */
  126. #define TIMER_CONT_IN_RISING 0x0002 /* IN pin: Rising Edge */
  127. #define TIMER_CONT_IN_FALLING 0x0003 /* IN pin: Falling Edge */
  128. #define TIMER_CONT_IN_BOTH 0x0004 /* IN pin: Both Edges */
  129. /* SERIAL DATA TRANSMITTER and RECEIVER bit definitions */
  130. /* Mode Register - Asynchronous mode */
  131. #define FCC_SDTR_1_BIT          0x40            /* 1 stop bit   */
  132. #define FCC_SDTR_1_5BITS        0x80            /* 1.5 stop bits   */
  133. #define FCC_SDTR_2_BITS         0xc0            /* 2 stop bits   */
  134. #define FCC_SDTR_ODD            0x00            /* Odd parity   */
  135. #define FCC_SDTR_EVEN           0x20            /* Even parity   */
  136. #define FCC_SDTR_NOPARITY       0x00            /* Disable Parity   */
  137. #define FCC_SDTR_PARITY         0x10            /* Enable Parity   */
  138. #define FCC_SDTR_5BITS          0x00            /* 5 data bits   */
  139. #define FCC_SDTR_6BITS          0x04            /* 6 data bits   */
  140. #define FCC_SDTR_7BITS          0x08            /* 7 data bits   */
  141. #define FCC_SDTR_8BITS          0x0c            /* 8 data bits   */
  142. #define FCC_SDTR_SYNC           0x00            /* Synchronous mode   */
  143. #define FCC_SDTR_1XCLK          0x01            /* Trans/Rec Clock x1   */
  144. #define FCC_SDTR_1_16XCLK       0x02            /* Trans/Rec Clock x1/16 */
  145. #define FCC_SDTR_1_64XCLK       0x03            /* Trans/Rec Clock x1/64 */
  146. /* Command Register */
  147. #define FCC_SDTR_EHM            0x80            /* Executes enter hunt mode */
  148. #define FCC_SDTR_RESET          0x40            /* Executes reset      */
  149. #define FCC_SDTR_RTS_HIGH       0x00            /* RTS output High level    */
  150. #define FCC_SDTR_RTS_LOW        0x20            /* RTS output Low level     */
  151. #define FCC_SDTR_EFR            0x10            /* Resets all error flags   */
  152. #define FCC_SDTR_BREAK          0x08            /* TRNDT pin outputs Low    */
  153. #define FCC_SDTR_REC_DISABLE    0x00            /* Receive disable      */
  154. #define FCC_SDTR_REC_ENABLE     0x04            /* Receive enable      */
  155. #define FCC_SDTR_DTR_HIGH       0x00            /* DTR output High level    */
  156. #define FCC_SDTR_DTR_LOW        0x02            /* DTR output Low level     */
  157. #define FCC_SDTR_TRN_DISABLE    0x00            /* Transmit disabled      */
  158. #define FCC_SDTR_TRN_ENABLE     0x01            /* Transmit enabled      */
  159. #define FCC_TX_START            FCC_SDTR_RTS_LOW  | 
  160. FCC_SDTR_EFR | 
  161.                                 FCC_SDTR_REC_ENABLE  | 
  162.                                 FCC_SDTR_DTR_LOW  | 
  163.                                 FCC_SDTR_TRN_ENABLE
  164. /* Status Register */
  165. #define FCC_SDTR_STAT_DSR       0x80            /* DSR status mask      */
  166. #define FCC_SDTR_STAT_SYBRK     0x40            /* Syc ch(sync)/Break(async) */
  167. #define FCC_SDTR_STAT_FERR      0x20            /* Framing error mask      */
  168. #define FCC_SDTR_STAT_ORUN      0x10            /* Overrun error mask      */
  169. #define FCC_SDTR_STAT_PERR      0x08            /* Parity error mask      */
  170. #define FCC_SDTR_STAT_TEMP      0x04            /* Trans buff/shft reg stat  */
  171. #define FCC_SDTR_STAT_RRDY      0x02            /* Receive buffer status     */
  172. #define FCC_SDTR_STAT_TRDY      0x01            /* Transmit buffer status    */
  173. #ifndef _ASMLANGUAGE
  174. #include "tyLib.h"
  175. /* serial device descriptor */
  176. typedef struct /* TY_CO_DEV */
  177.     {
  178.     TY_DEV tyDev;
  179.     BOOL created; /* TRUE if device has already been created */
  180.     volatile int *cp; /* control port I/O address */
  181.     volatile int *dp; /* data port I/O address */
  182.     char numChannels; /* number of channels to support */
  183.     } TY_CO_DEV;
  184. /* function declarations */
  185. #if defined(__STDC__) || defined(__cplusplus)
  186. IMPORT void tyCoIntTx (int channel);
  187. IMPORT void tyCoIntRx (int channel);
  188. IMPORT UINT sysAsiGet (void * address);
  189. IMPORT void sysAsiSet (void * address, UINT word);
  190. IMPORT UINT sys940AsiGeth (void * address);
  191. IMPORT void sys940AsiSeth (void * address, UINT word);
  192. IMPORT STATUS sysBaudSet (int baudRate);
  193. #else /* __STDC__ */
  194. IMPORT void tyCoIntTx ();
  195. IMPORT void tyCoIntRx ();
  196. IMPORT UINT sysAsiGet ();
  197. IMPORT void sysAsiSet ();
  198. IMPORT UINT sys940AsiGeth ();
  199. IMPORT void sys940AsiSeth ();
  200. IMPORT STATUS sysBaudSet ();
  201. #endif /* __STDC__ */
  202. #endif /* _ASMLANGUAGE */
  203. #ifdef __cplusplus
  204. }
  205. #endif
  206. #endif /* __INCmb86940h */