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 #define MEMDUMP_SIZE 32 39 #define MOD_DISABLE (RIO_NOREAD|RIO_NOWRITE|RIO_NOXPRINT) 40 41 42 struct rio_info { 43 int mode; /* Intr or polled, word/byte */ 44 spinlock_t RIOIntrSem; /* Interrupt thread sem */ 45 int current_chan; /* current channel */ 46 int RIOFailed; /* Not initialised ? */ 47 int RIOInstallAttempts; /* no. of rio-install() calls */ 48 int RIOLastPCISearch; /* status of last search */ 49 int RIONumHosts; /* Number of RIO Hosts */ 50 struct Host *RIOHosts; /* RIO Host values */ 51 struct Port **RIOPortp; /* RIO port values */ 52 /* 53 ** 02.03.1999 ARG - ESIL 0820 fix 54 ** We no longer use RIOBootMode 55 ** 56 int RIOBootMode; * RIO boot mode * 57 ** 58 */ 59 int RIOPrintDisabled; /* RIO printing disabled ? */ 60 int RIOPrintLogState; /* RIO printing state ? */ 61 int RIOPolling; /* Polling ? */ 62 /* 63 ** 09.12.1998 ARG - ESIL 0776 part fix 64 ** The 'RIO_QUICK_CHECK' ioctl was using RIOHalted. 65 ** The fix for this ESIL introduces another member (RIORtaDisCons) here to be 66 ** updated in RIOConCon() - to keep track of RTA connections/disconnections. 67 ** 'RIO_QUICK_CHECK' now returns the value of RIORtaDisCons. 68 */ 69 int RIOHalted; /* halted ? */ 70 int RIORtaDisCons; /* RTA connections/disconnections */ 71 unsigned int RIOReadCheck; /* Rio read check */ 72 unsigned int RIONoMessage; /* To display message or not */ 73 unsigned int RIONumBootPkts; /* how many packets for an RTA */ 74 unsigned int RIOBootCount; /* size of RTA code */ 75 unsigned int RIOBooting; /* count of outstanding boots */ 76 unsigned int RIOSystemUp; /* Booted ?? */ 77 unsigned int RIOCounting; /* for counting interrupts */ 78 unsigned int RIOIntCount; /* # of intr since last check */ 79 unsigned int RIOTxCount; /* number of xmit intrs */ 80 unsigned int RIORxCount; /* number of rx intrs */ 81 unsigned int RIORupCount; /* number of rup intrs */ 82 int RIXTimer; 83 int RIOBufferSize; /* Buffersize */ 84 int RIOBufferMask; /* Buffersize */ 85 86 int RIOFirstMajor; /* First host card's major no */ 87 88 unsigned int RIOLastPortsMapped; /* highest port number known */ 89 unsigned int RIOFirstPortsMapped; /* lowest port number known */ 90 91 unsigned int RIOLastPortsBooted; /* highest port number running */ 92 unsigned int RIOFirstPortsBooted; /* lowest port number running */ 93 94 unsigned int RIOLastPortsOpened; /* highest port number running */ 95 unsigned int RIOFirstPortsOpened; /* lowest port number running */ 96 97 /* Flag to say that the topology information has been changed. */ 98 unsigned int RIOQuickCheck; 99 unsigned int CdRegister; /* ??? */ 100 int RIOSignalProcess; /* Signalling process */ 101 int rio_debug; /* To debug ... */ 102 int RIODebugWait; /* For what ??? */ 103 int tpri; /* Thread prio */ 104 int tid; /* Thread id */ 105 unsigned int _RIO_Polled; /* Counter for polling */ 106 unsigned int _RIO_Interrupted; /* Counter for interrupt */ 107 int intr_tid; /* iointset return value */ 108 int TxEnSem; /* TxEnable Semaphore */ 109 110 111 struct Error RIOError; /* to Identify what went wrong */ 112 struct Conf RIOConf; /* Configuration ??? */ 113 struct ttystatics channel[RIO_PORTS]; /* channel information */ 114 char RIOBootPackets[1 + (SIXTY_FOUR_K / RTA_BOOT_DATA_SIZE)] 115 [RTA_BOOT_DATA_SIZE]; 116 struct Map RIOConnectTable[TOTAL_MAP_ENTRIES]; 117 struct Map RIOSavedTable[TOTAL_MAP_ENTRIES]; 118 119 /* RTA to host binding table for master/slave operation */ 120 unsigned long RIOBindTab[MAX_RTA_BINDINGS]; 121 /* RTA memory dump variable */ 122 unsigned char RIOMemDump[MEMDUMP_SIZE]; 123 struct ModuleInfo RIOModuleTypes[MAX_MODULE_TYPES]; 124 125 }; 126 127 128 #ifdef linux 129 #define debug(x) printk x 130 #else 131 #define debug(x) kkprintf x 132 #endif 133 134 135 136 #define RIO_RESET_INT 0x7d80 137 138 #endif /* __riodrvr.h */ 139