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 unsigned 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 unsigned 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/* The SI processor clock is required to calculate the cc_int_count register 92 value for the SI cards. */ 93#define SI_PROCESSOR_CLOCK 25000000 94 95 96/* port flags */ 97/* Make sure these don't clash with gs flags or async flags */ 98#define SX_RX_THROTTLE 0x0000001 99 100 101 102#define SX_PORT_TRANSMIT_LOCK 0 103#define SX_BOARD_INTR_LOCK 0 104 105 106 107/* Debug flags. Add these together to get more debug info. */ 108 109#define SX_DEBUG_OPEN 0x00000001 110#define SX_DEBUG_SETTING 0x00000002 111#define SX_DEBUG_FLOW 0x00000004 112#define SX_DEBUG_MODEMSIGNALS 0x00000008 113#define SX_DEBUG_TERMIOS 0x00000010 114#define SX_DEBUG_TRANSMIT 0x00000020 115#define SX_DEBUG_RECEIVE 0x00000040 116#define SX_DEBUG_INTERRUPTS 0x00000080 117#define SX_DEBUG_PROBE 0x00000100 118#define SX_DEBUG_INIT 0x00000200 119#define SX_DEBUG_CLEANUP 0x00000400 120#define SX_DEBUG_CLOSE 0x00000800 121#define SX_DEBUG_FIRMWARE 0x00001000 122#define SX_DEBUG_MEMTEST 0x00002000 123 124#define SX_DEBUG_ALL 0xffffffff 125 126 127#define O_OTHER(tty) \ 128 ((O_OLCUC(tty)) ||\ 129 (O_ONLCR(tty)) ||\ 130 (O_OCRNL(tty)) ||\ 131 (O_ONOCR(tty)) ||\ 132 (O_ONLRET(tty)) ||\ 133 (O_OFILL(tty)) ||\ 134 (O_OFDEL(tty)) ||\ 135 (O_NLDLY(tty)) ||\ 136 (O_CRDLY(tty)) ||\ 137 (O_TABDLY(tty)) ||\ 138 (O_BSDLY(tty)) ||\ 139 (O_VTDLY(tty)) ||\ 140 (O_FFDLY(tty))) 141 142/* Same for input. */ 143#define I_OTHER(tty) \ 144 ((I_INLCR(tty)) ||\ 145 (I_IGNCR(tty)) ||\ 146 (I_ICRNL(tty)) ||\ 147 (I_IUCLC(tty)) ||\ 148 (L_ISIG(tty))) 149 150#define MOD_TA ( TA>>4) 151#define MOD_MTA (MTA_CD1400>>4) 152#define MOD_SXDC ( SXDC>>4) 153 154 155/* We copy the download code over to the card in chunks of ... bytes */ 156#define SX_CHUNK_SIZE 128 157 158#endif /* __KERNEL__ */ 159 160 161 162/* Specialix document 6210046-11 page 3 */ 163#define SPX(X) (('S'<<24) | ('P' << 16) | (X)) 164 165/* Specialix-Linux specific IOCTLS. */ 166#define SPXL(X) (SPX(('L' << 8) | (X))) 167 168 169#define SXIO_SET_BOARD SPXL(0x01) 170#define SXIO_GET_TYPE SPXL(0x02) 171#define SXIO_DOWNLOAD SPXL(0x03) 172#define SXIO_INIT SPXL(0x04) 173#define SXIO_SETDEBUG SPXL(0x05) 174#define SXIO_GETDEBUG SPXL(0x06) 175#define SXIO_DO_RAMTEST SPXL(0x07) 176#define SXIO_SETGSDEBUG SPXL(0x08) 177#define SXIO_GETGSDEBUG SPXL(0x09) 178#define SXIO_GETNPORTS SPXL(0x0a) 179 180 181#ifndef SXCTL_MISC_MINOR 182/* Allow others to gather this into "major.h" or something like that */ 183#define SXCTL_MISC_MINOR 167 184#endif 185 186#ifndef SX_NORMAL_MAJOR 187/* This allows overriding on the compiler commandline, or in a "major.h" 188 include or something like that */ 189#define SX_NORMAL_MAJOR 32 190#define SX_CALLOUT_MAJOR 33 191#endif 192 193 194#define SX_TYPE_SX 0x01 195#define SX_TYPE_SI 0x02 196#define SX_TYPE_CF 0x03 197 198 199#define WINDOW_LEN(board) (IS_CF_BOARD(board)?0x20000:SX_WINDOW_LEN) 200/* Need a #define for ^^^^^^^ !!! */ 201