Home | History | Annotate | Line # | Download | only in ic
aacvar.h revision 1.11
      1  1.11     perry /*	$NetBSD: aacvar.h,v 1.11 2007/12/15 00:39:27 perry Exp $	*/
      2   1.1        ad 
      3   1.1        ad /*-
      4   1.1        ad  * Copyright (c) 2002 The NetBSD Foundation, Inc.
      5   1.1        ad  * All rights reserved.
      6   1.1        ad  *
      7   1.1        ad  * This code is derived from software contributed to The NetBSD Foundation
      8   1.1        ad  * by Andrew Doran.
      9   1.1        ad  *
     10   1.1        ad  * Redistribution and use in source and binary forms, with or without
     11   1.1        ad  * modification, are permitted provided that the following conditions
     12   1.1        ad  * are met:
     13   1.1        ad  * 1. Redistributions of source code must retain the above copyright
     14   1.1        ad  *    notice, this list of conditions and the following disclaimer.
     15   1.1        ad  * 2. Redistributions in binary form must reproduce the above copyright
     16   1.1        ad  *    notice, this list of conditions and the following disclaimer in the
     17   1.1        ad  *    documentation and/or other materials provided with the distribution.
     18   1.1        ad  * 3. All advertising materials mentioning features or use of this software
     19   1.1        ad  *    must display the following acknowledgement:
     20   1.1        ad  *        This product includes software developed by the NetBSD
     21   1.1        ad  *        Foundation, Inc. and its contributors.
     22   1.1        ad  * 4. Neither the name of The NetBSD Foundation nor the names of its
     23   1.1        ad  *    contributors may be used to endorse or promote products derived
     24   1.1        ad  *    from this software without specific prior written permission.
     25   1.1        ad  *
     26   1.1        ad  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     27   1.1        ad  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     28   1.1        ad  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     29   1.1        ad  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     30   1.1        ad  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     31   1.1        ad  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     32   1.1        ad  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     33   1.1        ad  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     34   1.1        ad  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     35   1.1        ad  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     36   1.1        ad  * POSSIBILITY OF SUCH DAMAGE.
     37   1.1        ad  */
     38   1.1        ad 
     39   1.1        ad /*-
     40   1.1        ad  * Copyright (c) 2000 Michael Smith
     41   1.1        ad  * Copyright (c) 2000 BSDi
     42   1.1        ad  * Copyright (c) 2000 Niklas Hallqvist
     43   1.1        ad  * All rights reserved.
     44   1.1        ad  *
     45   1.1        ad  * Redistribution and use in source and binary forms, with or without
     46   1.1        ad  * modification, are permitted provided that the following conditions
     47   1.1        ad  * are met:
     48   1.1        ad  * 1. Redistributions of source code must retain the above copyright
     49   1.1        ad  *    notice, this list of conditions and the following disclaimer.
     50   1.1        ad  * 2. Redistributions in binary form must reproduce the above copyright
     51   1.1        ad  *    notice, this list of conditions and the following disclaimer in the
     52   1.1        ad  *    documentation and/or other materials provided with the distribution.
     53   1.1        ad  *
     54   1.1        ad  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
     55   1.1        ad  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     56   1.1        ad  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     57   1.1        ad  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
     58   1.1        ad  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     59   1.1        ad  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     60   1.1        ad  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     61   1.1        ad  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     62   1.1        ad  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     63   1.1        ad  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     64   1.1        ad  * SUCH DAMAGE.
     65   1.1        ad  *
     66   1.1        ad  *	from FreeBSD: aacvar.h,v 1.1 2000/09/13 03:20:34 msmith Exp
     67   1.1        ad  *	via OpenBSD: aacvar.h,v 1.2 2002/03/14 01:26:53 millert Exp
     68   1.1        ad  */
     69   1.1        ad 
     70   1.1        ad #ifndef _PCI_AACVAR_H_
     71   1.1        ad #define	_PCI_AACVAR_H_
     72   1.1        ad 
     73   1.1        ad /* Debugging */
     74   1.1        ad #ifdef AAC_DEBUG
     75   1.1        ad #define AAC_DPRINTF(mask, args) if ((aac_debug & (mask)) != 0) printf args
     76   1.1        ad #define AAC_D_INTR	0x01
     77   1.1        ad #define AAC_D_MISC	0x02
     78   1.1        ad #define AAC_D_CMD	0x04
     79   1.1        ad #define AAC_D_QUEUE	0x08
     80   1.1        ad #define AAC_D_IO	0x10
     81   1.1        ad extern int aac_debug;
     82   1.1        ad 
     83  1.11     perry #define AAC_PRINT_FIB(sc, fib)	aac_print_fib((sc), (fib), __func__)
     84   1.1        ad #else
     85   1.1        ad #define AAC_DPRINTF(mask, args)
     86   1.1        ad #define AAC_PRINT_FIB(sc, fib)
     87   1.1        ad #endif
     88   1.1        ad 
     89   1.1        ad struct aac_code_lookup {
     90   1.7  christos 	const char	*string;
     91   1.1        ad 	u_int32_t code;
     92   1.1        ad };
     93   1.1        ad 
     94   1.1        ad extern const struct	 aac_code_lookup aac_command_status_table[];
     95   1.1        ad extern const struct	 aac_code_lookup aac_container_types[];
     96   1.1        ad 
     97   1.1        ad struct aac_softc;
     98   1.1        ad 
     99   1.1        ad /*
    100   1.1        ad  * We allocate a small set of FIBs for the adapter to use to send us messages.
    101   1.1        ad  */
    102   1.1        ad #define AAC_ADAPTER_FIBS	8
    103   1.1        ad 
    104   1.1        ad /*
    105   1.9    briggs  * FIBs are allocated in page-size chunks and can grow up to the 512
    106   1.9    briggs  * limit imposed by the hardware.
    107  1.10    briggs  * XXX -- There should be some way to allocate these as-needed without
    108  1.10    briggs  *        allocating them at interrupt time.  For now, though, allocate
    109  1.10    briggs  *	  all that we'll ever need up-front.
    110   1.9    briggs  */
    111  1.10    briggs #define AAC_PREALLOCATE_FIBS(sc)	((sc)->sc_max_fibs)
    112   1.9    briggs 
    113   1.9    briggs /*
    114   1.1        ad  * Firmware messages are passed in the printf buffer.
    115   1.1        ad  */
    116   1.1        ad #define AAC_PRINTF_BUFSIZE	256
    117   1.1        ad 
    118   1.1        ad /*
    119   1.1        ad  * We wait this many seconds for the adapter to come ready if it is still
    120   1.1        ad  * booting.
    121   1.1        ad  */
    122   1.1        ad #define AAC_BOOT_TIMEOUT	(3 * 60)
    123   1.1        ad 
    124   1.1        ad /*
    125   1.1        ad  * Wait this long for a lost interrupt to get detected.
    126   1.1        ad  */
    127   1.1        ad #define AAC_WATCH_TIMEOUT	10000		/* 10000 * 1ms = 10s */
    128   1.1        ad 
    129   1.1        ad /*
    130   1.1        ad  * Timeout for immediate commands.
    131   1.1        ad  */
    132   1.1        ad #define AAC_IMMEDIATE_TIMEOUT	30
    133   1.1        ad 
    134   1.1        ad /*
    135   1.1        ad  * Delay 20ms after the qnotify in sync operations.  Experimentally deduced.
    136   1.1        ad  */
    137   1.1        ad #define AAC_SYNC_DELAY		20000
    138   1.1        ad 
    139   1.1        ad /*
    140   1.9    briggs  * sc->sc_max_sgs is the number of scatter-gather elements we can fit
    141   1.9    briggs  * in one block I/O request (64-bit or 32-bit, depending) FIB, or the
    142   1.9    briggs  * maximum number that the firmware will accept.  We subtract one to
    143   1.9    briggs  * deal with requests that do not start on an even page boundary.
    144   1.1        ad  */
    145   1.9    briggs #define	AAC_MAX_XFER(sc)	(((sc)->sc_max_sgs - 1) * PAGE_SIZE)
    146   1.1        ad 
    147   1.1        ad /*
    148   1.1        ad  * Fixed sector size.
    149   1.1        ad  */
    150   1.1        ad #define	AAC_SECTOR_SIZE		512
    151   1.1        ad 
    152   1.1        ad /*
    153   1.9    briggs  * Number of CCBs to reserve for control operations.
    154   1.1        ad  */
    155   1.9    briggs #define	AAC_NCCBS_RESERVE	8
    156   1.1        ad 
    157   1.1        ad /*
    158   1.1        ad  * Quirk listings.
    159   1.1        ad  */
    160   1.6    briggs #define AAC_QUIRK_PERC2QC	(1 << 0)	/* Dell PERC 2QC */
    161   1.6    briggs #define AAC_QUIRK_SG_64BIT	(1 << 4)	/* Use 64-bit S/G addresses */
    162   1.6    briggs #define AAC_QUIRK_4GB_WINDOW	(1 << 5)	/* Device can access host mem
    163   1.6    briggs 						 * in 2GB-4GB range */
    164   1.6    briggs #define AAC_QUIRK_NO4GB		(1 << 6)	/* Can't access host mem >2GB */
    165   1.6    briggs #define AAC_QUIRK_256FIBS	(1 << 7)	/* Can only handle 256 cmds */
    166   1.6    briggs #define AAC_QUIRK_BROKEN_MMAP	(1 << 8)	/* Broken HostPhysMemPages */
    167   1.9    briggs #define AAC_QUIRK_NEW_COMM	(1 << 11)	/* New comm. i/f supported */
    168   1.9    briggs #define AAC_QUIRK_RAW_IO	(1 << 12)	/* Raw I/O interface */
    169   1.9    briggs #define AAC_QUIRK_ARRAY_64BIT	(1 << 13)	/* 64-bit array size */
    170   1.6    briggs 
    171   1.1        ad 
    172   1.1        ad /*
    173   1.1        ad  * We gather a number of adapter-visible items into a single structure.
    174   1.1        ad  *
    175   1.2       wiz  * The ordering of this structure may be important; we copy the Linux driver:
    176   1.1        ad  *
    177   1.1        ad  * Adapter FIBs
    178   1.1        ad  * Init struct
    179   1.1        ad  * Queue headers (Comm Area)
    180   1.1        ad  * Printf buffer
    181   1.1        ad  *
    182   1.1        ad  * In addition, we add:
    183   1.1        ad  * Sync Fib
    184   1.1        ad  */
    185   1.1        ad struct aac_common {
    186   1.1        ad 	/* fibs for the controller to send us messages */
    187   1.1        ad 	struct aac_fib ac_fibs[AAC_ADAPTER_FIBS];
    188   1.1        ad 
    189   1.1        ad 	/* the init structure */
    190   1.1        ad 	struct aac_adapter_init	ac_init;
    191   1.1        ad 
    192   1.1        ad 	/* arena within which the queue structures are kept */
    193   1.1        ad 	u_int8_t ac_qbuf[sizeof(struct aac_queue_table) + AAC_QUEUE_ALIGN];
    194   1.1        ad 
    195   1.1        ad 	/* buffer for text messages from the controller */
    196   1.1        ad 	char	ac_printf[AAC_PRINTF_BUFSIZE];
    197   1.5     perry 
    198   1.1        ad 	/* fib for synchronous commands */
    199   1.1        ad 	struct aac_fib ac_sync_fib;
    200   1.1        ad };
    201   1.1        ad 
    202   1.9    briggs struct aac_ccb;
    203   1.9    briggs 
    204   1.1        ad /*
    205   1.1        ad  * Interface operations
    206   1.1        ad  */
    207   1.1        ad struct aac_interface {
    208   1.1        ad 	int	(*aif_get_fwstatus)(struct aac_softc *);
    209   1.1        ad 	void	(*aif_qnotify)(struct aac_softc *, int);
    210   1.1        ad 	int	(*aif_get_istatus)(struct aac_softc *);
    211   1.1        ad 	void	(*aif_set_istatus)(struct aac_softc *, int);
    212   1.1        ad 	void	(*aif_set_mailbox)(struct aac_softc *, u_int32_t,
    213   1.1        ad 				   u_int32_t, u_int32_t, u_int32_t, u_int32_t);
    214   1.6    briggs 	uint32_t (*aif_get_mailbox)(struct aac_softc *, int);
    215   1.1        ad 	void	(*aif_set_interrupts)(struct aac_softc *, int);
    216   1.9    briggs 	int	(*aif_send_command)(struct aac_softc *, struct aac_ccb *);
    217   1.9    briggs 	int	(*aif_get_outb_queue)(struct aac_softc *);
    218   1.9    briggs 	void	(*aif_set_outb_queue)(struct aac_softc *, int);
    219   1.1        ad };
    220   1.1        ad 
    221   1.1        ad #define AAC_GET_FWSTATUS(sc)		((sc)->sc_if.aif_get_fwstatus(sc))
    222   1.1        ad #define AAC_QNOTIFY(sc, qbit) \
    223   1.1        ad 	((sc)->sc_if.aif_qnotify((sc), (qbit)))
    224   1.1        ad #define AAC_GET_ISTATUS(sc)		((sc)->sc_if.aif_get_istatus(sc))
    225   1.1        ad #define AAC_CLEAR_ISTATUS(sc, mask) \
    226   1.1        ad 	((sc)->sc_if.aif_set_istatus((sc), (mask)))
    227   1.1        ad #define AAC_SET_MAILBOX(sc, command, arg0, arg1, arg2, arg3) \
    228   1.1        ad 	do {								\
    229   1.1        ad 		((sc)->sc_if.aif_set_mailbox((sc), (command), (arg0),	\
    230   1.1        ad 		    (arg1), (arg2), (arg3)));				\
    231   1.1        ad 	} while(0)
    232   1.6    briggs #define AAC_GET_MAILBOX(sc, mb)		((sc)->sc_if.aif_get_mailbox(sc, mb))
    233   1.6    briggs #define AAC_GET_MAILBOXSTATUS(sc)	(AAC_GET_MAILBOX(sc, 0))
    234   1.1        ad #define	AAC_MASK_INTERRUPTS(sc)	\
    235   1.1        ad 	((sc)->sc_if.aif_set_interrupts((sc), 0))
    236   1.1        ad #define AAC_UNMASK_INTERRUPTS(sc) \
    237   1.1        ad 	((sc)->sc_if.aif_set_interrupts((sc), 1))
    238   1.9    briggs #define AAC_SEND_COMMAND(sc, cm) \
    239   1.9    briggs 	((sc)->sc_if.aif_send_command((sc), cm))
    240   1.9    briggs #define AAC_GET_OUTB_QUEUE(sc) \
    241   1.9    briggs 	((sc)->sc_if.aif_get_outb_queue((sc)))
    242   1.9    briggs #define AAC_SET_OUTB_QUEUE(sc, idx) \
    243   1.9    briggs 	((sc)->sc_if.aif_set_outb_queue((sc), (idx)))
    244   1.1        ad 
    245   1.1        ad #define AAC_SETREG4(sc, reg, val) \
    246   1.1        ad 	bus_space_write_4((sc)->sc_memt, (sc)->sc_memh, (reg), (val))
    247   1.1        ad #define AAC_GETREG4(sc, reg) \
    248   1.1        ad 	bus_space_read_4((sc)->sc_memt, (sc)->sc_memh, (reg))
    249   1.1        ad #define AAC_SETREG2(sc, reg, val) \
    250   1.1        ad 	bus_space_write_2((sc)->sc_memt, (sc)->sc_memh, (reg), (val))
    251   1.1        ad #define AAC_GETREG2(sc, reg) \
    252   1.1        ad 	bus_space_read_2((sc)->sc_memt, (sc)->sc_memh, (reg))
    253   1.1        ad #define AAC_SETREG1(sc, reg, val) \
    254   1.1        ad 	bus_space_write_1((sc)->sc_memt, (sc)->sc_memh, (reg), (val))
    255   1.1        ad #define AAC_GETREG1(sc, reg) \
    256   1.1        ad 	bus_space_read_1((sc)->sc_memt, (sc)->sc_memh, (reg))
    257   1.1        ad 
    258   1.9    briggs struct aac_fibmap {
    259   1.9    briggs 	TAILQ_ENTRY(aac_fibmap)	fm_link;
    260   1.9    briggs 	struct aac_fib		*fm_fibs;
    261   1.9    briggs 	bus_dma_segment_t	fm_fibseg;
    262   1.9    briggs 	bus_dmamap_t		fm_fibmap;
    263   1.9    briggs 	struct aac_ccb		*fm_ccbs;
    264   1.9    briggs };
    265   1.1        ad 
    266   1.1        ad /*
    267   1.9    briggs  * A command control block, one for each corresponding command index
    268   1.9    briggs  * of the controller.
    269   1.1        ad  */
    270   1.1        ad struct aac_ccb {
    271   1.1        ad 	SIMPLEQ_ENTRY(aac_ccb)	ac_chain;
    272   1.1        ad 
    273   1.1        ad 	struct aac_fib		*ac_fib;
    274   1.9    briggs 	struct aac_fibmap	*ac_fibmap;
    275   1.1        ad 	bus_addr_t		ac_fibphys;
    276   1.1        ad 	bus_dmamap_t		ac_dmamap_xfer;
    277   1.1        ad 
    278   1.1        ad 	void			*ac_data;
    279   1.1        ad 	size_t			ac_datalen;
    280   1.1        ad 	u_int			ac_flags;
    281   1.1        ad 
    282   1.1        ad 	void			(*ac_intr)(struct aac_ccb *);
    283   1.1        ad 	struct device		*ac_device;
    284   1.1        ad 	void			*ac_context;
    285   1.1        ad };
    286   1.1        ad #define AAC_CCB_MAPPED	 	0x01
    287   1.1        ad #define AAC_CCB_COMPLETED 	0x02
    288   1.1        ad #define AAC_CCB_DATA_IN		0x04
    289   1.1        ad #define AAC_CCB_DATA_OUT	0x08
    290   1.1        ad 
    291   1.1        ad struct aac_drive {
    292   1.1        ad 	u_int	hd_present;
    293   1.1        ad 	u_int	hd_devtype;
    294   1.1        ad 	u_int	hd_size;
    295   1.1        ad };
    296   1.1        ad 
    297   1.1        ad /*
    298   1.1        ad  * Per-controller structure.
    299   1.1        ad  */
    300   1.1        ad struct aac_softc {
    301   1.1        ad 	struct device		sc_dv;
    302   1.1        ad 	void			*sc_ih;
    303   1.1        ad 	bus_space_tag_t		sc_memt;
    304   1.1        ad 	bus_space_handle_t	sc_memh;
    305   1.1        ad 	bus_dma_tag_t		sc_dmat;
    306   1.9    briggs 	bus_size_t		sc_regsize;
    307   1.1        ad 
    308   1.1        ad 	struct FsaRevision	sc_revision;
    309   1.1        ad 	int			sc_hwif;
    310   1.1        ad 	int			sc_quirks;
    311   1.1        ad 	struct aac_interface	sc_if;
    312   1.1        ad 
    313   1.9    briggs 	u_int32_t		sc_max_fibs;
    314   1.9    briggs 	u_int32_t		sc_max_fibs_alloc;
    315   1.9    briggs 	u_int32_t		sc_max_sectors;
    316   1.9    briggs 	u_int32_t		sc_max_fib_size;
    317   1.9    briggs 	u_int32_t		sc_max_sgs;
    318   1.9    briggs 
    319   1.9    briggs 	u_int32_t		sc_total_fibs;
    320   1.9    briggs 	TAILQ_HEAD(,aac_fibmap)	sc_fibmap_tqh;
    321   1.9    briggs 
    322   1.1        ad 	struct aac_common	*sc_common;
    323   1.1        ad 	bus_dma_segment_t	sc_common_seg;
    324   1.1        ad 	bus_dmamap_t		sc_common_dmamap;
    325   1.9    briggs 	struct aac_fib		*sc_aif_fib;
    326   1.1        ad 
    327   1.1        ad 	struct aac_ccb		*sc_ccbs;
    328   1.1        ad 	SIMPLEQ_HEAD(, aac_ccb)	sc_ccb_free;
    329   1.1        ad 	SIMPLEQ_HEAD(, aac_ccb)	sc_ccb_queue;
    330   1.1        ad 	SIMPLEQ_HEAD(, aac_ccb)	sc_ccb_complete;
    331   1.1        ad 
    332   1.1        ad 	struct aac_queue_table	*sc_queues;
    333   1.1        ad 	struct aac_queue_entry	*sc_qentries[AAC_QUEUE_COUNT];
    334   1.1        ad 	struct aac_drive	sc_hdr[AAC_MAX_CONTAINERS];
    335   1.1        ad 	int			sc_nunits;
    336   1.1        ad 	int			sc_flags;
    337   1.6    briggs 	uint32_t		sc_supported_options;
    338   1.9    briggs 
    339   1.9    briggs 	/* Set by parent */
    340   1.9    briggs 	int			(*sc_intr_set)(struct aac_softc *,
    341   1.9    briggs 						int (*)(void *), void *);
    342   1.1        ad };
    343   1.1        ad #define AAC_HWIF_I960RX		0
    344   1.1        ad #define AAC_HWIF_STRONGARM	1
    345   1.9    briggs #define AAC_HWIF_FALCON		2
    346   1.9    briggs #define AAC_HWIF_RKT		3
    347   1.9    briggs #define AAC_HWIF_UNKNOWN	-1
    348   1.1        ad 
    349   1.1        ad #define	AAC_ONLINE		2
    350   1.1        ad 
    351   1.1        ad struct aac_attach_args {
    352   1.1        ad 	int		aaca_unit;
    353   1.1        ad };
    354   1.1        ad 
    355   1.1        ad int	aac_attach(struct aac_softc *);
    356   1.1        ad void	aac_ccb_enqueue(struct aac_softc *, struct aac_ccb *);
    357   1.1        ad void	aac_ccb_free(struct aac_softc *, struct aac_ccb *);
    358   1.1        ad struct aac_ccb *aac_ccb_alloc(struct aac_softc *, int);
    359   1.1        ad int	aac_ccb_map(struct aac_softc *, struct aac_ccb *);
    360   1.1        ad int	aac_ccb_poll(struct aac_softc *, struct aac_ccb *, int);
    361   1.1        ad int	aac_ccb_submit(struct aac_softc *, struct aac_ccb *);
    362   1.1        ad void	aac_ccb_unmap(struct aac_softc *, struct aac_ccb *);
    363   1.1        ad const char	*aac_describe_code(const struct aac_code_lookup *, u_int32_t);
    364   1.1        ad int	aac_intr(void *);
    365   1.1        ad 
    366   1.1        ad #endif	/* !_PCI_AACVAR_H_ */
    367