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

VxWorks

开发平台:

C/C++

  1. /* i8250Sio.h - header file for binary interface Intel 8250 UART driver */
  2. /* Copyright 1984-1993 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01d,03jun98,hdn  changed I8250_IIR_MASK from 6 to 7 to fix the TX-int problem.
  7. 01c,22may97,db  added macros for all i8250 registers(SPR #7542).
  8. 01b,15jun95,ms   updated for new driver.
  9. 01a,15mar95,myz  written (from i8250Serial.h)
  10. */
  11. #ifndef __INCi8250Sioh
  12. #define __INCi8250Sioh
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. #ifndef _ASMLANGUAGE
  17. #include "vxWorks.h"
  18. #include "sioLib.h"
  19. /* channel data structure  */
  20. typedef struct  /* I8250_CHAN */
  21.     {
  22.     SIO_DRV_FUNCS * pDrvFuncs;       /* driver functions */
  23.     STATUS      (*getTxChar) ();     /* pointer to xmitr function */
  24.     STATUS      (*putRcvChar) ();    /* pointer tp rcvr function */
  25.     void *      getTxArg;
  26.     void *      putRcvArg;
  27.     UINT16  int_vec;                 /* interrupt vector number */
  28.     UINT16  channelMode;             /* SIO_MODE_[INT | POLL] */
  29.     UCHAR   (*inByte) (int);         /* routine to read a byte from register */
  30.     void    (*outByte)(int,char);    /* routine to write a byte to register */
  31.     ULONG   lcr;                     /* UART line control register */
  32.     ULONG   lst;                     /* UART line status register */
  33.     ULONG   mdc;                     /* UART modem control register */
  34.     ULONG   msr;                     /* UART modem status register */
  35.     ULONG   ier;                     /* UART interrupt enable register */
  36.     ULONG   iid;                     /* UART interrupt ID register */
  37.     ULONG   brdl;                    /* UART baud rate register */
  38.     ULONG   brdh;                    /* UART baud rate register */
  39.     ULONG   data;                    /* UART data register */
  40.     ULONG   options;      /* UART hardware options */
  41.     } I8250_CHAN;
  42. typedef struct /* BAUD */
  43.     {
  44.     int rate; /* a baud rate */
  45.     int preset; /* counter preset value to write to DUSCC_CTPR[HL]A */
  46.     } BAUD;
  47. /* register definitions */
  48. #define UART_THR        0x00 /* Transmitter holding reg. */
  49. #define UART_RDR        0x00 /* Receiver data reg.       */
  50. #define UART_BRDL       0x00 /* Baud rate divisor (LSB)  */
  51. #define UART_BRDH       0x01 /* Baud rate divisor (MSB)  */
  52. #define UART_IER        0x01 /* Interrupt enable reg.    */
  53. #define UART_IID        0x02 /* Interrupt ID reg.        */
  54. #define UART_LCR        0x03 /* Line control reg.        */
  55. #define UART_MDC        0x04 /* Modem control reg.       */
  56. #define UART_LST        0x05 /* Line status reg.         */
  57. #define UART_MSR        0x06 /* Modem status reg.        */
  58. /* equates for interrupt enable register */
  59. #define I8250_IER_RXRDY 0x01 /* receiver data ready */
  60. #define I8250_IER_TBE 0x02 /* transmit bit enable */
  61. #define I8250_IER_LST 0x04 /* line status interrupts */
  62. #define I8250_IER_MSI 0x08 /* modem status interrupts */
  63. /* equates for interrupt identification register */
  64. #define I8250_IIR_IP 0x01 /* interrupt pending bit */
  65. #define I8250_IIR_MASK 0x07 /* interrupt id bits mask */
  66. #define I8250_IIR_MSTAT  0x00 /* modem status interrupt */
  67. #define I8250_IIR_THRE 0X02 /* transmit holding register empty */
  68. #define I8250_IIR_RBRF 0x04 /* receiver buffer register full */
  69. #define I8250_IIR_SEOB 0x06 /* serialization error or break */
  70. /* equates for line control register */
  71. #define I8250_LCR_CS5 0x00 /* 5 bits data size */
  72. #define I8250_LCR_CS6 0x01 /* 6 bits data size */
  73. #define I8250_LCR_CS7 0x02 /* 7 bits data size */
  74. #define I8250_LCR_CS8 0x03 /* 8 bits data size */
  75. #define I8250_LCR_2_STB  0x04 /* 2 stop bits */
  76. #define I8250_LCR_1_STB 0x00 /* 1 stop bit */
  77. #define I8250_LCR_PEN 0x08 /* parity enable */
  78. #define I8250_LCR_PDIS   0x00 /* parity disable */
  79. #define I8250_LCR_EPS 0x10 /* even parity slect */
  80. #define I8250_LCR_SP 0x20 /* stick parity select */
  81. #define I8250_LCR_SBRK 0x40 /* break control bit */
  82. #define I8250_LCR_DLAB 0x80 /* divisor latch access enable */
  83. /* equates for the modem control register */
  84. #define I8250_MCR_DTR 0x01 /* dtr output */
  85. #define I8250_MCR_RTS 0x02 /* rts output */
  86. #define I8250_MCR_OUT1 0x04 /* output #1 */
  87. #define I8250_MCR_OUT2 0x08 /* output #2 */
  88. #define I8250_MCR_LOOP 0x10 /* loop back */
  89.  
  90. /* equates for line status register */
  91. #define I8250_LSR_RXRDY 0x01 /* receiver data available */
  92. #define I8250_LSR_OE 0x02 /* overrun error */
  93. #define I8250_LSR_PE 0x04 /* parity error */
  94. #define I8250_LSR_FE 0x08 /* framing error */
  95. #define I8250_LSR_BI 0x10 /* break interrupt */
  96. #define I8250_LSR_THRE 0x20 /* transmit holding register empty */
  97. #define I8250_LSR_TEMT 0x40 /* transmitter empty */
  98. /* equates for modem status register */
  99. #define I8250_MSR_DCTS 0x01 /* cts change */
  100. #define I8250_MSR_DDSR 0x02 /* dsr change */
  101. #define I8250_MSR_DRI 0x04 /* ring change */
  102. #define I8250_MSR_DDCD 0x08 /* data carrier change */
  103. #define I8250_MSR_CTS 0x10 /* complement of cts */
  104. #define I8250_MSR_DSR 0x20 /* complement of dsr */
  105. #define I8250_MSR_RI 0x40 /* complement of ring signal */
  106. #define I8250_MSR_DCD 0x80 /* complement of dcd */
  107. #if defined(__STDC__) || defined(__cplusplus)
  108. extern void i8250HrdInit(I8250_CHAN *pDev);
  109. extern void i8250Int (I8250_CHAN  *pDev);
  110. #else
  111. extern void i8250HrdInit();
  112. extern void i8250Int();
  113.      
  114. #endif  /* __STDC__ */
  115. #endif /* _ASMLANGUAGE */
  116. #ifdef __cplusplus
  117. }
  118. #endif
  119. #endif /* __INCi8250h */