home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0010 - 0019 / ibm0010-0019 / ibm0010.tar / ibm0010 / UNIX3862.ZIP / U386-06.ZIP / U386-6.TD0 / usr / include / sys / asy.h < prev    next >
Encoding:
C/C++ Source or Header  |  1988-06-26  |  4.9 KB  |  170 lines

  1. /*    Copyright (c) 1984, 1986, 1987, 1988 AT&T    */
  2. /*      All Rights Reserved      */
  3.  
  4. /*    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T    */
  5. /*    The copyright notice above does not evidence any       */
  6. /*    actual or intended publication of such source code.    */
  7.  
  8. #ident    "@(#)head.sys:asy.h    1.9"
  9. /*
  10.  * Defines for PC AT asynchronous port driver.
  11.  */
  12.  
  13. /* 
  14.  * Async adapter addresses
  15.  */
  16.  
  17. #define NUM_ASY        2
  18. #define P_ASY0        0x03F8
  19. #define P_ASY1        0x02F8
  20. #define ASYVECT0    0x04
  21. #define ASYVECT1    0x03
  22.  
  23. /*
  24.  * Definitions for INS8250 / 16550  chips
  25.  */
  26.  
  27.     /* defined as offsets from the data register */
  28. #define DAT     0   /* receive/transmit data */
  29. #define ICR     1   /* interrupt control register */
  30. #define ISR     2   /* interrupt status register */
  31. #define LCR     3   /* line control register */
  32. #define MCR     4   /* modem control register */
  33. #define LSR     5   /* line status register */
  34. #define MSR     6   /* modem status register */
  35. #define DLL     0   /* divisor latch (lsb) */
  36. #define DLH     1   /* divisor latch (msb) */
  37.  
  38.  
  39. /* ICR */
  40.  
  41. #define RIEN    0x01    /* enable receiver interrupt */
  42. #define TIEN    0x02    /* enable transmitter interrupt */
  43. #define SIEN    0x04    /* enable receiver line status interrupt */
  44. #define MIEN    0x08    /* enable modem status interrupt */
  45.  
  46.  
  47. /* ISR */
  48.  
  49. #define FFTMOUT 0x0c    /* fifo rcvr timeout */
  50. #define RSTATUS 0x06    /* change in receiver line status */
  51. #define RxRDY   0x04    /* receiver data available */
  52. #define TxRDY   0x02    /* transmitter holding register empty */
  53. #define MSTATUS 0x00    /* change in modem status */
  54.  
  55.  
  56. /* LCR 3 */
  57.  
  58. #define RXLEN   0x03    /* # of data bits per received/xmitted character */
  59. #define STOP1   0x00
  60. #define STOP2   0x04
  61. #define PAREN   0x08
  62. #define PAREVN  0x10
  63. #define PARMARK 0x20
  64. #define SNDBRK  0x40
  65. #define DLAB    0x80
  66.  
  67. /* baud rate definitions */
  68. #define ASY9600    12
  69.  
  70. /* Definitions for character length (data bits), in RXLEN field */
  71. #define BITS5   0x00
  72. #define BITS6   0x01
  73. #define BITS7   0x02
  74. #define BITS8   0x03
  75.  
  76.  
  77. /* MCR */
  78.  
  79. #define DTR     0x01    /* bring up DTR */
  80. #define RTS     0x02    /* bring up RTS */
  81. #define OUT1    0x04
  82. #define OUT2    0x08
  83. #define LOOP    0x10    /* put chip into loopback state */
  84.  
  85.  
  86. /* LSR */
  87.  
  88. #define RCA     0x01    /* receive char available */
  89. #define OVRRUN  0x02    /* receive overrun */
  90. #define PARERR  0x04    /* parity error */
  91. #define FRMERR  0x08    /* framing/CRC error */
  92. #define BRKDET  0x10    /* break detected (null ch + frmerr) */
  93. #define XHRE    0x20    /* xmit holding register empty */
  94. #define XSRE    0x40    /* xmit shift register empty */
  95.  
  96.  
  97. /* MSR */
  98.  
  99. #define DCTS    0x01    /* CTS has changed state */
  100. #define DDSR    0x02    /* DSR has changed state */
  101. #define DRI     0x04    /* RI has changed state */
  102. #define DDCD    0x08    /* DCD has changed state */
  103. #define CTS     0x10    /* state of CTS */
  104. #define DSR     0x20    /* state of DSR */
  105. #define RI      0x40    /* state of RI */
  106. #define DCD     0x80    /* state of DCD */
  107. #define DELTAS(x)     ((x)&(DCTS|DDSR|DRI|DDCD))
  108. #define STATES(x)     ((x)(CTS|DSR|RI|DCD))
  109.  
  110. #define asychan(dev)    (dev&0x0f)
  111. #define asymajor(dev)   ((dev>>8)&0x7f)
  112. #define FIFOEN    0x8f    /* fifo enabled, w/ 8 byte trigger */
  113.  
  114. /* asy_flags definitions */
  115. #define XBRK    0x01            /* xmitting break in progress */
  116. #define XFLUSH    0x02            /* must flush clist when finished */
  117. #define    ASYHERE    0x80        /* adapter is present */
  118. #define BRKTIME    HZ/4
  119.  
  120. /*
  121.  * asy information structure
  122.  */
  123. struct asy
  124. {
  125.         int        asy_flags;    /* flags */
  126.     unsigned    asy_dat;    /* xmit/rcv data register port addr. */
  127.     unsigned    asy_icr;    /* interrupt cntrl. reg. port addr. */
  128.     unsigned    asy_isr;    /* interrupt status reg. port addr. */
  129.     unsigned     asy_lcr;    /* line control reg. port addr. */
  130.     unsigned    asy_mcr;    /* modem control reg. port addr. */
  131.     unsigned    asy_lsr;    /* line status reg. port addr. */
  132.     unsigned    asy_msr;    /* modem status reg. port addr. */
  133.     int        asy_vect;    /* interrupt vector (mach. dependent) */
  134.     dev_t        asy_dev;    /* minor device number of port */
  135.     struct tty    *asy_tty;    /* pointer to tty struct */
  136. };
  137.  
  138. /*
  139.  * size of ring buffer for input characters.
  140.  */
  141. #define    RINGSIZ      256
  142.  
  143. /*
  144.  * Defines for ioctl calls (VP/ix)
  145.  */
  146.  
  147. #define AIOC            ('A'<<8)
  148. #define AIOCINTTYPE        (AIOC|60)    /* set interrupt type */
  149. #define AIOCDOSMODE        (AIOC|61)    /* set DOS mode */
  150. #define AIOCNONDOSMODE        (AIOC|62)    /* reset DOS mode */
  151. #define AIOCSERIALOUT        (AIOC|63)    /* serial device data write */
  152. #define AIOCSERIALIN        (AIOC|64)    /* serial device data read */
  153. #define AIOCSETSS        (AIOC|65)    /* set start/stop chars */
  154. #define AIOCINFO        (AIOC|66)    /* tell usr what device we are */
  155.  
  156. /* Ioctl alternate names used by VP/ix */
  157. #define VPC_SERIAL_DOS        AIOCDOSMODE    
  158. #define VPC_SERIAL_NONDOS    AIOCNONDOSMODE
  159. #define VPC_SERIAL_INFO        AIOCINFO
  160. #define VPC_SERIAL_OUT        AIOCSERIALOUT
  161. #define VPC_SERIAL_IN        AIOCSERIALIN
  162.  
  163. /* Serial in/out requests */
  164. #define SO_DIVLLSB        1
  165. #define SO_DIVLMSB        2
  166. #define SO_LCR            3
  167. #define SO_MCR            4
  168. #define SI_MSR            1
  169. #define SIO_MASK(elem)        (1<<((elem)-1))
  170.