Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 : host.h | |
24 | ** SID : 1.2 | |
25 | ** Last Modified : 11/6/98 11:34:10 | |
26 | ** Retrieved : 11/6/98 11:34:21 | |
27 | ** | |
28 | ** ident @(#)host.h 1.2 | |
29 | ** | |
30 | ** ----------------------------------------------------------------------------- | |
31 | */ | |
32 | ||
33 | #ifndef __rio_host_h__ | |
34 | #define __rio_host_h__ | |
35 | ||
1da177e4 LT |
36 | /* |
37 | ** the host structure - one per host card in the system. | |
38 | */ | |
39 | ||
40 | #define MAX_EXTRA_UNITS 64 | |
41 | ||
42 | /* | |
43 | ** Host data structure. This is used for the software equiv. of | |
44 | ** the host. | |
45 | */ | |
8d8706e2 | 46 | struct Host { |
86fbf148 | 47 | struct pci_dev *pdev; |
27c6e526 AC |
48 | unsigned char Type; /* RIO_EISA, RIO_MCA, ... */ |
49 | unsigned char Ivec; /* POLLED or ivec number */ | |
50 | unsigned char Mode; /* Control stuff */ | |
51 | unsigned char Slot; /* Slot */ | |
d886cb58 AV |
52 | void __iomem *Caddr; /* KV address of DPRAM */ |
53 | struct DpRam __iomem *CardP; /* KV address of DPRAM, with overlay */ | |
57c2d60e | 54 | unsigned long PaddrP; /* Phys. address of DPRAM */ |
8d8706e2 | 55 | char Name[MAX_NAME_LEN]; /* The name of the host */ |
27c6e526 | 56 | unsigned int UniqueNum; /* host unique number */ |
8d8706e2 | 57 | spinlock_t HostLock; /* Lock structure for MPX */ |
27c6e526 AC |
58 | unsigned int WorkToBeDone; /* set to true each interrupt */ |
59 | unsigned int InIntr; /* Being serviced? */ | |
60 | unsigned int IntSrvDone; /* host's interrupt has been serviced */ | |
d886cb58 | 61 | void (*Copy) (void *, void __iomem *, int); /* copy func */ |
8d8706e2 AM |
62 | struct timer_list timer; |
63 | /* | |
64 | ** I M P O R T A N T ! | |
65 | ** | |
66 | ** The rest of this data structure is cleared to zero after | |
67 | ** a RIO_HOST_FOAD command. | |
68 | */ | |
69 | ||
27c6e526 | 70 | unsigned long Flags; /* Whats going down */ |
1da177e4 LT |
71 | #define RC_WAITING 0 |
72 | #define RC_STARTUP 1 | |
73 | #define RC_RUNNING 2 | |
74 | #define RC_STUFFED 3 | |
1da177e4 LT |
75 | #define RC_READY 7 |
76 | #define RUN_STATE 7 | |
77 | /* | |
78 | ** Boot mode applies to the way in which hosts in this system will | |
79 | ** boot RTAs | |
80 | */ | |
27c6e526 AC |
81 | #define RC_BOOT_ALL 0x8 /* Boot all RTAs attached */ |
82 | #define RC_BOOT_OWN 0x10 /* Only boot RTAs bound to this system */ | |
83 | #define RC_BOOT_NONE 0x20 /* Don't boot any RTAs (slave mode) */ | |
1da177e4 | 84 | |
8d8706e2 | 85 | struct Top Topology[LINKS_PER_UNIT]; /* one per link */ |
27c6e526 | 86 | struct Map Mapping[MAX_RUP]; /* Mappings for host */ |
d886cb58 AV |
87 | struct PHB __iomem *PhbP; /* Pointer to the PHB array */ |
88 | unsigned short __iomem *PhbNumP; /* Ptr to Number of PHB's */ | |
89 | struct LPB __iomem *LinkStrP; /* Link Structure Array */ | |
90 | struct RUP __iomem *RupP; /* Sixteen real rups here */ | |
91 | struct PARM_MAP __iomem *ParmMapP; /* points to the parmmap */ | |
27c6e526 AC |
92 | unsigned int ExtraUnits[MAX_EXTRA_UNITS]; /* unknown things */ |
93 | unsigned int NumExtraBooted; /* how many of the above */ | |
8d8706e2 AM |
94 | /* |
95 | ** Twenty logical rups. | |
96 | ** The first sixteen are the real Rup entries (above), the last four | |
97 | ** are the link RUPs. | |
98 | */ | |
99 | struct UnixRup UnixRups[MAX_RUP + LINKS_PER_UNIT]; | |
27c6e526 AC |
100 | int timeout_id; /* For calling 100 ms delays */ |
101 | int timeout_sem; /* For calling 100 ms delays */ | |
64b33619 | 102 | unsigned long locks; /* long req'd for set_bit --RR */ |
8d8706e2 | 103 | char ____end_marker____; |
1da177e4 LT |
104 | }; |
105 | #define Control CardP->DpControl | |
106 | #define SetInt CardP->DpSetInt | |
107 | #define ResetTpu CardP->DpResetTpu | |
108 | #define ResetInt CardP->DpResetInt | |
109 | #define Signature CardP->DpSignature | |
110 | #define Sram1 CardP->DpSram1 | |
111 | #define Sram2 CardP->DpSram2 | |
112 | #define Sram3 CardP->DpSram3 | |
113 | #define Scratch CardP->DpScratch | |
114 | #define __ParmMapR CardP->DpParmMapR | |
115 | #define SLX CardP->DpSlx | |
116 | #define Revision CardP->DpRevision | |
117 | #define Unique CardP->DpUnique | |
118 | #define Year CardP->DpYear | |
119 | #define Week CardP->DpWeek | |
120 | ||
8d8706e2 | 121 | #define RIO_DUMBPARM 0x0860 /* what not to expect */ |
1da177e4 LT |
122 | |
123 | #endif |