Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | /* ** ----------------------------------------------------------------------------- ** ** Perle Specialix driver for Linux ** Ported from existing RIO Driver for SCO sources. * * (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ** ** Module : host.h ** SID : 1.2 ** Last Modified : 11/6/98 11:34:10 ** Retrieved : 11/6/98 11:34:21 ** ** ident @(#)host.h 1.2 ** ** ----------------------------------------------------------------------------- */ #ifndef __rio_host_h__ #define __rio_host_h__ #ifdef SCCS_LABELS #ifndef lint static char *_host_h_sccs_ = "@(#)host.h 1.2"; #endif #endif /* ** the host structure - one per host card in the system. */ #define MAX_EXTRA_UNITS 64 /* ** Host data structure. This is used for the software equiv. of ** the host. */ struct Host { uchar Type; /* RIO_EISA, RIO_MCA, ... */ uchar Ivec; /* POLLED or ivec number */ uchar Mode; /* Control stuff */ uchar Slot; /* Slot */ volatile caddr_t Caddr; /* KV address of DPRAM */ volatile struct DpRam *CardP; /* KV address of DPRAM, with overlay */ paddr_t PaddrP; /* Phys. address of DPRAM */ char Name[MAX_NAME_LEN]; /* The name of the host */ uint UniqueNum; /* host unique number */ spinlock_t HostLock; /* Lock structure for MPX */ /*struct pci_devinfo PciDevInfo; *//* PCI Bus/Device/Function stuff */ /*struct lockb HostLock; *//* Lock structure for MPX */ uint WorkToBeDone; /* set to true each interrupt */ uint InIntr; /* Being serviced? */ uint IntSrvDone;/* host's interrupt has been serviced */ int (*Copy)( caddr_t, caddr_t, int ); /* copy func */ struct timer_list timer; /* ** I M P O R T A N T ! ** ** The rest of this data structure is cleared to zero after ** a RIO_HOST_FOAD command. */ ulong Flags; /* Whats going down */ #define RC_WAITING 0 #define RC_STARTUP 1 #define RC_RUNNING 2 #define RC_STUFFED 3 #define RC_SOMETHING 4 #define RC_SOMETHING_NEW 5 #define RC_SOMETHING_ELSE 6 #define RC_READY 7 #define RUN_STATE 7 /* ** Boot mode applies to the way in which hosts in this system will ** boot RTAs */ #define RC_BOOT_ALL 0x8 /* Boot all RTAs attached */ #define RC_BOOT_OWN 0x10 /* Only boot RTAs bound to this system */ #define RC_BOOT_NONE 0x20 /* Don't boot any RTAs (slave mode) */ struct Top Topology[LINKS_PER_UNIT]; /* one per link */ struct Map Mapping[MAX_RUP]; /* Mappings for host */ struct PHB *PhbP; /* Pointer to the PHB array */ ushort *PhbNumP; /* Ptr to Number of PHB's */ struct LPB *LinkStrP ; /* Link Structure Array */ struct RUP *RupP; /* Sixteen real rups here */ struct PARM_MAP *ParmMapP; /* points to the parmmap */ uint ExtraUnits[MAX_EXTRA_UNITS]; /* unknown things */ uint NumExtraBooted; /* how many of the above */ /* ** Twenty logical rups. ** The first sixteen are the real Rup entries (above), the last four ** are the link RUPs. */ struct UnixRup UnixRups[MAX_RUP+LINKS_PER_UNIT]; int timeout_id; /* For calling 100 ms delays */ int timeout_sem;/* For calling 100 ms delays */ int locks; char ____end_marker____; }; #define Control CardP->DpControl #define SetInt CardP->DpSetInt #define ResetTpu CardP->DpResetTpu #define ResetInt CardP->DpResetInt #define Signature CardP->DpSignature #define Sram1 CardP->DpSram1 #define Sram2 CardP->DpSram2 #define Sram3 CardP->DpSram3 #define Scratch CardP->DpScratch #define __ParmMapR CardP->DpParmMapR #define SLX CardP->DpSlx #define Revision CardP->DpRevision #define Unique CardP->DpUnique #define Year CardP->DpYear #define Week CardP->DpWeek #define RIO_DUMBPARM 0x0860 /* what not to expect */ #endif |