i82510.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:7k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* i82510.h - Intel 82510 header file */
  2. /*
  3. modification history
  4. --------------------
  5. 01e,22sep92,rrr  added support for c++
  6. 01d,26may92,rrr  the tree shuffle
  7. 01c,28oct91,wmd  added Intel modifications.
  8. 01b,04oct91,rrr  passed through the ansification filter
  9.   -changed copyright notice
  10. 01a,20aug91,del  installed.
  11. */
  12. #ifndef __INCi82510h
  13. #define __INCi82510h
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. /******************************************************************/
  18. /*  Copyright (c) 1989, Intel Corporation
  19.    Intel hereby grants you permission to copy, modify, and
  20.    distribute this software and its documentation.  Intel grants
  21.    this permission provided that the above copyright notice appears
  22.    in all copies and that both the copyright notice and this
  23.    permission notice appear in supporting documentation.  In
  24.    addition, Intel grants this permission provided that you
  25.    prominently mark as not part of the original any modifications
  26.    made to this software or documentation, and that the name of
  27.    Intel Corporation not be used in advertising or publicity
  28.    pertaining to distribution of the software or the documentation
  29.    without specific, written prior permission.
  30.    Intel Corporation does not warrant, guarantee or make any
  31.    representations regarding the use of, or the results of the use
  32.    of, the software and documentation in terms of correctness,
  33.    accuracy, reliability, currentness, or otherwise; and you rely
  34.    on the software, documentation and results solely at your own
  35.    risk.   */
  36. /******************************************************************/
  37. /* #if 0 */
  38. typedef volatile struct
  39.     {
  40.     unsigned char data; /* TxD(write)/RxD(read) (BAL when LCR Bit 7 == 1) */
  41.     unsigned char ger; /* General Enable Register (BAH when LCR Bit 7 == 1) */
  42.     unsigned char gir; /* General Interrupt/Bank Register */
  43.     unsigned char lcr; /* Line Configure Register */
  44.     unsigned char mcr; /* Modem Control Register */
  45.     unsigned char lsr; /* Line Status Register */
  46.     unsigned char msr; /* Modem/I/O Pins Status Register */
  47.     unsigned char acr0; /* Address/Control Character Register 0 */
  48.     } I82510_REGS; /* 8250A Compatible Registers (NAS), BANK 0 */
  49. typedef volatile struct
  50.     {
  51.     unsigned char data; /* TxD(write)/RxD(read) */
  52.     unsigned char rxf; /* Received Char(read)/Transmit(write) Flags Register */
  53.     unsigned char gir; /* General Interrupt/Bank Register */
  54.     unsigned char tmst; /* Timer Status Register */
  55.     unsigned char flr; /* Fifo Level Register */
  56.     unsigned char rst; /* Receive Mach. Stat.(read)/Recieve Cmd(write) Reg */
  57.     unsigned char tcm; /* Same as msr(read)/Transmit Command(write) Register */
  58.     unsigned char gsr; /* General Status(read)/Internal Command(write) Reg */
  59.     } I82510_WORK; /* General Work, Bank 1 */
  60. typedef volatile struct
  61.     {
  62.     unsigned char dum; /* unused */
  63.     unsigned char fmd; /* Fifo Mode Register */
  64.     unsigned char gir; /* General Interrupt/Bank Register */
  65.     unsigned char tmd; /* Transmit Machine Mode Register */
  66.     unsigned char imd; /* Internal Mode Register */
  67.     unsigned char acr1; /* Address/Control Character Register 1 */
  68.     unsigned char rie; /* Receive Interrupt Enable Register */
  69.     unsigned char rmd; /* Receive Machine Mode Register */
  70.     } I82510_GENERAL; /* General Configuration, Bank 2 */
  71. typedef volatile struct
  72.     {
  73.     unsigned char clcf; /* Clocks Configure Register (BBL when LCR bit 7 == 1)*/
  74.     unsigned char bacf; /* Baud Rate Genrator A Configuration Register (BBH) */
  75.     unsigned char gir;  /* General Interrupt/Bank Register */
  76.     unsigned char bbcf; /* Baud Rate Genrator B Configuration Register */
  77.     unsigned char pmd;  /* I/O Pin Mode Register */
  78.     unsigned char mie;  /* Modem Interrupt Enable Register */
  79.     unsigned char tmie; /* Timers/Interrupt Enable Register */
  80.     unsigned char dum; /* unused */
  81.     } I82510_MODEM; /* Modem Configuration, Bank 3 */
  82. /*#endif*/
  83. /* register offsets from base address of 82510 in memory */
  84. #define TXD 0
  85. #define RXD 0
  86. #define BAL 0
  87. #define BAH 1
  88. #define GER 1
  89. #define GIR 2
  90. #define BANK 2
  91. #define LCR 3
  92. #define MCR 4
  93. #define LSR 5
  94. #define MSR 6
  95. #define ACR0 7
  96. #define RXF 1
  97. #define TXF 1
  98. #define TMST 3
  99. #define TMCR 3
  100. #define FLR 4
  101. #define RST 5
  102. #define RCM 5
  103. #define TCM 6
  104. #define GSR 7
  105. #define ICM 7
  106. #define FMD 1
  107. #define TMD 3
  108. #define IMD 4
  109. #define ACR1 5
  110. #define RIE 6
  111. #define RMD 7
  112. #define CLCF 0
  113. #define BBL 0
  114. #define BACF 1
  115. #define BBH 1
  116. #define BBCF 3
  117. #define PMD 4
  118. #define MIE 5
  119. #define TMIE 6
  120. /* bit definitions */
  121. /* GER, general enable register */
  122. /* GSR, general status register, same bits as GER */
  123. #define TIMER_BIT 0x20
  124. #define Tx_BIT 0x10
  125. #define MODEM_BIT 0x08
  126. #define Rx_BIT 0x04
  127. #define TxFIFO_BIT 0x02
  128. #define RxFIFO_BIT 0x01
  129. /* GIR, general interrupt register/bank register
  130. /* bank select bits, R/W */
  131. #define NAS0 0
  132. #define WORK1 0x20
  133. #define GEN2 0x40
  134. #define MODM3 0x60
  135. #define GIR_IP 0x01 /* interrupt pending bit, active low */
  136. #define GIR_IMASK 0x0e /* mask for interrupt vector */
  137. #define TIMER_INT 0x0A /* highest priority */
  138. #define Tx_INT 0x08
  139. #define Rx_INT 0x06
  140. #define RxFIFO_INT 0x04
  141. #define TxFIFO_INT 0x02
  142. #define MODEM_INT 0x00 /* lowest priority */
  143. /* LSR, line status register, shares 5 lsb's with RST */
  144. #define RxBREAK_DETECT 0x10
  145. #define RxFRAMING_ERR 0x08
  146. #define RxPARITY_ERR 0x04
  147. #define RxOVERRUN_ERR 0x02
  148. #define RxCHAR_AVAIL 0x01
  149. #define Rx_ERR_RESET (RxBREAK_DETECT|RxFRAMING_ERR|RxPARITY_ERR|RxOVERRUN_ERR)
  150. /* ICM, Internal Command Register */
  151. #define SOFT_RESET 0x10
  152. /* LCR, Line Configure Register */
  153. #define DLAB 0x80 /* divisor latch bit */
  154. #define SET_BREAK 0x40 /* set break bit */
  155. #define PM2 0x20 /* parity mode bit 2 */
  156. #define PM1 0x10 /* parity mode bit 1 */
  157. #define PM0 0x08 /* parity mode bit 0 */
  158. #define STOP_BIT_LEN_0  0x04 /* stop bit lenght bit 0, with SBL1/2 in TMD */
  159. #define CL1 0x02 /* character lenght bit 1, with NBCL in TMD */
  160. #define CL0 0x01 /* character lenght bit 0, with NBCL in TMD */
  161. #define PARITY_NONE 0 /* parity is for farmers */
  162. #define PARITY_ODD PM0 /* odd parity */
  163. #define PARITY_EVEN (PM0|PM1) /* even parity, SPF in TMD reg must be 0 */
  164. #define PARITY_HIGH (PM0|PM2) /* high parity, SPF in TMD reg must be 0 */
  165. #define PARITY_LOW (PM0|PM1|PM2)/* low parity, SPF in TMD reg must be 0 */
  166. #define PARITY_SOFT PM0 /* software parity, SPF in TMD reg must be 1 */
  167. #define CHAR_LEN_5 0 /* 5 bit characters, NBCL in TMD must be 0 */
  168. #define CHAR_LEN_6 CL0 /* 6 bit characters, NBCL in TMD must be 0 */
  169. #define CHAR_LEN_7 CL1 /* 7 bit characters, NBCL in TMD must be 0 */
  170. #define CHAR_LEN_8 (CL0|CL1)/* 8 bit characters, NBCL in TMD must be 0 */
  171. #define CHAR_LEN_9 0 /* 9 bit characters, NBCL in TMD must be 1 */
  172. /* MCR, Modem/I/O Pins Control Register */
  173. #define DTR 0x01
  174. /* MSR, Modem status register */
  175. #define MSR_BITS 0x3
  176. /* CLCF, Clock Configuration Register */
  177. #define RxCLOCK_1X 0x80 /* 0 = 16X, 1 = 1X */
  178. #define RxCLK_SRC_BRGA 0x40 /* 0 = BRGB, 1 = BRGA */
  179. #define TxCLOCK_1X 0x20 /* 0 = 16X, 1 = 1X */
  180. #define TxCLK_SRC_BRGA 0x10 /* 0 = BRGB, 1 = BRGA */
  181. /* BAL/BBL */
  182. #define BAUD_LO(baud) ((XTAL/(32*baud)) & 0xff)
  183. /* BAH/BBH */
  184. #define BAUD_HI(baud) (((XTAL/(32*baud)) & 0xff00) >> 8)
  185. /* set baud rate for the 18.432 Mhz Clock */
  186. #define BAUD_38400 16 /* XTAL/(32*BAUD) gives 15 (like manaul says) */
  187. #define BAUD_19200 32 /* 30 */
  188. #define BAUD_9600 64 /* 60 */
  189. #define BAUD_4800 128 /* 120 */
  190. #define BAUD_2400 256 /* 240 */
  191. #define BAUD_1200 512 /* 480, so don't use these... */
  192. #define XTAL 18432000
  193. #ifdef __cplusplus
  194. }
  195. #endif
  196. #endif /* __INCi82510h */