1 #define XEMPORTS 0xC02 2 #define XEPORTS 0xC22 3 4 #define MAX_ALLOC 0x100 5 6 #define MAXBOARDS 12 7 #define FEPCODESEG 0x0200L 8 #define FEPCODE 0x2000L 9 #define BIOSCODE 0xf800L 10 11 #define MISCGLOBAL 0x0C00L 12 #define NPORT 0x0C22L 13 #define MBOX 0x0C40L 14 #define PORTBASE 0x0C90L 15 16 /* Begin code defines used for epca_setup */ 17 18 #define INVALID_BOARD_TYPE 0x1 19 #define INVALID_NUM_PORTS 0x2 20 #define INVALID_MEM_BASE 0x4 21 #define INVALID_PORT_BASE 0x8 22 #define INVALID_BOARD_STATUS 0x10 23 #define INVALID_ALTPIN 0x20 24 25 /* End code defines used for epca_setup */ 26 27 28 #define FEPCLR 0x00 29 #define FEPMEM 0x02 30 #define FEPRST 0x04 31 #define FEPINT 0x08 32 #define FEPMASK 0x0e 33 #define FEPWIN 0x80 34 35 #define PCXE 0 36 #define PCXEVE 1 37 #define PCXEM 2 38 #define EISAXEM 3 39 #define PC64XE 4 40 #define PCXI 5 41 #define PCIXEM 7 42 #define PCICX 8 43 #define PCIXR 9 44 #define PCIXRJ 10 45 #define EPCA_NUM_TYPES 6 46 47 48 static char *board_desc[] = 49 { 50 "PC/Xe", 51 "PC/Xeve", 52 "PC/Xem", 53 "EISA/Xem", 54 "PC/64Xe", 55 "PC/Xi", 56 "unknown", 57 "PCI/Xem", 58 "PCI/CX", 59 "PCI/Xr", 60 "PCI/Xrj", 61 }; 62 63 #define STARTC 021 64 #define STOPC 023 65 #define IAIXON 0x2000 66 67 68 #define TXSTOPPED 0x1 69 #define LOWWAIT 0x2 70 #define EMPTYWAIT 0x4 71 #define RXSTOPPED 0x8 72 #define TXBUSY 0x10 73 74 #define DISABLED 0 75 #define ENABLED 1 76 #define OFF 0 77 #define ON 1 78 79 #define FEPTIMEOUT 200000 80 #define SERIAL_TYPE_INFO 3 81 #define EPCA_EVENT_HANGUP 1 82 #define EPCA_MAGIC 0x5c6df104L 83 84 struct channel 85 { 86 long magic; 87 struct tty_port port; 88 unsigned char boardnum; 89 unsigned char channelnum; 90 unsigned char omodem; /* FEP output modem status */ 91 unsigned char imodem; /* FEP input modem status */ 92 unsigned char modemfake; /* Modem values to be forced */ 93 unsigned char modem; /* Force values */ 94 unsigned char hflow; 95 unsigned char dsr; 96 unsigned char dcd; 97 unsigned char m_rts ; /* The bits used in whatever FEP */ 98 unsigned char m_dcd ; /* is indiginous to this board to */ 99 unsigned char m_dsr ; /* represent each of the physical */ 100 unsigned char m_cts ; /* handshake lines */ 101 unsigned char m_ri ; 102 unsigned char m_dtr ; 103 unsigned char stopc; 104 unsigned char startc; 105 unsigned char stopca; 106 unsigned char startca; 107 unsigned char fepstopc; 108 unsigned char fepstartc; 109 unsigned char fepstopca; 110 unsigned char fepstartca; 111 unsigned char txwin; 112 unsigned char rxwin; 113 unsigned short fepiflag; 114 unsigned short fepcflag; 115 unsigned short fepoflag; 116 unsigned short txbufhead; 117 unsigned short txbufsize; 118 unsigned short rxbufhead; 119 unsigned short rxbufsize; 120 int close_delay; 121 unsigned long event; 122 uint dev; 123 unsigned long statusflags; 124 unsigned long c_iflag; 125 unsigned long c_cflag; 126 unsigned long c_lflag; 127 unsigned long c_oflag; 128 unsigned char __iomem *txptr; 129 unsigned char __iomem *rxptr; 130 struct board_info *board; 131 struct board_chan __iomem *brdchan; 132 struct digi_struct digiext; 133 struct work_struct tqueue; 134 struct global_data __iomem *mailbox; 135 }; 136 137 struct board_info 138 { 139 unsigned char status; 140 unsigned char type; 141 unsigned char altpin; 142 unsigned short numports; 143 unsigned long port; 144 unsigned long membase; 145 void __iomem *re_map_port; 146 void __iomem *re_map_membase; 147 unsigned long memory_seg; 148 void ( * memwinon ) (struct board_info *, unsigned int) ; 149 void ( * memwinoff ) (struct board_info *, unsigned int) ; 150 void ( * globalwinon ) (struct channel *) ; 151 void ( * txwinon ) (struct channel *) ; 152 void ( * rxwinon ) (struct channel *) ; 153 void ( * memoff ) (struct channel *) ; 154 void ( * assertgwinon ) (struct channel *) ; 155 void ( * assertmemoff ) (struct channel *) ; 156 unsigned char poller_inhibited ; 157 }; 158 159