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

VxWorks

开发平台:

C/C++

  1. /* ixp425Sio.h - Intel IXP425 UART header file */
  2. /* Copyright 2002 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,05jun02,jb  initial version...
  7. */
  8. #ifndef __INCixp425Sioh 
  9. #define __INCixp425Sioh 
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. /******************************************************************************
  14.  *
  15.  * Register descriptions
  16.  *
  17.  ******************************************************************************/
  18. #ifndef _ASMLANGUAGE
  19. /* Register offsets from base address */
  20. #define RBR (0x00) /* receiver buffer register (read only) */
  21. #define THR (0x00) /* transmit holding register (write only) */
  22. #define IER (0x01)  /* interrupt enable register (r/w) */
  23. #define IIR (0x02) /* interrupt identification register (read only) */
  24. #define FCR (0x02) /* FIFO control register (write only) */
  25. #define LCR (0x03) /* line control register (r/w) */
  26. #define MCR (0x04)  /* modem control register (r/w) */
  27. #define LSR (0x05) /* line status register (read only) */
  28. #define MSR (0x06) /* modem status register (read only) */
  29. #define SCR (0x07) /* scratch pad register (r/w) */
  30. #define DLL (0x00) /* divisor latch lower byte (r/w) */
  31. #define DLM (0x01) /* divisor latch upper bytes (r/w) */
  32. /* Line Control Register */
  33. #define CHAR_LEN_5 0x00 /* 5bit data length (default) */
  34. #define CHAR_LEN_6 0x01 /* 6bit data length */
  35. #define CHAR_LEN_7 0x02 /* 7bit data length */
  36. #define CHAR_LEN_8 0x03 /* 8bit data length */
  37. #define LCR_STB_1 0x00 /* 1 stop bit */
  38. #define LCR_STB_2 0x04 /* 2 stop bits */
  39. #define LCR_PEN 0x08 /* parity enable */
  40. #define LCR_PDIS 0x00 /* parity disable */
  41. #define LCR_EPS 0x10 /* even parity select */
  42. #define LCR_STCKP 0x20 /* sticky parity select */
  43. #define LCR_SBRK 0x40 /* set break control */
  44. #define LCR_DLAB 0x80 /* divisor latch access enable */
  45. /* Line Status Register */
  46. #define LSR_DR 0x01 /* data ready */
  47. #define LSR_OE 0x02 /* overrun error */
  48. #define LSR_PE 0x04 /* parity error */
  49. #define LSR_FE 0x08 /* framing error */
  50. #define LSR_BI 0x10 /* break interrupt */
  51. #define LSR_TDRQ 0x20 /* transmit data request */
  52. #define LSR_TEMT 0x40 /* transmitter empty */
  53. #define LSR_FIFOE 0x80 /* in FIFO mode, set when PE, FE or BI error */
  54. /* Interrupt Enable Register */
  55. #define IER_RAVIE 0x01 /* received data available int enable */
  56. #define IER_TIE 0x02 /* transmitter data request int enable */
  57. #define IER_RLSE  0x04 /* receiver line status int enable */
  58. #define IER_MIE 0x08 /* modem status int enable */
  59. #define IER_RTOIE 0x10 /* receiver timeout int enable */
  60. #define IER_NRZIE 0x20 /* NZR coding enable */
  61. #define IER_UUE 0x40 /* UART Unit enable */
  62. #define IER_DMAE 0x80 /* DMA Requests enable */
  63. /* Interrupt Identification Register */
  64. #define IIR_IP 0x00 /* interrupt pending */
  65. #define IIR_RLS 0x06 /* received line status int */
  66. #define IIR_RDA 0x04 /* received data available int */
  67. #define IIR_TIMEOUT 0x0C /* receive data timeout (FIFO mode only) */
  68. #define IIR_THRE 0x02 /* transmit data request int */
  69. #define IIR_MSTAT 0x00 /* modem status int */
  70. #define IIR_FIFOES 0xC0 /* FIFO mode enable status */
  71. /* Modem Control Register */
  72. #define MCR_RTS 0x02 /* request to send output */
  73. #define MCR_OUT1 0x04 /* output #1 */
  74. #define MCR_OUT2 0x08 /* output #2 */
  75. #define MCR_LOOP 0x10 /* loopback mode enable */
  76. /* Modem Status Register */
  77. #define MSR_DCTS 0x01 /* clear to send change */
  78. #define MSR_CTS 0x10 /* complement of cts input */
  79. /* FIFO Control Register */
  80. #define FCR_TRFIFOE 0x01 /* enable xmit and rcvr FIFOs */
  81. #define FCR_RESETRF 0x02 /* reset receiver FIFO */
  82. #define FCR_RESETTF 0x04 /* reset trasmitter FIFO */
  83. #define FCR_ITL_1 0x00 /* 1byte receiver trigger level */
  84. #define FCR_ITL_8 0x40 /* 8byte receiver trigger level */
  85. #define FCR_ITL_16 0x80 /* 16byte receiver trigger level */
  86. #define FCR_ITL_32 0xC0 /* 32byte receiver trigger level */
  87. /* 
  88.  * Max iterations for servicing chars during ISR. This value should not be greater 
  89.  * than 32 i.e. half the UART FIFO size.
  90.  */
  91. #define IXP425_SIO_MAX_CNT 30
  92. typedef  struct  /* IXP425_SIO_CHAN */
  93.     {
  94.     /* always goes first */
  95.     SIO_DRV_FUNCS *     pDrvFuncs;      /* driver functions */
  96.     /* callbacks */
  97.     void *      getTxArg;
  98.     void *      putRcvArg;
  99.     STATUS      (*getTxChar) (); /* pointer to xmitr function */
  100.     STATUS      (*putRcvChar) (); /* pointer to rcvr function */
  101.     UINT8  *regs; /* IXP425 UART registers */
  102.     UINT8  level; /* 8259a interrupt level for this device */
  103.     UINT8  ier; /* copy of ier */
  104.     UINT8  lcr; /* copy of lcr */
  105.     UINT8  mcr; /* copy of mcr */
  106.     UINT16      channelMode; /* such as INT, POLL modes */
  107.     UINT16      regDelta; /* register address spacing */
  108.     int         baudRate;
  109.     UINT32      xtal; /* UART clock frequency     */     
  110.     UINT32 options; /* hardware setup options */
  111. #ifdef IXP425_SIO_DEBUG
  112.     UINT32 rxCount; /* UART statistics counters */
  113.     UINT32 txCount;
  114.     UINT32 overrunErr;
  115.     UINT32 parityErr;
  116.     UINT32 framingErr;
  117.     UINT32 breakErr;
  118. #endif
  119.     } IXP425_SIO_CHAN;
  120. /* function declarations */
  121. #if defined(__STDC__) || defined(__cplusplus)
  122. extern void ixp425SioInt (IXP425_SIO_CHAN *);
  123. extern void ixp425SioDevInit (IXP425_SIO_CHAN *);
  124. extern void ixp425SioStatsShow (IXP425_SIO_CHAN *);
  125. #else
  126. extern void ixp425SioInt ();
  127. extern void ixp425SioInit ();
  128. extern void ixp425SioStatsShow ();
  129. #endif  /* __STDC__ */
  130. #endif /* _ASMLANGUAGE */
  131. #ifdef __cplusplus
  132. }
  133. #endif
  134.  
  135. #endif /* __INCixp425Sioh */