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

VxWorks

开发平台:

C/C++

  1. /* m68340.h - Motorola MC68340 CPU control registers */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01e,22sep92,rrr  added support for c++
  7. 01d,06aug92,caf  added TY_CO_DEV and function declarations for 5.1 upgrade.
  8.  for 5.0.x compatibility, define INCLUDE_TY_CO_DRV_50 when
  9.  including this header.
  10. 01c,26may92,rrr  the tree shuffle
  11. 01b,04oct91,rrr  passed through the ansification filter
  12.   -fixed #else and #endif
  13.   -changed copyright notice
  14. 01a,03sep91,jcf  based on m68332.h.
  15. */
  16. /*
  17. This file contains I/O address and related constants for the MC68340.
  18. */
  19. #ifndef __INCm68340h
  20. #define __INCm68340h
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. #ifndef _ASMLANGUAGE
  25. #ifndef INCLUDE_TY_CO_DRV_50
  26. #include "tyLib.h"
  27. typedef struct          /* TY_CO_DEV */
  28.     {
  29.     TY_DEV tyDev;
  30.     char numChannels; /* number of serial channel to support */
  31.     BOOL created; /* true if this device has really been created */
  32.     UINT8 *dr; /* data port */
  33.     UINT8 *csr; /* clock select register */
  34.     UINT8 *cr; /* control reg */
  35.     UINT8 *isr; /* interrupt status/mask */
  36.     UINT8 *acr; /* auxiliary control */
  37.     UINT8 *mr1; /* mode 1 */
  38.     UINT8 *mr2; /* mode 2 */
  39.     UINT8 *sop;
  40.     UINT8 *ier;
  41.     UINT8 rem; /* bit for receive-enable mask */
  42.     UINT8 tem; /* bit for transmit-enable mask */
  43.     } TY_CO_DEV;
  44. #endif /* INCLUDE_TY_CO_DRV_50 */
  45. #endif /* _ASMLANGUAGE */
  46. #define M340_ADRS(offset) ((int)M340_BASE_ADRS + offset)
  47. /* MC68340 parameter register addresses */
  48. #define M340_SIM_MCR ((UINT16 *) M340_ADRS(0x000))
  49. #define M340_SIM_SYNCR ((UINT16 *) M340_ADRS(0x004))
  50. #define M340_SIM_AVR ((UINT8  *) M340_ADRS(0x006))
  51. #define M340_SIM_RSR ((UINT8  *) M340_ADRS(0x007))
  52. #define M340_SIM_PORTA ((UINT8  *) M340_ADRS(0x011))
  53. #define M340_SIM_DDRA ((UINT8  *) M340_ADRS(0x013))
  54. #define M340_SIM_PPARA1 ((UINT8  *) M340_ADRS(0x015))
  55. #define M340_SIM_PPARA2 ((UINT8  *) M340_ADRS(0x017))
  56. #define M340_SIM_PORTB ((UINT8  *) M340_ADRS(0x019))
  57. #define M340_SIM_DDRB ((UINT8  *) M340_ADRS(0x01d))
  58. #define M340_SIM_PPARB ((UINT8  *) M340_ADRS(0x01f))
  59. #define M340_SIM_SWIV ((UINT8  *) M340_ADRS(0x020))
  60. #define M340_SIM_SYPCR ((UINT8  *) M340_ADRS(0x021))
  61. #define M340_SIM_PICR ((UINT16 *) M340_ADRS(0x022))
  62. #define M340_SIM_PITR ((UINT16 *) M340_ADRS(0x024))
  63. #define M340_SIM_SWSR ((UINT8  *) M340_ADRS(0x027))
  64. #define M340_SIM_CSAM0 ((UINT32 *) M340_ADRS(0x040))
  65. #define M340_SIM_CSBAR0 ((UINT32 *) M340_ADRS(0x044))
  66. #define M340_SIM_CSAM1 ((UINT32 *) M340_ADRS(0x048))
  67. #define M340_SIM_CSBAR1 ((UINT32 *) M340_ADRS(0x04c))
  68. #define M340_SIM_CSAM2 ((UINT32 *) M340_ADRS(0x050))
  69. #define M340_SIM_CSBAR2 ((UINT32 *) M340_ADRS(0x054))
  70. #define M340_SIM_CSAM3 ((UINT32 *) M340_ADRS(0x058))
  71. #define M340_SIM_CSBAR3 ((UINT32 *) M340_ADRS(0x05c))
  72. #define M340_TMR1_MCR ((UINT16 *) M340_ADRS(0x600))
  73. #define M340_TMR1_IR ((UINT16 *) M340_ADRS(0x604))
  74. #define M340_TMR1_CR ((UINT16 *) M340_ADRS(0x606))
  75. #define M340_TMR1_SR ((UINT16 *) M340_ADRS(0x608))
  76. #define M340_TMR1_CNTR ((UINT16 *) M340_ADRS(0x60a))
  77. #define M340_TMR1_PREL1 ((UINT16 *) M340_ADRS(0x60c))
  78. #define M340_TMR1_PREL2 ((UINT16 *) M340_ADRS(0x60e))
  79. #define M340_TMR1_COM ((UINT16 *) M340_ADRS(0x610))
  80. #define M340_TMR2_MCR ((UINT16 *) M340_ADRS(0x640))
  81. #define M340_TMR2_IR ((UINT16 *) M340_ADRS(0x644))
  82. #define M340_TMR2_CR ((UINT16 *) M340_ADRS(0x646))
  83. #define M340_TMR2_SR ((UINT16 *) M340_ADRS(0x648))
  84. #define M340_TMR2_CNTR ((UINT16 *) M340_ADRS(0x64a))
  85. #define M340_TMR2_PREL1 ((UINT16 *) M340_ADRS(0x64c))
  86. #define M340_TMR2_PREL2 ((UINT16 *) M340_ADRS(0x64e))
  87. #define M340_TMR2_COM ((UINT16 *) M340_ADRS(0x650))
  88. #define M340_DUART_MCR_MSB ((UINT8  *) M340_ADRS(0x700))
  89. #define M340_DUART_MCR_LSB ((UINT8  *) M340_ADRS(0x701))
  90. #define M340_DUART_ILR ((UINT8  *) M340_ADRS(0x704))
  91. #define M340_DUART_IVR ((UINT8  *) M340_ADRS(0x705))
  92. #define M340_DUART_MR1A ((UINT8  *) M340_ADRS(0x710))
  93. #define M340_DUART_SRA ((UINT8  *) M340_ADRS(0x711))
  94. #define M340_DUART_CSRA ((UINT8  *) M340_ADRS(0x711))
  95. #define M340_DUART_CRA ((UINT8  *) M340_ADRS(0x712))
  96. #define M340_DUART_RBA ((UINT8  *) M340_ADRS(0x713))
  97. #define M340_DUART_TBA ((UINT8  *) M340_ADRS(0x713))
  98. #define M340_DUART_IPCR ((UINT8  *) M340_ADRS(0x714))
  99. #define M340_DUART_ACR ((UINT8  *) M340_ADRS(0x714))
  100. #define M340_DUART_ISR ((UINT8  *) M340_ADRS(0x715))
  101. #define M340_DUART_IER ((UINT8  *) M340_ADRS(0x715))
  102. #define M340_DUART_MR1B ((UINT8  *) M340_ADRS(0x718))
  103. #define M340_DUART_SRB ((UINT8  *) M340_ADRS(0x719))
  104. #define M340_DUART_CSRB ((UINT8  *) M340_ADRS(0x719))
  105. #define M340_DUART_CRB ((UINT8  *) M340_ADRS(0x71a))
  106. #define M340_DUART_RBB ((UINT8  *) M340_ADRS(0x71b))
  107. #define M340_DUART_TBB ((UINT8  *) M340_ADRS(0x71b))
  108. #define M340_DUART_IP ((UINT8  *) M340_ADRS(0x71d))
  109. #define M340_DUART_OPCR ((UINT8  *) M340_ADRS(0x71d))
  110. #define M340_DUART_SOP ((UINT8  *) M340_ADRS(0x71e))
  111. #define M340_DUART_ROP ((UINT8  *) M340_ADRS(0x71f))
  112. #define M340_DUART_MR2A ((UINT8  *) M340_ADRS(0x720))
  113. #define M340_DUART_MR2B ((UINT8  *) M340_ADRS(0x721))
  114. #define M340_DMA1_MCR ((UINT16 *) M340_ADRS(0x780))
  115. #define M340_DMA1_IR ((UINT16 *) M340_ADRS(0x784))
  116. #define M340_DMA1_CCR ((UINT16 *) M340_ADRS(0x788))
  117. #define M340_DMA1_CSR ((UINT8  *) M340_ADRS(0x78a))
  118. #define M340_DMA1_FCR ((UINT8  *) M340_ADRS(0x78b))
  119. #define M340_DMA1_SAR ((UINT32 *) M340_ADRS(0x78c))
  120. #define M340_DMA1_DAR ((UINT32 *) M340_ADRS(0x790))
  121. #define M340_DMA1_BTC ((UINT32 *) M340_ADRS(0x794))
  122. #define M340_DMA2_MCR ((UINT16 *) M340_ADRS(0x7a0))
  123. #define M340_DMA2_IR ((UINT16 *) M340_ADRS(0x7a4))
  124. #define M340_DMA2_CCR ((UINT16 *) M340_ADRS(0x7a8))
  125. #define M340_DMA2_CSR ((UINT8  *) M340_ADRS(0x7aa))
  126. #define M340_DMA2_FCR ((UINT8  *) M340_ADRS(0x7ab))
  127. #define M340_DMA2_SAR ((UINT32 *) M340_ADRS(0x7ac))
  128. #define M340_DMA2_DAR ((UINT32 *) M340_ADRS(0x7b0))
  129. #define M340_DMA2_BTC ((UINT32 *) M340_ADRS(0x7b4))
  130. /* SIM - Register definitions for the System Integration Module */
  131. /* SIM_MCR - Module Configuration Register */
  132. #define SIM_MCR_SUPV 0x0080 /* supervisor/unrestricted data space */
  133. #define SIM_MCR_X 0x0000 /* no show cycle, ext. arbitration */
  134. #define SIM_MCR_SH 0x0100 /* show cycle enabled, no ext. arb. */
  135. #define SIM_MCR_SH_X 0x0200 /* show cycle enabled, ext. arb. */
  136. #define SIM_MCR_SH_X_BG 0x0300 /* show cycle/ext arb; int halt w/ BG */
  137. #define SIM_MCR_FIRQ 0x1000 /* full interrupt request mode */
  138. #define SIM_MCR_FRZ0 0x2000 /* freeze periodic interrupt timer */
  139. #define SIM_MCR_FRZ1 0x4000 /* freeze software enable */
  140. /* SIM_SYNCR - Clock Synthesis Control Register */
  141. #define SIM_SYNCR_STEXT 0x0001 /* stop mode external clock */
  142. #define SIM_SYNCR_STSIM 0x0002 /* stop mode system integration clock */
  143. #define SIM_SYNCR_RSTEN 0x0004 /* reset enable */
  144. #define SIM_SYNCR_SLOCK 0x0008 /* synthesizer lock */
  145. #define SIM_SYNCR_SLIMP 0x0010 /* limp mode */
  146. #define SIM_SYNCR_Y_MASK  0x3f00 /* Y - frequency control bits */
  147. #define SIM_SYNCR_X     0x4000 /* X - frequency control bit */
  148. #define SIM_SYNCR_W     0x8000 /* W - frequency control bit */
  149. /* SIM_AVR - Auto Vector Register */
  150. #define SIM_AVR_LVL1 0x02 /* auto vector on IRQ1 */
  151. #define SIM_AVR_LVL2 0x04 /* auto vector on IRQ2 */
  152. #define SIM_AVR_LVL3 0x08 /* auto vector on IRQ3 */
  153. #define SIM_AVR_LVL4 0x10 /* auto vector on IRQ4 */
  154. #define SIM_AVR_LVL5 0x20 /* auto vector on IRQ5 */
  155. #define SIM_AVR_LVL6 0x40 /* auto vector on IRQ6 */
  156. #define SIM_AVR_LVL7 0x80 /* auto vector on IRQ7 */
  157. /* SIM_RSR - Reset Status Register */
  158. #define SIM_RSR_SYS 0x02 /* system reset (CPU reset) */
  159. #define SIM_RSR_LOC 0x04 /* loss of clock reset */
  160. #define SIM_RSR_HLT 0x10 /* halt monitor reset */
  161. #define SIM_RSR_SW 0x20 /* software watchdog reset */
  162. #define SIM_RSR_POW 0x40 /* power up reset */
  163. #define SIM_RSR_EXT 0x80 /* external reset */
  164. /* M340_SIM_PPARA1 - Port A Pin Assignment Register 1 */
  165. #define SIM_PPARA1_PRTA0 0x01 /* port function */
  166. #define SIM_PPARA1_PRTA1 0x02 /* port function */
  167. #define SIM_PPARA1_PRTA2 0x04 /* port function */
  168. #define SIM_PPARA1_PRTA3 0x08 /* port function */
  169. #define SIM_PPARA1_PRTA4 0x10 /* port function */
  170. #define SIM_PPARA1_PRTA5 0x20 /* port function */
  171. #define SIM_PPARA1_PRTA6 0x40 /* port function */
  172. #define SIM_PPARA1_PRTA7 0x80 /* port function */
  173. /* M340_SIM_PPARA2 - Port A Pin Assignment Register 2 */
  174. #define SIM_PPARA2_IACK1 0x02 /* iack function */
  175. #define SIM_PPARA2_IACK2 0x04 /* iack function */
  176. #define SIM_PPARA2_IACK3 0x08 /* iack function */
  177. #define SIM_PPARA2_IACK4 0x10 /* iack function */
  178. #define SIM_PPARA2_IACK5 0x20 /* iack function */
  179. #define SIM_PPARA2_IACK6 0x40 /* iack function */
  180. #define SIM_PPARA2_IACK7 0x80 /* iack function */
  181. /* M340_SIM_PPARB - Port B Pin Assignment Register */
  182. #define SIM_PPARB_MODCK 0x01 /* modck function */
  183. #define SIM_PPARB_IRQ1 0x02 /* irq function (SIM_MCR:FIRQ=1) */
  184. #define SIM_PPARB_IRQ2 0x04 /* irq function (SIM_MCR:FIRQ=1) */
  185. #define SIM_PPARB_IRQ3 0x08 /* irq function */
  186. #define SIM_PPARB_IRQ4 0x10 /* irq function (SIM_MCR:FIRQ=1) */
  187. #define SIM_PPARB_IRQ5 0x20 /* irq function */
  188. #define SIM_PPARB_IRQ6 0x40 /* irq function */
  189. #define SIM_PPARB_IRQ7 0x80 /* irq function */
  190. /* SIM_SYPCR - System Protection Control (Write Once Only) */
  191. #define SIM_SYPCR_BMT_64 0x00 /* 64 clk cycle bus monitor timeout */
  192. #define SIM_SYPCR_BMT_32 0x01 /* 32 clk cycle bus monitor timeout */
  193. #define SIM_SYPCR_BMT_16 0x02 /* 16 clk cycle bus monitor timeout */
  194. #define SIM_SYPCR_BMT_8 0x03 /* 8 clk cycle bus monitor timeout */
  195. #define SIM_SYPCR_BME 0x04 /* bus monitor enable */
  196. #define SIM_SYPCR_HME 0x08 /* halt monitor enable */
  197. #define SIM_SYPCR_SWT_9 0x00 /* 2^9  xtal cycles (SIM_PITR:SWP=0) */
  198. #define SIM_SYPCR_SWT_11  0x10 /* 2^11 xtal cycles (SIM_PITR:SWP=0) */
  199. #define SIM_SYPCR_SWT_13 0x20 /* 2^13 xtal cycles (SIM_PITR:SWP=0) */
  200. #define SIM_SYPCR_SWT_15 0x30 /* 2^15 xtal cycles (SIM_PITR:SWP=0) */
  201. #define SIM_SYPCR_SWT_18 0x00 /* 2^18 xtal cycles (SIM_PITR:SWP=1) */
  202. #define SIM_SYPCR_SWT_20 0x10 /* 2^20 xtal cycles (SIM_PITR:SWP=1) */
  203. #define SIM_SYPCR_SWT_22 0x20 /* 2^22 xtal cycles (SIM_PITR:SWP=1) */
  204. #define SIM_SYPCR_SWT_24 0x30 /* 2^24 xtal cycles (SIM_PITR:SWP=1) */
  205. #define SIM_SYPCR_SWRI 0x40 /* software watchdog resets CPU */
  206. #define SIM_SYPCR_SWE 0x80 /* software watchdog enable */
  207. /* SIM_PICR - Periodic Interrupt Control Register */
  208. #define SIM_PICR_PIV_MASK 0x00ff /* periodic interrupt vector */
  209. #define SIM_PICR_PIRQL_MASK 0x0700 /* periodic interrupt request level */
  210. /* SIM_PITR - Periodic Interrupt Timer */
  211. #define SIM_PITR_PITR_MASK 0x00ff /* periodic interrupt timing register */
  212. #define SIM_PITR_PTP 0x0100 /* periodic timer prescale bit */
  213. #define SIM_PITR_SWP 0x0200 /* software watchdog prescale bit */
  214. /* SIM_SWSR - Software Service Register */
  215. #define SIM_SWSR_ACK1 0x55 /* software watchdog ack. part 1 */
  216. #define SIM_SWSR_ACK2 0xaa /* software watchdog ack. part 2 */
  217. /* SIM_CSAM - Chip Select Address Mask Register */
  218. #define SIM_CSAM_WORD 0x00000001 /* 16b port dsack generation */
  219. #define SIM_CSAM_BYTE 0x00000002 /* 8b port dsack generation */
  220. #define SIM_CSAM_WAIT_EXT 0x00000003 /* external dsack generation */
  221. #define SIM_CSAM_WAIT0 0x00000000 /* dsack with 0 wait states */
  222. #define SIM_CSAM_WAIT1 0x00000004 /* dsack with 1 wait states */
  223. #define SIM_CSAM_WAIT2 0x00000008 /* dsack with 2 wait states */
  224. #define SIM_CSAM_WAIT3 0x0000000c /* dsack with 3 wait states */
  225. #define SIM_CSAM_FC_MASK 0x000000f0 /* function code to match */
  226. #define SIM_CSAM_ADRS_MASK 0xffffff00 /* address to match */
  227. /* SIM_CSBAR - Chip Select Base Address Register */
  228. #define SIM_CSBAR_VALID 0x00000001 /* register is valid */
  229. #define SIM_CSBAR_FTE 0x00000004 /* fast termination enabled */
  230. #define SIM_CSBAR_WP 0x00000008 /* write protect */
  231. #define SIM_CSBAR_FC 0x000000f0 /* function code to match */
  232. #define SIM_CSBAR_ADRS 0xffffff00 /* address to match */
  233. /* DUART - Register definitions for the DUART serial module */
  234. /* M340_DUART_MCR - Module Configuration Register */
  235. #define DUART_MCR_SUPV 0x0080 /* supervisor reg access only */
  236. #define DUART_MCR_ICCS 0x1000 /* SCLK is input capture clk */
  237. #define DUART_MCR_FREEZE 0x4000 /* execution freeze */
  238. #define DUART_MCR_STOP 0x8000 /* stops the serial clocks */
  239. /* M340_DUART_MR1 - Mode Register 1 (a,b) */
  240. #define DUART_MR1_5BITS 0x00 /* 5 bits */
  241. #define DUART_MR1_6BITS 0x01 /* 6 bits */
  242. #define DUART_MR1_7BITS 0x02 /* 7 bits */
  243. #define DUART_MR1_8BITS 0x03 /* 8 bits */
  244. #define DUART_MR1_PAR_EVEN 0x00 /* even parity */
  245. #define DUART_MR1_PAR_ODD 0x04 /* odd parity */
  246. #define DUART_MR1_PAR_SPACE 0x08 /* space parity */
  247. #define DUART_MR1_PAR_MARK 0x0c /* mark parity */
  248. #define DUART_MR1_PAR_NONE 0x10 /* no parity */
  249. #define DUART_MR1_MDROP_DATA 0x18 /* multi_drop data */
  250. #define DUART_MR1_MDROP_ADRS 0x1c /* multi_drop address */
  251. #define DUART_MR1_ERR 0x20 /* 0 = char, 1 = block */
  252. #define DUART_MR1_RX_FULL 0x40 /* 0 = RxRDY, 1 = FFULL */
  253. #define DUART_MR1_RX_RTS 0x80 /* 0 = no, 1 = yes */
  254. /* M340_DUART_SR - Status Register (a,b) */
  255. #define DUART_SR_RXRDY 0x01 /* 0 = no, 1 = yes */
  256. #define DUART_SR_FFULL 0x02 /* 0 = no, 1 = yes */
  257. #define DUART_SR_TXRDY 0x04 /* 0 = no, 1 = yes */
  258. #define DUART_SR_TXEMP 0x08 /* 0 = no, 1 = yes */
  259. #define DUART_SR_OVERRUN_ERR 0x10 /* 0 = no, 1 = yes */
  260. #define DUART_SR_PARITY_ERR 0x20 /* 0 = no, 1 = yes */
  261. #define DUART_SR_FRAMING_ERR 0x40 /* 0 = no, 1 = yes */
  262. #define DUART_SR_RXD_BREAK 0x80 /* 0 = no, 1 = yes */
  263. /* M340_DUART_CSR - Clock Select Register (a,b) */
  264. #define DUART_CSR_TX_CLK_75 0x00 /* 75 */
  265. #define DUART_CSR_TX_CLK_110 0x01 /* 110 */
  266. #define DUART_CSR_TX_CLK_134_5 0x02 /* 134.5 */
  267. #define DUART_CSR_TX_CLK_150 0x03 /* 150 */
  268. #define DUART_CSR_TX_CLK_300 0x04 /* 300 */
  269. #define DUART_CSR_TX_CLK_600 0x05 /* 600 */
  270. #define DUART_CSR_TX_CLK_1200 0x06 /* 1200 */
  271. #define DUART_CSR_TX_CLK_2000 0x07 /* 2000 */
  272. #define DUART_CSR_TX_CLK_2400 0x08 /* 2400 */
  273. #define DUART_CSR_TX_CLK_4800 0x09 /* 4800 */
  274. #define DUART_CSR_TX_CLK_1800 0x0a /* 1800 */
  275. #define DUART_CSR_TX_CLK_9600 0x0b /* 9600 */
  276. #define DUART_CSR_TX_CLK_19200 0x0c /* 19200 */
  277. #define DUART_CSR_TX_CLK_38400 0x0d /* 38400 */
  278. #define DUART_CSR_TX_CLK_SCLK16 0x0e /* SCLK/16 */
  279. #define DUART_CSR_TX_CLK_SCLK 0x0f /* SCLK */
  280. #define DUART_CSR_RX_CLK_75 0x00 /* 75 */
  281. #define DUART_CSR_RX_CLK_110 0x10 /* 110 */
  282. #define DUART_CSR_RX_CLK_134_5 0x20 /* 134.5 */
  283. #define DUART_CSR_RX_CLK_150 0x30 /* 150 */
  284. #define DUART_CSR_RX_CLK_300 0x40 /* 300 */
  285. #define DUART_CSR_RX_CLK_600 0x50 /* 600 */
  286. #define DUART_CSR_RX_CLK_1200 0x60 /* 1200 */
  287. #define DUART_CSR_RX_CLK_2000 0x70 /* 2000 */
  288. #define DUART_CSR_RX_CLK_2400 0x80 /* 2400 */
  289. #define DUART_CSR_RX_CLK_4800 0x90 /* 4800 */
  290. #define DUART_CSR_RX_CLK_1800 0xa0 /* 1800 */
  291. #define DUART_CSR_RX_CLK_9600 0xb0 /* 9600 */
  292. #define DUART_CSR_RX_CLK_19200 0xc0 /* 19200 */
  293. #define DUART_CSR_RX_CLK_38400 0xd0 /* 38400 */
  294. #define DUART_CSR_RX_CLK_SCLK16 0xe0 /* SCLK/16 */
  295. #define DUART_CSR_RX_CLK_SCLK 0xf0 /* SCLK */
  296. /* M340_DUART_CR - Command Register (a,b) */
  297. #define DUART_CR_RX_ENABLE 0x01 /* 0 = no, 1 = yes */
  298. #define DUART_CR_RX_DISABLE 0x02 /* 0 = no, 1 = yes */
  299. #define DUART_CR_TX_ENABLE 0x04 /* 0 = no, 1 = yes */
  300. #define DUART_CR_TX_DISABLE 0x08 /* 0 = no, 1 = yes */
  301. #define DUART_CR_RST_MR_PTR 0x10 /* reset mr pointer command */
  302. #define DUART_CR_RST_RX 0x20 /* reset receiver command */
  303. #define DUART_CR_RST_TX 0x30 /* reset transmitter command */
  304. #define DUART_CR_RST_ERR_STS 0x40 /* reset error status command */
  305. #define DUART_CR_RST_BRK_INT 0x50 /* reset break int. command */
  306. #define DUART_CR_STR_BREAK 0x60 /* start break command */
  307. #define DUART_CR_STP_BREAK 0x70 /* stop break command */
  308. #define DUART_CR_RTS_ON 0x80 /* assert rts */
  309. #define DUART_CR_RTS_OFF 0x90 /* deassert rts */
  310. /* M340_DUART_IPCR - Input Port Change Register */
  311. #define DUART_IPCR_CTSA 0x01 /* 0 = low, 1 = high */
  312. #define DUART_IPCR_CTSB 0x02 /* 0 = low, 1 = high */
  313. #define DUART_IPCR_COSA 0x10 /* 1 = look for cos */
  314. #define DUART_IPCR_COSB 0x20 /* 1 = look for cos */
  315. /* M340_DUART_ACR - Auxiliary Control Register */
  316. #define DUART_ACR_IECA 0x01 /* interrupt enable change a */
  317. #define DUART_ACR_IECB 0x02 /* interrupt enable change b */
  318. #define DUART_ACR_BRG 0x80 /* baudrate set select */
  319. /* M340_DUART_ISR - Interrupt Status/Mask Register */
  320. #define DUART_ISR_TX_RDY_A 0x01 /* 0 = no, 1 = yes */
  321. #define DUART_ISR_RX_RDY_A 0x02 /* 0 = no, 1 = yes */
  322. #define DUART_ISR_BREAK_A 0x04 /* 0 = no, 1 = yes */
  323. #define DUART_ISR_XTAL_UNSTABLE 0x08 /* 0 = no, 1 = yes */
  324. #define DUART_ISR_TX_RDY_B 0x10 /* 0 = no, 1 = yes */
  325. #define DUART_ISR_RX_RDY_B 0x20 /* 0 = no, 1 = yes */
  326. #define DUART_ISR_BREAK_B 0x40 /* 0 = no, 1 = yes */
  327. #define DUART_ISR_INPUT_DELTA 0x80 /* 0 = no, 1 = yes */
  328. /* M340_DUART_IP - Input Port Register */
  329. #define DUART_IP_CTSA 0x01 /* 0 = low, 1 = high */
  330. #define DUART_IP_CTSB 0x02 /* 0 = low, 1 = high */
  331. /* M340_DUART_OPCR - Output Port Control Register */
  332. #define DUART_OPCR_RTSA 0x00 /* 0 = OP[0], 1 = RTSA */
  333. #define DUART_OPCR_RTSB 0x01 /* 0 = OP[1], 1 = RTSB */
  334. #define DUART_OPCR_RXRDY 0x10 /* 0 = OP[4], 1 = RxRDYA */
  335. #define DUART_OPCR_TXRDY 0x40 /* 0 = OP[6], 1 = TxRDYA */
  336. /* M340_DUART_MR2 - Mode Register 2 (a,b) */
  337. #define DUART_MR2_STOP_BITS_1 0x07 /* 1 */
  338. #define DUART_MR2_STOP_BITS_2 0x0f /* 2 */
  339. #define DUART_MR2_CTS_ENABLE 0x10 /* 0 = no, 1 = yes */
  340. #define DUART_MR2_TX_RTS 0x20 /* 0 = no, 1 = yes */
  341. #define DUART_MR2_NORM 0x00 /* normal */
  342. #define DUART_MR2_ECHO 0x40 /* auto echo */
  343. #define DUART_MR2_LOOPBACK 0x80 /* local loop */
  344. #define DUART_MR2_R_LOOPBACK 0xc0 /* remote loop */
  345. /* TIMER - Register definitions for the general purpose timer module */
  346. /* M340_TMR_MCR - Module Configuration Register */
  347. #define TMR_MCR_SUPV 0x0080 /* supervisor reg access only */
  348. #define TMR_MCR_FREEZE 0x4000 /* execution freeze */
  349. #define TMR_MCR_STOP 0x8000 /* stops the serial clocks */
  350. /* M340_TMR_CR - Control Register */
  351. #define TMR_CR_TOGGLE 0x0001 /* tout toggles */
  352. #define TMR_CR_ZERO 0x0002 /* tout goes to zero */
  353. #define TMR_CR_ONE 0x0003 /* tout goes to one */
  354. #define TMR_CR_CAPTURE 0x0000 /* input/output capture mode */
  355. #define TMR_CR_SQUARE 0x0004 /* square wave generator */
  356. #define TMR_CR_V_SQUARE 0x0008 /* variable duty square wave */
  357. #define TMR_CR_V_SHOT 0x000c /* variable width single shot */
  358. #define TMR_CR_PWM 0x0010 /* pulse width measurement */
  359. #define TMR_CR_PM 0x0014 /* period measurement */
  360. #define TMR_CR_EVT 0x0018 /* event count */
  361. #define TMR_CR_BYPASS 0x001c /* bypass */
  362. #define TMR_CR_X2 0x0020 /* divide by 2 */
  363. #define TMR_CR_X4 0x0040 /* divide by 4 */
  364. #define TMR_CR_X8 0x0060 /* divide by 8 */
  365. #define TMR_CR_X16 0x0080 /* divide by 16 */
  366. #define TMR_CR_X32 0x00a0 /* divide by 32 */
  367. #define TMR_CR_X64 0x00c0 /* divide by 64 */
  368. #define TMR_CR_X128 0x00e0 /* divide by 128 */
  369. #define TMR_CR_X256 0x0000 /* divide by 256 */
  370. #define TMR_CR_CLK_TIN 0x0100 /* clock source is tin */
  371. #define TMR_CR_CPE 0x0200 /* clock prescaler enable */
  372. #define TMR_CR_PSE 0x0400 /* prescaler select enable */
  373. #define TMR_CR_TGE 0x0800 /* timer gate enable */
  374. #define TMR_CR_TC 0x1000 /* tc enabled */
  375. #define TMR_CR_TG 0x2000 /* tg enabled */
  376. #define TMR_CR_TO 0x4000 /* to enabled */
  377. #define TMR_CR_SWR 0x8000 /* software reset */
  378. /* M340_TMR_SR - Status/Prescaler Register */
  379. #define TMR_SR_COM 0x0100 /* counter value matches com */
  380. #define TMR_SR_OUT 0x0200 /* output level */
  381. #define TMR_SR_ON 0x0400 /* counter enabled */
  382. #define TMR_SR_TGL 0x0800 /* tgate level */
  383. #define TMR_SR_TC 0x1000 /* timer compare interrupt */
  384. #define TMR_SR_TG 0x2000 /* timer gate interrupt */
  385. #define TMR_SR_TO 0x4000 /* timeout interrupt */
  386. #define TMR_SR_INT 0x8000 /* interrupt request */
  387. /* DMA - Register definitions for the DMA module */
  388. /* DMA_MCR - Module Configuration Register */
  389. #define DMA_MCR_MAID_MASK 0x0070 /* master arbitration id */
  390. #define DMA_MCR_SUPV 0x0080 /* supervisor reg access only */
  391. #define DMA_MCR_ISM_MASK 0x0700 /* int service mask */
  392. #define DMA_MCR_SE 0x1000 /* single address enable */
  393. #define DMA_MCR_FREEZE 0x4000 /* execution freeze */
  394. #define DMA_MCR_STOP 0x8000 /* stops the serial clocks */
  395. /* DMA_CCR - Channel Control Register */
  396. #define DMA_CCR_START 0x0001 /* start dma transfer */
  397. #define DMA_CCR_SNGL 0x0002 /* single address transfer */
  398. #define DMA_CCR_BB25 0x0000 /* 25% bus utilization */
  399. #define DMA_CCR_BB50 0x0004 /* 50% bus utilization */
  400. #define DMA_CCR_BB75 0x0008 /* 75% bus utilization */
  401. #define DMA_CCR_BB100 0x000c /* 100% bus utilization */
  402. #define DMA_CCR_INT_REQ 0x0000 /* internal request */
  403. #define DMA_CCR_EXT_REQ 0x0020 /* external request */
  404. #define DMA_CCR_CYC_STEAL 0x0030 /* external cycle steal */
  405. #define DMA_CCR_DS_LONG 0x0000 /* long destination */
  406. #define DMA_CCR_DS_WORD 0x0040 /* word destination */
  407. #define DMA_CCR_DS_BYTE 0x0080 /* byte destination */
  408. #define DMA_CCR_SS_LONG 0x0000 /* long source */
  409. #define DMA_CCR_SS_WORD 0x0100 /* word source */
  410. #define DMA_CCR_SS_BYTE 0x0200 /* byte source */
  411. #define DMA_CCR_DAPI 0x0400 /* increment destination ptr */
  412. #define DMA_CCR_SAPI 0x0800 /* increment source ptr */
  413. #define DMA_CCR_READ 0x1000 /* direction in SAM */
  414. #define DMA_CCR_ECO 0x1000 /* external control option */
  415. #define DMA_CCR_INT_ERR 0x2000 /* error interrupt */
  416. #define DMA_CCR_INT 0x4000 /* normal interrupt */
  417. #define DMA_CCR_INT_BRK 0x8000 /* breakpoint interrupt */
  418. /* DMA_CSR - Channel Status Register */
  419. #define DMA_CSR_BRKP 0x04 /* breakpoint */
  420. #define DMA_CSR_CONF 0x08 /* configuration error */
  421. #define DMA_CSR_BED 0x10 /* destination bus error */
  422. #define DMA_CSR_BES 0x20 /* source bus error */
  423. #define DMA_CSR_DONE 0x40 /* dma done */
  424. #define DMA_CSR_IRQ 0x80 /* interrupt request */
  425. /* function declarations */
  426. #ifndef _ASMLANGUAGE
  427. #ifndef INCLUDE_TY_CO_DRV_50
  428. #if defined(__STDC__) || defined(__cplusplus)
  429. IMPORT void tyCoInt (void);
  430. #else /* __STDC__ */
  431. IMPORT void tyCoInt ();
  432. #endif /* __STDC__ */
  433. #endif /* INCLUDE_TY_CO_DRV_50 */
  434. #endif /* _ASMLANGUAGE */
  435. #ifdef __cplusplus
  436. }
  437. #endif
  438. #endif /* __INCm68340h */