root / lab4 / .minix-src / include / dev / pci / amrreg.h @ 14
History | View | Annotate | Download (13.7 KB)
1 | 13 | up20180614 | /* $NetBSD: amrreg.h,v 1.5 2008/09/08 23:36:54 gmcgarry Exp $ */
|
---|---|---|---|
2 | |||
3 | /*-
|
||
4 | * Copyright (c) 2002, 2003 The NetBSD Foundation, Inc.
|
||
5 | * All rights reserved.
|
||
6 | *
|
||
7 | * This code is derived from software contributed to The NetBSD Foundation
|
||
8 | * by Andrew Doran.
|
||
9 | *
|
||
10 | * Redistribution and use in source and binary forms, with or without
|
||
11 | * modification, are permitted provided that the following conditions
|
||
12 | * are met:
|
||
13 | * 1. Redistributions of source code must retain the above copyright
|
||
14 | * notice, this list of conditions and the following disclaimer.
|
||
15 | * 2. Redistributions in binary form must reproduce the above copyright
|
||
16 | * notice, this list of conditions and the following disclaimer in the
|
||
17 | * documentation and/or other materials provided with the distribution.
|
||
18 | *
|
||
19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||
20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||
21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||
22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||
23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||
24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||
25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||
29 | * POSSIBILITY OF SUCH DAMAGE.
|
||
30 | */
|
||
31 | |||
32 | /*-
|
||
33 | * Copyright (c) 1999,2000 Michael Smith
|
||
34 | * Copyright (c) 2000 BSDi
|
||
35 | * All rights reserved.
|
||
36 | *
|
||
37 | * Redistribution and use in source and binary forms, with or without
|
||
38 | * modification, are permitted provided that the following conditions
|
||
39 | * are met:
|
||
40 | * 1. Redistributions of source code must retain the above copyright
|
||
41 | * notice, this list of conditions and the following disclaimer.
|
||
42 | * 2. Redistributions in binary form must reproduce the above copyright
|
||
43 | * notice, this list of conditions and the following disclaimer in the
|
||
44 | * documentation and/or other materials provided with the distribution.
|
||
45 | *
|
||
46 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||
47 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
48 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
49 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||
50 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
51 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
52 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
53 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
54 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
55 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
56 | * SUCH DAMAGE.
|
||
57 | *
|
||
58 | * from FreeBSD: amrreg.h,v 1.2 2000/08/30 07:52:40 msmith Exp
|
||
59 | */
|
||
60 | |||
61 | #ifndef _PCI_AMRREG_H_
|
||
62 | #define _PCI_AMRREG_H_
|
||
63 | |||
64 | #ifdef AMR_CRASH_ME
|
||
65 | #define AMR_MAX_CMDS 255 /* ident = 0 not allowed */ |
||
66 | #else
|
||
67 | #define AMR_MAX_CMDS 120 |
||
68 | #endif
|
||
69 | #define AMR_MAXLD 40 |
||
70 | |||
71 | #define AMR_MAX_CMDS_PU 63 |
||
72 | |||
73 | #define AMR_MAX_SEGS 26 |
||
74 | #define AMR_MAX_CHANNEL 3 |
||
75 | #define AMR_MAX_TARGET 15 |
||
76 | #define AMR_MAX_LUN 7 |
||
77 | |||
78 | #define AMR_MAX_CDB_LEN 0x0a |
||
79 | #define AMR_MAX_REQ_SENSE_LEN 0x20 |
||
80 | |||
81 | #define AMR_SECTOR_SIZE 512 |
||
82 | |||
83 | /* Mailbox commands.*/
|
||
84 | #define AMR_CMD_LREAD 0x01 |
||
85 | #define AMR_CMD_LWRITE 0x02 |
||
86 | #define AMR_CMD_PASS 0x03 |
||
87 | #define AMR_CMD_EXT_ENQUIRY 0x04 |
||
88 | #define AMR_CMD_ENQUIRY 0x05 |
||
89 | #define AMR_CMD_FLUSH 0x0a |
||
90 | #define AMR_CMD_EXT_ENQUIRY2 0x0c |
||
91 | #define AMR_CMD_GET_MACHINEID 0x36 |
||
92 | #define AMR_CMD_GET_INITIATOR 0x7d /* returns one byte */ |
||
93 | #define AMR_CMD_CONFIG 0xa1 |
||
94 | #define AMR_CONFIG_PRODUCT_INFO 0x0e |
||
95 | #define AMR_CONFIG_ENQ3 0x0f |
||
96 | #define AMR_CONFIG_ENQ3_SOLICITED_NOTIFY 0x01 |
||
97 | #define AMR_CONFIG_ENQ3_SOLICITED_FULL 0x02 |
||
98 | #define AMR_CONFIG_ENQ3_UNSOLICITED 0x03 |
||
99 | |||
100 | /* Command completion status. */
|
||
101 | #define AMR_STATUS_SUCCESS 0x00 |
||
102 | #define AMR_STATUS_ABORTED 0x02 |
||
103 | #define AMR_STATUS_FAILED 0x80 |
||
104 | |||
105 | /* Physical/logical drive states. */
|
||
106 | #define AMR_DRV_CURSTATE(x) ((x) & 0x0f) |
||
107 | #define AMR_DRV_PREVSTATE(x) (((x) >> 4) & 0x0f) |
||
108 | #define AMR_DRV_OFFLINE 0x00 |
||
109 | #define AMR_DRV_DEGRADED 0x01 |
||
110 | #define AMR_DRV_OPTIMAL 0x02 |
||
111 | #define AMR_DRV_ONLINE 0x03 |
||
112 | #define AMR_DRV_FAILED 0x04 |
||
113 | #define AMR_DRV_REBUILD 0x05 |
||
114 | #define AMR_DRV_HOTSPARE 0x06 |
||
115 | |||
116 | /* Logical drive properties. */
|
||
117 | #define AMR_DRV_RAID_MASK 0x0f /* RAID level 0, 1, 3, 5, etc. */ |
||
118 | #define AMR_DRV_WRITEBACK 0x10 /* write-back enabled */ |
||
119 | #define AMR_DRV_READHEAD 0x20 /* readhead policy enabled */ |
||
120 | #define AMR_DRV_ADAPTIVE 0x40 /* adaptive I/O policy enabled */ |
||
121 | |||
122 | /* Battery status. */
|
||
123 | #define AMR_BATT_MODULE_MISSING 0x01 |
||
124 | #define AMR_BATT_LOW_VOLTAGE 0x02 |
||
125 | #define AMR_BATT_TEMP_HIGH 0x04 |
||
126 | #define AMR_BATT_PACK_MISSING 0x08 |
||
127 | #define AMR_BATT_CHARGE_MASK 0x30 |
||
128 | #define AMR_BATT_CHARGE_DONE 0x00 |
||
129 | #define AMR_BATT_CHARGE_INPROG 0x10 |
||
130 | #define AMR_BATT_CHARGE_FAIL 0x20 |
||
131 | #define AMR_BATT_CYCLES_EXCEEDED 0x40 |
||
132 | |||
133 | /*
|
||
134 | * 8LD firmware interface.
|
||
135 | */
|
||
136 | |||
137 | /* Array constraints. */
|
||
138 | #define AMR_8LD_MAXDRIVES 8 |
||
139 | #define AMR_8LD_MAXCHAN 5 |
||
140 | #define AMR_8LD_MAXTARG 15 |
||
141 | #define AMR_8LD_MAXPHYSDRIVES (AMR_8LD_MAXCHAN * AMR_8LD_MAXTARG)
|
||
142 | |||
143 | /* Adapter information. */
|
||
144 | struct amr_adapter_info {
|
||
145 | u_int8_t aa_maxio; |
||
146 | u_int8_t aa_rebuild_rate; |
||
147 | u_int8_t aa_maxtargchan; |
||
148 | u_int8_t aa_channels; |
||
149 | u_int8_t aa_firmware[4];
|
||
150 | u_int16_t aa_flashage; |
||
151 | u_int8_t aa_chipsetvalue; |
||
152 | u_int8_t aa_memorysize; |
||
153 | u_int8_t aa_cacheflush; |
||
154 | u_int8_t aa_bios[4];
|
||
155 | u_int8_t aa_boardtype; |
||
156 | u_int8_t aa_scsisensealert; |
||
157 | u_int8_t aa_writeconfigcount; |
||
158 | u_int8_t aa_driveinsertioncount; |
||
159 | u_int8_t aa_inserteddrive; |
||
160 | u_int8_t aa_batterystatus; |
||
161 | u_int8_t aa_res1; |
||
162 | } __packed; |
||
163 | |||
164 | /* Logical drive information. */
|
||
165 | struct amr_logdrive_info {
|
||
166 | u_int8_t al_numdrives; |
||
167 | u_int8_t al_res1[3];
|
||
168 | u_int32_t al_size[AMR_8LD_MAXDRIVES]; |
||
169 | u_int8_t al_properties[AMR_8LD_MAXDRIVES]; |
||
170 | u_int8_t al_state[AMR_8LD_MAXDRIVES]; |
||
171 | } __packed; |
||
172 | |||
173 | /* Physical drive information. */
|
||
174 | struct amr_physdrive_info {
|
||
175 | /* Low nybble is current state, high nybble is previous state. */
|
||
176 | u_int8_t ap_state[AMR_8LD_MAXPHYSDRIVES]; |
||
177 | u_int8_t ap_predictivefailure; |
||
178 | } __packed; |
||
179 | |||
180 | /*
|
||
181 | * Enquiry response structure for AMR_CMD_ENQUIRY (e), AMR_CMD_EXT_ENQUIRY (x)
|
||
182 | * and AMR_CMD_EXT_ENQUIRY2 (2).
|
||
183 | */
|
||
184 | struct amr_enquiry {
|
||
185 | struct amr_adapter_info ae_adapter; /* e x 2 */ |
||
186 | struct amr_logdrive_info ae_ldrv; /* e x 2 */ |
||
187 | struct amr_physdrive_info ae_pdrv; /* e x 2 */ |
||
188 | u_int8_t ae_formatting[AMR_8LD_MAXDRIVES]; /* x 2 */
|
||
189 | u_int8_t res1[AMR_8LD_MAXDRIVES]; /* x 2 */
|
||
190 | u_int32_t ae_extlen; /* 2 */
|
||
191 | u_int16_t ae_subsystem; /* 2 */
|
||
192 | u_int16_t ae_subvendor; /* 2 */
|
||
193 | u_int32_t ae_signature; /* 2 */
|
||
194 | #define AMR_SIG_431 0xfffe0001 |
||
195 | #define AMR_SIG_438 0xfffd0002 |
||
196 | #define AMR_SIG_762 0xfffc0003 |
||
197 | #define AMR_SIG_T5 0xfffb0004 |
||
198 | #define AMR_SIG_466 0xfffa0005 |
||
199 | #define AMR_SIG_467 0xfff90006 |
||
200 | #define AMR_SIG_T7 0xfff80007 |
||
201 | #define AMR_SIG_490 0xfff70008 |
||
202 | u_int8_t res2[844]; /* 2 */ |
||
203 | } __packed; |
||
204 | |||
205 | /*
|
||
206 | * 40LD firmware interface.
|
||
207 | */
|
||
208 | |||
209 | /* Array constraints. */
|
||
210 | #define AMR_40LD_MAXDRIVES 40 |
||
211 | #define AMR_40LD_MAXCHAN 16 |
||
212 | #define AMR_40LD_MAXTARG 16 |
||
213 | #define AMR_40LD_MAXPHYSDRIVES 256 |
||
214 | |||
215 | /* Product information structure. */
|
||
216 | struct amr_prodinfo {
|
||
217 | u_int32_t ap_size; /* current size in bytes (not including resvd) */
|
||
218 | u_int32_t ap_configsig; /* default is 0x00282008, indicating 0x28 maximum
|
||
219 | * logical drives, 0x20 maximum stripes and 0x08
|
||
220 | * maximum spans */
|
||
221 | u_int8_t ap_firmware[16]; /* printable identifiers */ |
||
222 | u_int8_t ap_bios[16];
|
||
223 | u_int8_t ap_product[80];
|
||
224 | u_int8_t ap_maxio; /* maximum number of concurrent commands supported */
|
||
225 | u_int8_t ap_nschan; /* number of SCSI channels present */
|
||
226 | u_int8_t ap_fcloops; /* number of fibre loops present */
|
||
227 | u_int8_t ap_memtype; /* memory type */
|
||
228 | u_int32_t ap_signature; |
||
229 | u_int16_t ap_memsize; /* onboard memory in MB */
|
||
230 | u_int16_t ap_subsystem; /* subsystem identifier */
|
||
231 | u_int16_t ap_subvendor; /* subsystem vendor ID */
|
||
232 | u_int8_t ap_numnotifyctr; /* number of notify counters */
|
||
233 | } __packed; |
||
234 | |||
235 | /* Notify structure. */
|
||
236 | struct amr_notify {
|
||
237 | u_int32_t an_globalcounter; /* change counter */
|
||
238 | |||
239 | u_int8_t an_paramcounter; /* parameter change counter */
|
||
240 | u_int8_t an_paramid; |
||
241 | #define AMR_PARAM_REBUILD_RATE 0x01 /* value = new rebuild rate */ |
||
242 | #define AMR_PARAM_FLUSH_INTERVAL 0x02 /* value = new flush interval */ |
||
243 | #define AMR_PARAM_SENSE_ALERT 0x03 /* value = last physical drive with check condition set */ |
||
244 | #define AMR_PARAM_DRIVE_INSERTED 0x04 /* value = last physical drive inserted */ |
||
245 | #define AMR_PARAM_BATTERY_STATUS 0x05 /* value = battery status */ |
||
246 | u_int16_t an_paramval; |
||
247 | |||
248 | u_int8_t an_writeconfigcounter; /* write config occurred */
|
||
249 | u_int8_t res1[3];
|
||
250 | |||
251 | u_int8_t an_ldrvopcounter; /* logical drive operation started/completed */
|
||
252 | u_int8_t an_ldrvopid; |
||
253 | u_int8_t an_ldrvopcmd; |
||
254 | #define AMR_LDRVOP_CHECK 0x01 |
||
255 | #define AMR_LDRVOP_INIT 0x02 |
||
256 | #define AMR_LDRVOP_REBUILD 0x03 |
||
257 | u_int8_t an_ldrvopstatus; |
||
258 | #define AMR_LDRVOP_SUCCESS 0x00 |
||
259 | #define AMR_LDRVOP_FAILED 0x01 |
||
260 | #define AMR_LDRVOP_ABORTED 0x02 |
||
261 | #define AMR_LDRVOP_CORRECTED 0x03 |
||
262 | #define AMR_LDRVOP_STARTED 0x04 |
||
263 | |||
264 | u_int8_t an_ldrvstatecounter; /* logical drive state change occurred */
|
||
265 | u_int8_t an_ldrvstateid; |
||
266 | u_int8_t an_ldrvstatenew; |
||
267 | u_int8_t an_ldrvstateold; |
||
268 | |||
269 | u_int8_t an_pdrvstatecounter; /* physical drive state change occurred */
|
||
270 | u_int8_t an_pdrvstateid; |
||
271 | u_int8_t an_pdrvstatenew; |
||
272 | u_int8_t an_pdrvstateold; |
||
273 | |||
274 | u_int8_t an_pdrvfmtcounter; |
||
275 | u_int8_t an_pdrvfmtid; |
||
276 | u_int8_t an_pdrvfmtval; |
||
277 | #define AMR_FORMAT_START 0x01 |
||
278 | #define AMR_FORMAT_COMPLETE 0x02 |
||
279 | u_int8_t res2; |
||
280 | |||
281 | u_int8_t an_targxfercounter; /* scsi xfer rate change */
|
||
282 | u_int8_t an_targxferid; |
||
283 | u_int8_t an_targxferval; |
||
284 | u_int8_t res3; |
||
285 | |||
286 | u_int8_t an_fcloopidcounter; /* FC/AL loop ID changed */
|
||
287 | u_int8_t an_fcloopidpdrvid; |
||
288 | u_int8_t an_fcloopid0; |
||
289 | u_int8_t an_fcloopid1; |
||
290 | |||
291 | u_int8_t an_fcloopstatecounter; /* FC/AL loop status changed */
|
||
292 | u_int8_t an_fcloopstate0; |
||
293 | u_int8_t an_fcloopstate1; |
||
294 | u_int8_t res4; |
||
295 | } __packed; |
||
296 | |||
297 | /* Enquiry3 structure. */
|
||
298 | struct amr_enquiry3 {
|
||
299 | u_int32_t ae_datasize; /* valid data size in this structure */
|
||
300 | union { /* event notify structure */ |
||
301 | struct amr_notify n;
|
||
302 | u_int8_t pad[0x80];
|
||
303 | } ae_notify; |
||
304 | u_int8_t ae_rebuildrate; /* current rebuild rate in % */
|
||
305 | u_int8_t ae_cacheflush; /* flush interval in seconds */
|
||
306 | u_int8_t ae_sensealert; |
||
307 | u_int8_t ae_driveinsertcount; /* count of inserted drives */
|
||
308 | u_int8_t ae_batterystatus; |
||
309 | u_int8_t ae_numldrives; |
||
310 | u_int8_t ae_reconstate[AMR_40LD_MAXDRIVES / 8]; /* reconstruction state */ |
||
311 | u_int16_t ae_opstatus[AMR_40LD_MAXDRIVES / 8]; /* operation status per drive */ |
||
312 | u_int32_t ae_drivesize[AMR_40LD_MAXDRIVES]; /* logical drive size */
|
||
313 | u_int8_t ae_driveprop[AMR_40LD_MAXDRIVES]; /* logical drive properties */
|
||
314 | u_int8_t ae_drivestate[AMR_40LD_MAXDRIVES]; /* physical drive state */
|
||
315 | u_int8_t ae_pdrivestate[AMR_40LD_MAXPHYSDRIVES]; /* physical drive state */
|
||
316 | u_int16_t ae_driveformat[AMR_40LD_MAXPHYSDRIVES]; |
||
317 | u_int8_t ae_targxfer[80]; /* physical drive transfer rates */ |
||
318 | |||
319 | u_int8_t res1[263]; /* pad to 1024 bytes */ |
||
320 | } __packed; |
||
321 | |||
322 | /*
|
||
323 | * Mailbox and command structures.
|
||
324 | */
|
||
325 | |||
326 | struct amr_mailbox_cmd {
|
||
327 | u_int8_t mb_command; |
||
328 | u_int8_t mb_ident; |
||
329 | u_int16_t mb_blkcount; |
||
330 | u_int32_t mb_lba; |
||
331 | u_int32_t mb_physaddr; |
||
332 | u_int8_t mb_drive; |
||
333 | u_int8_t mb_nsgelem; |
||
334 | u_int8_t res1; |
||
335 | u_int8_t mb_busy; |
||
336 | } __packed; |
||
337 | |||
338 | struct amr_mailbox_resp {
|
||
339 | u_int8_t mb_nstatus; |
||
340 | u_int8_t mb_status; |
||
341 | u_int8_t mb_completed[46];
|
||
342 | } __packed; |
||
343 | |||
344 | struct amr_mailbox {
|
||
345 | u_int32_t mb_res1[3];
|
||
346 | u_int32_t mb_segment; |
||
347 | struct amr_mailbox_cmd mb_cmd;
|
||
348 | struct amr_mailbox_resp mb_resp;
|
||
349 | u_int8_t mb_poll; |
||
350 | u_int8_t mb_ack; |
||
351 | u_int8_t res2[62]; /* Pad to 128+16 bytes. */ |
||
352 | } __packed; |
||
353 | |||
354 | struct amr_mailbox_ioctl {
|
||
355 | u_int8_t mb_command; |
||
356 | u_int8_t mb_ident; |
||
357 | u_int8_t mb_channel; |
||
358 | u_int8_t mb_param; |
||
359 | u_int8_t mb_pad[4];
|
||
360 | u_int32_t mb_physaddr; |
||
361 | u_int8_t mb_drive; |
||
362 | u_int8_t mb_nsgelem; |
||
363 | u_int8_t res1; |
||
364 | u_int8_t mb_busy; |
||
365 | u_int8_t mb_nstatus; |
||
366 | u_int8_t mb_completed[46];
|
||
367 | u_int8_t mb_poll; |
||
368 | u_int8_t mb_ack; |
||
369 | u_int8_t res4[16];
|
||
370 | } __packed; |
||
371 | |||
372 | struct amr_sgentry {
|
||
373 | u_int32_t sge_addr; |
||
374 | u_int32_t sge_count; |
||
375 | } __packed; |
||
376 | |||
377 | struct amr_passthrough {
|
||
378 | u_int8_t ap_timeout:3;
|
||
379 | u_int8_t ap_ars:1;
|
||
380 | u_int8_t ap_dummy:3;
|
||
381 | u_int8_t ap_islogical:1;
|
||
382 | u_int8_t ap_logical_drive_no; |
||
383 | u_int8_t ap_channel; |
||
384 | u_int8_t ap_scsi_id; |
||
385 | u_int8_t ap_queue_tag; |
||
386 | u_int8_t ap_queue_action; |
||
387 | u_int8_t ap_cdb[AMR_MAX_CDB_LEN]; |
||
388 | u_int8_t ap_cdb_length; |
||
389 | u_int8_t ap_request_sense_length; |
||
390 | u_int8_t ap_request_sense_area[AMR_MAX_REQ_SENSE_LEN]; |
||
391 | u_int8_t ap_no_sg_elements; |
||
392 | u_int8_t ap_scsi_status; |
||
393 | u_int32_t ap_data_transfer_address; |
||
394 | u_int32_t ap_data_transfer_length; |
||
395 | } __packed; |
||
396 | |||
397 | /*
|
||
398 | * "Quartz" i960 PCI bridge interface.
|
||
399 | */
|
||
400 | |||
401 | #define AMR_QUARTZ_SIG_REG 0xa0 |
||
402 | #define AMR_QUARTZ_SIG0 0xcccc |
||
403 | #define AMR_QUARTZ_SIG1 0x3344 |
||
404 | |||
405 | /* Doorbell registers. */
|
||
406 | #define AMR_QREG_IDB 0x20 |
||
407 | #define AMR_QREG_ODB 0x2c |
||
408 | |||
409 | #define AMR_QIDB_SUBMIT 0x00000001 /* mailbox ready for work */ |
||
410 | #define AMR_QIDB_ACK 0x00000002 /* mailbox done */ |
||
411 | #define AMR_QODB_READY 0x10001234 /* work ready to be processed */ |
||
412 | |||
413 | /*
|
||
414 | * Old-style ("standard") ASIC bridge interface.
|
||
415 | */
|
||
416 | |||
417 | /* I/O registers. */
|
||
418 | #define AMR_SREG_CMD 0x10 /* Command/ack register (w) */ |
||
419 | #define AMR_SREG_MBOX_BUSY 0x10 /* Mailbox status (r) */ |
||
420 | #define AMR_SREG_TOGL 0x11 /* Interrupt enable */ |
||
421 | #define AMR_SREG_MBOX 0x14 /* Mailbox physical address */ |
||
422 | #define AMR_SREG_MBOX_ENABLE 0x18 /* Atomic mailbox address enable */ |
||
423 | #define AMR_SREG_INTR 0x1a /* Interrupt status */ |
||
424 | |||
425 | /* I/O magic numbers. */
|
||
426 | #define AMR_SCMD_POST 0x10 /* in SCMD to initiate action on mailbox */ |
||
427 | #define AMR_SCMD_ACKINTR 0x08 /* in SCMD to ack mailbox retrieved */ |
||
428 | #define AMR_STOGL_ENABLE 0xc0 /* in STOGL */ |
||
429 | #define AMR_SINTR_VALID 0x40 /* in SINTR */ |
||
430 | #define AMR_SMBOX_BUSY_FLAG 0x10 /* in SMBOX_BUSY */ |
||
431 | #define AMR_SMBOX_ENABLE_ADDR 0x00 /* in SMBOX_ENABLE */ |
||
432 | |||
433 | #endif /* !_PCI_AMRREG_H_ */ |