1 /*- 2 * Copyright (c) 2001 Brian Somers <brian@Awfulhak.org> 3 * based on work by Slawa Olhovchenkov 4 * John Prince <johnp@knight-trosoft.com> 5 * Eric Hernes 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * $FreeBSD$ 30 */ 31 32 struct global_data { 33 volatile u_short cin; 34 volatile u_short cout; 35 volatile u_short cstart; 36 volatile u_short cmax; 37 volatile u_short ein; 38 volatile u_short eout; 39 volatile u_short istart; 40 volatile u_short imax; 41 }; 42 43 44 struct board_chan { 45 volatile u_short tpjmp; 46 volatile u_short tcjmp; 47 volatile u_short fil1; 48 volatile u_short rpjmp; 49 50 volatile u_short tseg; 51 volatile u_short tin; 52 volatile u_short tout; 53 volatile u_short tmax; 54 55 volatile u_short rseg; 56 volatile u_short rin; 57 volatile u_short rout; 58 volatile u_short rmax; 59 60 volatile u_short tlow; 61 volatile u_short rlow; 62 volatile u_short rhigh; 63 volatile u_short incr; 64 65 volatile u_short dev; 66 volatile u_short edelay; 67 volatile u_short blen; 68 volatile u_short btime; 69 70 volatile u_short iflag; 71 volatile u_short oflag; 72 volatile u_short cflag; 73 volatile u_short gmask; 74 75 volatile u_short col; 76 volatile u_short delay; 77 volatile u_short imask; 78 volatile u_short tflush; 79 80 volatile u_char _1[16]; 81 82 volatile u_char num; 83 volatile u_char ract; 84 volatile u_char bstat; 85 volatile u_char tbusy; 86 volatile u_char iempty; 87 volatile u_char ilow; 88 volatile u_char idata; 89 volatile u_char eflag; 90 91 volatile u_char tflag; 92 volatile u_char rflag; 93 volatile u_char xmask; 94 volatile u_char xval; 95 volatile u_char mstat; 96 volatile u_char mchange; 97 volatile u_char mint; 98 volatile u_char lstat; 99 100 volatile u_char mtran; 101 volatile u_char orun; 102 volatile u_char startca; 103 volatile u_char stopca; 104 volatile u_char startc; 105 volatile u_char stopc; 106 volatile u_char vnext; 107 volatile u_char hflow; 108 109 volatile u_char fillc; 110 volatile u_char ochar; 111 volatile u_char omask; 112 volatile u_char _2; 113 114 volatile u_char _3[28]; 115 }; 116 117 #define SRXLWATER 0xe0 118 #define SRXHWATER 0xe1 119 #define STPTR 0xe2 120 #define PAUSETX 0xe3 121 #define RESUMETX 0xe4 122 #define SAUXONOFFC 0xe6 123 #define SENDBREAK 0xe8 124 #define SETMODEM 0xe9 125 #define SETIFLAGS 0xeA 126 #define SONOFFC 0xeB 127 #define STXLWATER 0xeC 128 #define PAUSERX 0xeE 129 #define RESUMERX 0xeF 130 #define RESETCHAN 0xf0 131 #define SETBUFFER 0xf2 132 #define SETCOOKED 0xf3 133 #define SETHFLOW 0xf4 134 #define SETCFLAGS 0xf5 135 #define SETVNEXT 0xf6 136 #define SETBSLICE 0xf7 137 #define SETRSMODE 0xfd 138 #define SETCMDACK 0xfe 139 #define RESERV 0xff 140 141 #define BREAK_IND 0x01 142 #define LOWTX_IND 0x02 143 #define EMPTYTX_IND 0x04 144 #define DATA_IND 0x08 145 #define MODEMCHG_IND 0x20 146 #define RECV_OVR_IND 0x40 147 #define CMD_ACK_IND 0x40 148 #define UART_OVR_IND 0x80 149 150 #define ALL_IND (BREAK_IND|LOWTX_IND|EMPTYTX_IND|DATA_IND|MODEMCHG_IND) 151 152 #define FEPTIMEOUT 2000 153 154 #define FEPCLR 0x0 155 #define FEPMEM 0x2 156 #define FEPRST 0x4 157 #define FEPREQ 0x8 158 #define FEPWIN 0x80 159 #define FEPMASK 0xe 160 /* #define FEPMASK 0x4 */ 161 162 #define BOTWIN 0x100L 163 #define TOPWIN 0xFF00L 164 #define MISCGLOBAL 0x0C00L 165 #define FEPCODESEG 0x0200L 166 167 /* #define BIOSCODE 0xff800 */ /* Window 15, offset 7800h */ 168 #define FEPCODE 0x0d000 169 170 #define FEP_CSTART 0x400L 171 #define FEP_CMAX 0x800L 172 #define FEP_ISTART 0x800L 173 #define FEP_IMAX 0xC00L 174 #define MBOX 0xC40L 175 #define FEP_CIN 0xD10L 176 #define FEP_GLOBAL 0xD10L 177 #define FEP_EIN 0xD18L 178 #define FEPSTAT 0xD20L 179 #define CHANSTRUCT 0x1000L 180 #define RXTXBUF 0x4000L 181 182 #define BIOSOFFSET 0x1000L 183 #define BIOSCODE 0xf800L 184 #define FEPOFFSET 0x2000L 185 186 /* c_cflag bits */ 187 #define FEP_CSIZE 0x000030 188 #define FEP_CS5 0x000000 189 #define FEP_CS6 0x000010 190 #define FEP_CS7 0x000020 191 #define FEP_CS8 0x000030 192 #define FEP_CSTOPB 0x000040 193 #define FEP_CREAD 0x000080 194 #define FEP_PARENB 0x000100 195 #define FEP_PARODD 0x000200 196 #define FEP_CLOCAL 0x000800 197 #define FEP_FASTBAUD 0x000400 198 199 /* c_iflag bits */ 200 #define FEP_IGNBRK 0000001 201 #define FEP_BRKINT 0000002 202 #define FEP_IGNPAR 0000004 203 #define FEP_PARMRK 0000010 204 #define FEP_INPCK 0000020 205 #define FEP_ISTRIP 0000040 206 #define FEP_IXON 0002000 207 #define FEP_IXANY 0004000 208 #define FEP_IXOFF 0010000 209