root / lab4 / .minix-src / include / dev / pci / amrreg.h @ 14
History | View | Annotate | Download (13.7 KB)
1 |
/* $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_ */ |