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

VxWorks

开发平台:

C/C++

  1. /* ppc555SciSio.h - header file for ppc555Sci serial driver */
  2. /* Copyright 1984-1997 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,22mar99,zl  written based on templateSio.h, m68332Sio.h and m68332.h
  7. */
  8. #ifndef __INCppc555SciSioh
  9. #define __INCppc555SciSioh
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. #ifndef _ASMLANGUAGE
  14. #include "sioLib.h"
  15. #include "drv/multi/ppc555Siu.h"
  16. /* 
  17.  * Additional hardware options to the ones in sioLib.h
  18.  */
  19. #define QUEUED 0x100
  20. /* 
  21.  * QSM - Register definitions for the Queued Serial Module (QSM) 
  22.  */
  23. #define PPC555_QSM_MCR(base) ((VUINT16 *) (base + 0x305000))
  24. #define PPC555_QSM_TEST(base) ((VUINT16 *) (base + 0x305002))
  25. #define PPC555_QSM_DSCI_ILR(base) ((VUINT16 *) (base + 0x305004))
  26. #define PPC555_QSM_QSPI_ILR(base) ((VUINT16 *) (base + 0x305006))
  27. #define PPC555_QSM_SCI1_CR0(base) ((VUINT16 *) (base + 0x305008))
  28. #define PPC555_QSM_SCI1_CR1(base) ((VUINT16 *) (base + 0x30500a))
  29. #define PPC555_QSM_SCI1_SR(base) ((VUINT16 *) (base + 0x30500c))
  30. #define PPC555_QSM_SCI1_DR(base) ((VUINT16 *) (base + 0x30500e))
  31. #define PPC555_QSM_QPDR(base) ((VUINT16 *) (base + 0x305014))
  32. #define PPC555_QSM_QPAR(base) ((VUINT8  *) (base + 0x305016))
  33. #define PPC555_QSM_QDDR(base) ((VUINT8  *) (base + 0x305017))
  34. #define PPC555_QSM_SPCR0(base) ((VUINT16 *) (base + 0x305018))
  35. #define PPC555_QSM_SPCR1(base) ((VUINT16 *) (base + 0x30501a))
  36. #define PPC555_QSM_SPCR2(base) ((VUINT16 *) (base + 0x30501c))
  37. #define PPC555_QSM_SPCR3(base) ((VUINT8  *) (base + 0x30501e))
  38. #define PPC555_QSM_SPSR(base) ((VUINT8  *) (base + 0x30501f))
  39. #define PPC555_QSM_SCI2_CR0(base) ((VUINT16 *) (base + 0x305020))
  40. #define PPC555_QSM_SCI2_CR1(base) ((VUINT16 *) (base + 0x305022))
  41. #define PPC555_QSM_SCI2_SR(base) ((VUINT16 *) (base + 0x305024))
  42. #define PPC555_QSM_SCI2_DR(base) ((VUINT16 *) (base + 0x305026))
  43. #define PPC555_QSM_QSCI1_CR(base) ((VUINT16 *) (base + 0x305028))
  44. #define PPC555_QSM_QSCI1_SR(base) ((VUINT16 *) (base + 0x30502a))
  45. #define PPC555_QSM_QSCI1_SCTQ(base) ((VUINT16 *) (base + 0x30502c))
  46. #define PPC555_QSM_QSCI1_SCRQ(base) ((VUINT16 *) (base + 0x30504c))
  47. /* QSM_DSCI_ILR -  DSCI Interrupt Level Register */
  48. #define QSM_QILR_SCI_MSK 0x8f00 /* SCI interrupt level mask */
  49. #define QSM_QILR_SCI_SHIFT 8 /* SCI interrupt level shift */
  50. /* QSM_SCCR0 - Control Register 0 */
  51. #define QSM_SCCR0_OTHR 0x8000 /* Select baud rate source clk */
  52. #define QSM_SCCR0_LNKBD 0x4000 /* Link baud */
  53. #define QSM_SCCR0_SCBR_MSK 0x1FFF /* Baud rate mask */
  54. /* QSM_SCCR1 - Control Register 1 */
  55. #define QSM_SCCR1_SBK 0x0001 /* send break */
  56. #define QSM_SCCR1_RWU 0x0002 /* receiver wakeup enable */
  57. #define QSM_SCCR1_RE 0x0004 /* receiver enable */
  58. #define QSM_SCCR1_TE 0x0008 /* transmitter enable */
  59. #define QSM_SCCR1_ILIE 0x0010 /* idle-line interrupt enable */
  60. #define QSM_SCCR1_RIE 0x0020 /* receiver interrupt enable */
  61. #define QSM_SCCR1_TCIE 0x0040 /* transmit complete interrupt enable */
  62. #define QSM_SCCR1_TIE 0x0080 /* transmit interrupt enable */
  63. #define QSM_SCCR1_WAKE 0x0100 /* wakeup by address mark */
  64. #define QSM_SCCR1_M 0x0200 /* mode select: 0= 8 data bits, 1 = 9 */
  65. #define QSM_SCCR1_PE 0x0400 /* parity enable */
  66. #define QSM_SCCR1_PT 0x0800 /* parity type: 1=Odd, 0=Even */
  67. #define QSM_SCCR1_ILT 0x1000 /* idle line detect type */
  68. #define QSM_SCCR1_WOMS 0x2000 /* wired or mode for SCI Pins */
  69. #define QSM_SCCR1_LOOPS 0x4000 /* test SCI operation */
  70. /* QSM_SCSR - Status Register */
  71. #define QSM_SCSR_PF 0x0001 /* parity error flag */
  72. #define QSM_SCSR_FE 0x0002 /* framing error flag */
  73. #define QSM_SCSR_NF 0x0004 /* noise error flag */
  74. #define QSM_SCSR_OR 0x0008 /* overrun error flag */
  75. #define QSM_SCSR_IDLE 0x0010 /* idle-line detected flag */
  76. #define QSM_SCSR_RAF 0x0020 /* receiver active flag */
  77. #define QSM_SCSR_RDRF 0x0040 /* receive data register full flag */
  78. #define QSM_SCSR_TC 0x0080 /* transmit complete */
  79. #define QSM_SCSR_TDRE 0x0100 /* transmit date register empty flag */
  80. /* QSM_QSCCR - Queued SCI Control Register */
  81. #define QSM_QSCCR_QTPNT_MSK 0xF000 /* Queue transmit pointer */
  82. #define QSM_QSCCR_QTHFI 0x0800 /* Rcv queue top-half full intr. */
  83. #define QSM_QSCCR_QBHFI 0x0400 /* Rcv queue bottom-half full intr. */
  84. #define QSM_QSCCR_QTHEI 0x0200 /* Xmt queue top-half empty intr. */
  85. #define QSM_QSCCR_QBHEI 0x0100 /* Xmt queue bottom-half empty intr. */
  86. #define QSM_QSCCR_QTE 0x0040 /* Queue transmit enable */
  87. #define QSM_QSCCR_QRE 0x0020 /* Queue receive enable */
  88. #define QSM_QSCCR_QTWE 0x0010 /* Queue transmit wrap enable */
  89. #define QSM_QSCCR_QTSZ_MSK 0x000F /* Queue transfer size */
  90. /* QSM_SCSR - Queued SCI Status Register */
  91. #define QSM_QSCSR_QOR 0x1000 /* Receiver queue overrun error */
  92. #define QSM_QSCSR_QTHF 0x0800 /* Receiver queue top-half full */
  93. #define QSM_QSCSR_QBHF 0x0400 /* Receiver queue bottom-half full */
  94. #define QSM_QSCSR_QTHE 0x0200 /* Xmitter queue top-half empty */
  95. #define QSM_QSCSR_QBHE 0x0100 /* Xmitter queue bottom-half empty */
  96. #define QSM_QSCSR_QRPNT_MSK 0x00F0 /* Queue receive pointer */
  97. #define QSM_QSCSR_QPEND_MSK 0x000F /* Queue pending */
  98. /* 
  99.  * device and channel structures 
  100.  */
  101. typedef struct
  102.     {
  103.     /* must be first */
  104.     SIO_CHAN sio; /* standard SIO_CHAN element */
  105.     /* callbacks */
  106.     STATUS         (*getTxChar) ();
  107.     STATUS         (*putRcvChar) ();
  108.     void *         getTxArg;
  109.     void *         putRcvArg;
  110.     /* register addresses */
  111.     volatile UINT16 *   sccr0; /* control register 0 */
  112.     volatile UINT16 *   sccr1; /* control register 1 */
  113.     volatile UINT16 *   scsr; /* status register */
  114.     volatile UINT16 *   scdr; /* data register */
  115.     volatile UINT16 * scilr; /* interrupt level register */
  116.     volatile UINT16 * qsccr; /* queued control register */
  117.     volatile UINT16 * qscsr; /* queued status register */
  118.     volatile UINT16 * scrq; /* receive queue */
  119.     volatile UINT16 * sctq; /* transmit queue */
  120.     /* misc */
  121.     int intLevel;
  122.     int                 baudRate;        
  123.     int clockRate; /* CPU clock frequency (Hz) */
  124.     int                 mode; /* current mode (interrupt or poll) */
  125.     int options; /* Hardware options */
  126.     } PPC555SCI_CHAN;
  127. /* 
  128.  * function prototypes 
  129.  */
  130. IMPORT void  ppc555SciDevInit (PPC555SCI_CHAN *pChan); 
  131. IMPORT void  ppc555SciDevInit2(PPC555SCI_CHAN *pChan); 
  132. IMPORT void ppc555SciInt  (PPC555SCI_CHAN *pChan);
  133. #endif  /* _ASMLANGUAGE */
  134. #endif  /* __STDC__ */
  135. #ifdef  __cplusplus
  136. }
  137. #endif  /* __INCppc555SciSioh */