1 /* 2 ** ----------------------------------------------------------------------------- 3 ** 4 ** Perle Specialix driver for Linux 5 ** Ported from existing RIO Driver for SCO sources. 6 * 7 * (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK. 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation; either version 2 of the License, or 12 * (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program; if not, write to the Free Software 21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 22 ** 23 ** Module : riodrvr.h 24 ** SID : 1.3 25 ** Last Modified : 11/6/98 09:22:46 26 ** Retrieved : 11/6/98 09:22:46 27 ** 28 ** ident @(#)riodrvr.h 1.3 29 ** 30 ** ----------------------------------------------------------------------------- 31 */ 32 33 #ifndef __riodrvr_h 34 #define __riodrvr_h 35 36 #include <asm/param.h> /* for HZ */ 37 38 #ifdef SCCS_LABELS 39 static char *_riodrvr_h_sccs_ = "@(#)riodrvr.h 1.3"; 40 #endif 41 42 #define MEMDUMP_SIZE 32 43 #define MOD_DISABLE (RIO_NOREAD|RIO_NOWRITE|RIO_NOXPRINT) 44 45 46 struct rio_info { 47 int mode; /* Intr or polled, word/byte */ 48 spinlock_t RIOIntrSem; /* Interrupt thread sem */ 49 int current_chan; /* current channel */ 50 int RIOFailed; /* Not initialised ? */ 51 int RIOInstallAttempts; /* no. of rio-install() calls */ 52 int RIOLastPCISearch; /* status of last search */ 53 int RIONumHosts; /* Number of RIO Hosts */ 54 struct Host * RIOHosts; /* RIO Host values */ 55 struct Port **RIOPortp; /* RIO port values */ 56 /* 57 ** 02.03.1999 ARG - ESIL 0820 fix 58 ** We no longer use RIOBootMode 59 ** 60 int RIOBootMode; * RIO boot mode * 61 ** 62 */ 63 int RIOPrintDisabled; /* RIO printing disabled ? */ 64 int RIOPrintLogState; /* RIO printing state ? */ 65 int RIOPolling; /* Polling ? */ 66 /* 67 ** 09.12.1998 ARG - ESIL 0776 part fix 68 ** The 'RIO_QUICK_CHECK' ioctl was using RIOHalted. 69 ** The fix for this ESIL introduces another member (RIORtaDisCons) here to be 70 ** updated in RIOConCon() - to keep track of RTA connections/disconnections. 71 ** 'RIO_QUICK_CHECK' now returns the value of RIORtaDisCons. 72 */ 73 int RIOHalted; /* halted ? */ 74 int RIORtaDisCons; /* RTA connections/disconnections */ 75 uint RIOReadCheck; /* Rio read check */ 76 uint RIONoMessage; /* To display message or not */ 77 uint RIONumBootPkts; /* how many packets for an RTA */ 78 uint RIOBootCount; /* size of RTA code */ 79 uint RIOBooting; /* count of outstanding boots */ 80 uint RIOSystemUp; /* Booted ?? */ 81 uint RIOCounting; /* for counting interrupts */ 82 uint RIOIntCount; /* # of intr since last check */ 83 uint RIOTxCount; /* number of xmit intrs */ 84 uint RIORxCount; /* number of rx intrs */ 85 uint RIORupCount; /* number of rup intrs */ 86 int RIXTimer; 87 int RIOBufferSize; /* Buffersize */ 88 int RIOBufferMask; /* Buffersize */ 89 90 int RIOFirstMajor; /* First host card's major no */ 91 92 uint RIOLastPortsMapped; /* highest port number known */ 93 uint RIOFirstPortsMapped; /* lowest port number known */ 94 95 uint RIOLastPortsBooted; /* highest port number running */ 96 uint RIOFirstPortsBooted; /* lowest port number running */ 97 98 uint RIOLastPortsOpened; /* highest port number running */ 99 uint RIOFirstPortsOpened; /* lowest port number running */ 100 101 /* Flag to say that the topology information has been changed. */ 102 uint RIOQuickCheck; 103 uint CdRegister; /* ??? */ 104 int RIOSignalProcess; /* Signalling process */ 105 int rio_debug; /* To debug ... */ 106 int RIODebugWait; /* For what ??? */ 107 int tpri; /* Thread prio */ 108 int tid; /* Thread id */ 109 uint _RIO_Polled; /* Counter for polling */ 110 uint _RIO_Interrupted; /* Counter for interrupt */ 111 int intr_tid; /* iointset return value */ 112 int TxEnSem; /* TxEnable Semaphore */ 113 114 115 struct Error RIOError; /* to Identify what went wrong */ 116 struct Conf RIOConf; /* Configuration ??? */ 117 struct ttystatics channel[RIO_PORTS]; /* channel information */ 118 char RIOBootPackets[1+(SIXTY_FOUR_K/RTA_BOOT_DATA_SIZE)] 119 [RTA_BOOT_DATA_SIZE]; 120 struct Map RIOConnectTable[TOTAL_MAP_ENTRIES]; 121 struct Map RIOSavedTable[TOTAL_MAP_ENTRIES]; 122 123 /* RTA to host binding table for master/slave operation */ 124 ulong RIOBindTab[MAX_RTA_BINDINGS]; 125 /* RTA memory dump variable */ 126 uchar RIOMemDump[MEMDUMP_SIZE]; 127 struct ModuleInfo RIOModuleTypes[MAX_MODULE_TYPES]; 128 129 }; 130 131 132 #ifdef linux 133 #define debug(x) printk x 134 #else 135 #define debug(x) kkprintf x 136 #endif 137 138 139 140 #define RIO_RESET_INT 0x7d80 141 #define WRBYTE(x,y) *(volatile unsigned char *)((x)) = \ 142 (unsigned char)(y) 143 144 #endif /* __riodrvr.h */ 145