1 2/* 3 * sx.h 4 * 5 * Copyright (C) 1998/1999 R.E.Wolff@BitWizard.nl 6 * 7 * SX serial driver. 8 * -- Supports SI, XIO and SX host cards. 9 * -- Supports TAs, MTAs and SXDCs. 10 * 11 * Version 1.3 -- March, 1999. 12 * 13 */ 14 15#define SX_NBOARDS 4 16#define SX_PORTSPERBOARD 32 17#define SX_NPORTS (SX_NBOARDS * SX_PORTSPERBOARD) 18 19#ifdef __KERNEL__ 20 21#define SX_MAGIC 0x12345678 22 23struct sx_port { 24 struct gs_port gs; 25 struct wait_queue *shutdown_wait; 26 int ch_base; 27 int c_dcd; 28 struct sx_board *board; 29 int line; 30 long locks; 31}; 32 33struct sx_board { 34 int magic; 35 void __iomem *base; 36 void __iomem *base2; 37 unsigned long hw_base; 38 resource_size_t hw_len; 39 int eisa_base; 40 int port_base; /* Number of the first port */ 41 struct sx_port *ports; 42 int nports; 43 int flags; 44 int irq; 45 int poll; 46 int ta_type; 47 struct timer_list timer; 48 long locks; 49}; 50 51struct vpd_prom { 52 unsigned short id; 53 char hwrev; 54 char hwass; 55 int uniqid; 56 char myear; 57 char mweek; 58 char hw_feature[5]; 59 char oem_id; 60 char identifier[16]; 61}; 62 63#ifndef MOD_RS232DB25MALE 64#define MOD_RS232DB25MALE 0x0a 65#endif 66 67#define SI_ISA_BOARD 0x00000001 68#define SX_ISA_BOARD 0x00000002 69#define SX_PCI_BOARD 0x00000004 70#define SX_CFPCI_BOARD 0x00000008 71#define SX_CFISA_BOARD 0x00000010 72#define SI_EISA_BOARD 0x00000020 73#define SI1_ISA_BOARD 0x00000040 74 75#define SX_BOARD_PRESENT 0x00001000 76#define SX_BOARD_INITIALIZED 0x00002000 77#define SX_IRQ_ALLOCATED 0x00004000 78 79#define SX_BOARD_TYPE 0x000000ff 80 81#define IS_SX_BOARD(board) (board->flags & (SX_PCI_BOARD | SX_CFPCI_BOARD | \ 82 SX_ISA_BOARD | SX_CFISA_BOARD)) 83 84#define IS_SI_BOARD(board) (board->flags & SI_ISA_BOARD) 85#define IS_SI1_BOARD(board) (board->flags & SI1_ISA_BOARD) 86 87#define IS_EISA_BOARD(board) (board->flags & SI_EISA_BOARD) 88 89#define IS_CF_BOARD(board) (board->flags & (SX_CFISA_BOARD | SX_CFPCI_BOARD)) 90 91#define SERIAL_TYPE_NORMAL 1 92 93/* The SI processor clock is required to calculate the cc_int_count register 94 value for the SI cards. */ 95#define SI_PROCESSOR_CLOCK 25000000 96 97 98/* port flags */ 99/* Make sure these don't clash with gs flags or async flags */ 100#define SX_RX_THROTTLE 0x0000001 101 102 103 104#define SX_PORT_TRANSMIT_LOCK 0 105#define SX_BOARD_INTR_LOCK 0 106 107 108 109/* Debug flags. Add these together to get more debug info. */ 110 111#define SX_DEBUG_OPEN 0x00000001 112#define SX_DEBUG_SETTING 0x00000002 113#define SX_DEBUG_FLOW 0x00000004 114#define SX_DEBUG_MODEMSIGNALS 0x00000008 115#define SX_DEBUG_TERMIOS 0x00000010 116#define SX_DEBUG_TRANSMIT 0x00000020 117#define SX_DEBUG_RECEIVE 0x00000040 118#define SX_DEBUG_INTERRUPTS 0x00000080 119#define SX_DEBUG_PROBE 0x00000100 120#define SX_DEBUG_INIT 0x00000200 121#define SX_DEBUG_CLEANUP 0x00000400 122#define SX_DEBUG_CLOSE 0x00000800 123#define SX_DEBUG_FIRMWARE 0x00001000 124#define SX_DEBUG_MEMTEST 0x00002000 125 126#define SX_DEBUG_ALL 0xffffffff 127 128 129#define O_OTHER(tty) \ 130 ((O_OLCUC(tty)) ||\ 131 (O_ONLCR(tty)) ||\ 132 (O_OCRNL(tty)) ||\ 133 (O_ONOCR(tty)) ||\ 134 (O_ONLRET(tty)) ||\ 135 (O_OFILL(tty)) ||\ 136 (O_OFDEL(tty)) ||\ 137 (O_NLDLY(tty)) ||\ 138 (O_CRDLY(tty)) ||\ 139 (O_TABDLY(tty)) ||\ 140 (O_BSDLY(tty)) ||\ 141 (O_VTDLY(tty)) ||\ 142 (O_FFDLY(tty))) 143 144/* Same for input. */ 145#define I_OTHER(tty) \ 146 ((I_INLCR(tty)) ||\ 147 (I_IGNCR(tty)) ||\ 148 (I_ICRNL(tty)) ||\ 149 (I_IUCLC(tty)) ||\ 150 (L_ISIG(tty))) 151 152#define MOD_TA ( TA>>4) 153#define MOD_MTA (MTA_CD1400>>4) 154#define MOD_SXDC ( SXDC>>4) 155 156 157/* We copy the download code over to the card in chunks of ... bytes */ 158#define SX_CHUNK_SIZE 128 159 160#endif /* __KERNEL__ */ 161 162 163 164/* Specialix document 6210046-11 page 3 */ 165#define SPX(X) (('S'<<24) | ('P' << 16) | (X)) 166 167/* Specialix-Linux specific IOCTLS. */ 168#define SPXL(X) (SPX(('L' << 8) | (X))) 169 170 171#define SXIO_SET_BOARD SPXL(0x01) 172#define SXIO_GET_TYPE SPXL(0x02) 173#define SXIO_DOWNLOAD SPXL(0x03) 174#define SXIO_INIT SPXL(0x04) 175#define SXIO_SETDEBUG SPXL(0x05) 176#define SXIO_GETDEBUG SPXL(0x06) 177#define SXIO_DO_RAMTEST SPXL(0x07) 178#define SXIO_SETGSDEBUG SPXL(0x08) 179#define SXIO_GETGSDEBUG SPXL(0x09) 180#define SXIO_GETNPORTS SPXL(0x0a) 181 182 183#ifndef SXCTL_MISC_MINOR 184/* Allow others to gather this into "major.h" or something like that */ 185#define SXCTL_MISC_MINOR 167 186#endif 187 188#ifndef SX_NORMAL_MAJOR 189/* This allows overriding on the compiler commandline, or in a "major.h" 190 include or something like that */ 191#define SX_NORMAL_MAJOR 32 192#define SX_CALLOUT_MAJOR 33 193#endif 194 195 196#define SX_TYPE_SX 0x01 197#define SX_TYPE_SI 0x02 198#define SX_TYPE_CF 0x03 199 200 201#define WINDOW_LEN(board) (IS_CF_BOARD(board)?0x20000:SX_WINDOW_LEN) 202/* Need a #define for ^^^^^^^ !!! */ 203