1
2
3
4
5
6
7
8
9
10
11#ifndef _LINUX_ZORRO_H
12#define _LINUX_ZORRO_H
13
14#ifndef __ASSEMBLY__
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30#define ZORRO_MANUF(id) ((id) >> 16)
31#define ZORRO_PROD(id) (((id) >> 8) & 0xff)
32#define ZORRO_EPC(id) ((id) & 0xff)
33
34#define ZORRO_ID(manuf, prod, epc) \
35 ((ZORRO_MANUF_##manuf << 16) | ((prod) << 8) | (epc))
36
37typedef __u32 zorro_id;
38
39
40#define ZORRO_WILDCARD (0xffffffff)
41
42
43#include <linux/zorro_ids.h>
44
45
46
47
48
49
50
51
52#define GVP_PRODMASK (0xf8)
53#define GVP_SCSICLKMASK (0x01)
54
55enum GVP_flags {
56 GVP_IO = 0x01,
57 GVP_ACCEL = 0x02,
58 GVP_SCSI = 0x04,
59 GVP_24BITDMA = 0x08,
60 GVP_25BITDMA = 0x10,
61 GVP_NOBANK = 0x20,
62 GVP_14MHZ = 0x40,
63};
64
65
66struct Node {
67 struct Node *ln_Succ;
68 struct Node *ln_Pred;
69 __u8 ln_Type;
70 __s8 ln_Pri;
71 __s8 *ln_Name;
72} __attribute__ ((packed));
73
74struct ExpansionRom {
75
76 __u8 er_Type;
77 __u8 er_Product;
78 __u8 er_Flags;
79 __u8 er_Reserved03;
80 __u16 er_Manufacturer;
81 __u32 er_SerialNumber;
82 __u16 er_InitDiagVec;
83 __u8 er_Reserved0c;
84 __u8 er_Reserved0d;
85 __u8 er_Reserved0e;
86 __u8 er_Reserved0f;
87} __attribute__ ((packed));
88
89
90#define ERT_TYPEMASK 0xc0
91#define ERT_ZORROII 0xc0
92#define ERT_ZORROIII 0x80
93
94
95#define ERTB_MEMLIST 5
96#define ERTF_MEMLIST (1<<5)
97
98struct ConfigDev {
99 struct Node cd_Node;
100 __u8 cd_Flags;
101 __u8 cd_Pad;
102 struct ExpansionRom cd_Rom;
103 void *cd_BoardAddr;
104 __u32 cd_BoardSize;
105 __u16 cd_SlotAddr;
106 __u16 cd_SlotSize;
107 void *cd_Driver;
108 struct ConfigDev *cd_NextCD;
109 __u32 cd_Unused[4];
110} __attribute__ ((packed));
111
112#else
113
114LN_Succ = 0
115LN_Pred = LN_Succ+4
116LN_Type = LN_Pred+4
117LN_Pri = LN_Type+1
118LN_Name = LN_Pri+1
119LN_sizeof = LN_Name+4
120
121ER_Type = 0
122ER_Product = ER_Type+1
123ER_Flags = ER_Product+1
124ER_Reserved03 = ER_Flags+1
125ER_Manufacturer = ER_Reserved03+1
126ER_SerialNumber = ER_Manufacturer+2
127ER_InitDiagVec = ER_SerialNumber+4
128ER_Reserved0c = ER_InitDiagVec+2
129ER_Reserved0d = ER_Reserved0c+1
130ER_Reserved0e = ER_Reserved0d+1
131ER_Reserved0f = ER_Reserved0e+1
132ER_sizeof = ER_Reserved0f+1
133
134CD_Node = 0
135CD_Flags = CD_Node+LN_sizeof
136CD_Pad = CD_Flags+1
137CD_Rom = CD_Pad+1
138CD_BoardAddr = CD_Rom+ER_sizeof
139CD_BoardSize = CD_BoardAddr+4
140CD_SlotAddr = CD_BoardSize+4
141CD_SlotSize = CD_SlotAddr+2
142CD_Driver = CD_SlotSize+2
143CD_NextCD = CD_Driver+4
144CD_Unused = CD_NextCD+4
145CD_sizeof = CD_Unused+(4*4)
146
147#endif
148
149#ifndef __ASSEMBLY__
150
151#define ZORRO_NUM_AUTO 16
152
153#ifdef __KERNEL__
154
155#include <linux/init.h>
156#include <linux/ioport.h>
157
158#include <asm/zorro.h>
159
160struct zorro_dev {
161 struct ExpansionRom rom;
162 zorro_id id;
163 u16 slotaddr;
164 u16 slotsize;
165 char name[64];
166 struct resource resource;
167};
168
169extern unsigned int zorro_num_autocon;
170extern struct zorro_dev zorro_autocon[ZORRO_NUM_AUTO];
171
172
173
174
175
176
177extern void zorro_init(void);
178extern void zorro_name_device(struct zorro_dev *dev);
179
180extern struct zorro_dev *zorro_find_device(zorro_id id,
181 struct zorro_dev *from);
182
183#define zorro_request_device(z, name) \
184 request_mem_region((z)->resource.start, \
185 (z)->resource.end-(z)->resource.start+1, (name))
186#define zorro_check_device(z) \
187 check_mem_region((z)->resource.start, \
188 (z)->resource.end-(z)->resource.start+1)
189#define zorro_release_device(z) \
190 release_mem_region((z)->resource.start, \
191 (z)->resource.end-(z)->resource.start+1)
192
193
194
195
196
197
198
199
200
201
202
203extern __u32 zorro_unused_z2ram[4];
204
205#define Z2RAM_START (0x00200000)
206#define Z2RAM_END (0x00a00000)
207#define Z2RAM_SIZE (0x00800000)
208#define Z2RAM_CHUNKSIZE (0x00010000)
209#define Z2RAM_CHUNKMASK (0x0000ffff)
210#define Z2RAM_CHUNKSHIFT (16)
211
212
213#endif
214#endif
215
216#endif
217