[BACK]Return to isavar.h CVS log [TXT][DIR] Up to [local] / sys / dev / isa

Annotation of sys/dev/isa/isavar.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: isavar.h,v 1.52 2007/01/06 20:17:43 miod Exp $        */
        !             2: /*     $NetBSD: isavar.h,v 1.26 1997/06/06 23:43:57 thorpej Exp $      */
        !             3:
        !             4: /*-
        !             5:  * Copyright (c) 1997 The NetBSD Foundation, Inc.
        !             6:  * All rights reserved.
        !             7:  *
        !             8:  * This code is derived from software contributed to The NetBSD Foundation
        !             9:  * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
        !            10:  * NASA Ames Research Center.
        !            11:  *
        !            12:  * Redistribution and use in source and binary forms, with or without
        !            13:  * modification, are permitted provided that the following conditions
        !            14:  * are met:
        !            15:  * 1. Redistributions of source code must retain the above copyright
        !            16:  *    notice, this list of conditions and the following disclaimer.
        !            17:  * 2. Redistributions in binary form must reproduce the above copyright
        !            18:  *    notice, this list of conditions and the following disclaimer in the
        !            19:  *    documentation and/or other materials provided with the distribution.
        !            20:  * 3. All advertising materials mentioning features or use of this software
        !            21:  *    must display the following acknowledgement:
        !            22:  *     This product includes software developed by the NetBSD
        !            23:  *     Foundation, Inc. and its contributors.
        !            24:  * 4. Neither the name of The NetBSD Foundation nor the names of its
        !            25:  *    contributors may be used to endorse or promote products derived
        !            26:  *    from this software without specific prior written permission.
        !            27:  *
        !            28:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
        !            29:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
        !            30:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
        !            31:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
        !            32:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
        !            33:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
        !            34:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
        !            35:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
        !            36:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
        !            37:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        !            38:  * POSSIBILITY OF SUCH DAMAGE.
        !            39:  */
        !            40:
        !            41: /*
        !            42:  * Copyright (c) 1996 Christos Zoulas.  All rights reserved.
        !            43:  *
        !            44:  * Redistribution and use in source and binary forms, with or without
        !            45:  * modification, are permitted provided that the following conditions
        !            46:  * are met:
        !            47:  * 1. Redistributions of source code must retain the above copyright
        !            48:  *    notice, this list of conditions and the following disclaimer.
        !            49:  * 2. Redistributions in binary form must reproduce the above copyright
        !            50:  *    notice, this list of conditions and the following disclaimer in the
        !            51:  *    documentation and/or other materials provided with the distribution.
        !            52:  * 3. All advertising materials mentioning features or use of this software
        !            53:  *    must display the following acknowledgement:
        !            54:  *     This product includes software developed by Christos Zoulas.
        !            55:  * 4. The name of the author may not be used to endorse or promote products
        !            56:  *    derived from this software without specific prior written permission.
        !            57:  *
        !            58:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            59:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            60:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            61:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            62:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            63:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            64:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        !            65:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        !            66:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
        !            67:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            68:  */
        !            69:
        !            70: /*
        !            71:  * Copyright (c) 1995 Chris G. Demetriou
        !            72:  * Copyright (c) 1992 Berkeley Software Design, Inc.
        !            73:  * All rights reserved.
        !            74:  *
        !            75:  * Redistribution and use in source and binary forms, with or without
        !            76:  * modification, are permitted provided that the following conditions
        !            77:  * are met:
        !            78:  * 1. Redistributions of source code must retain the above copyright
        !            79:  *    notice, this list of conditions and the following disclaimer.
        !            80:  * 2. Redistributions in binary form must reproduce the above copyright
        !            81:  *    notice, this list of conditions and the following disclaimer in the
        !            82:  *    documentation and/or other materials provided with the distribution.
        !            83:  * 3. All advertising materials mentioning features or use of this software
        !            84:  *    must display the following acknowledgement:
        !            85:  *     This product includes software developed by Berkeley Software
        !            86:  *     Design, Inc.
        !            87:  * 4. The name of Berkeley Software Design must not be used to endorse
        !            88:  *    or promote products derived from this software without specific
        !            89:  *    prior written permission.
        !            90:  *
        !            91:  * THIS SOFTWARE IS PROVIDED BY BERKELEY SOFTWARE DESIGN, INC. ``AS IS'' AND
        !            92:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            93:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            94:  * ARE DISCLAIMED.  IN NO EVENT SHALL BERKELEY SOFTWARE DESIGN, INC. BE LIABLE
        !            95:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            96:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            97:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            98:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            99:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !           100:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !           101:  * SUCH DAMAGE.
        !           102:  *
        !           103:  *     BSDI Id: isavar.h,v 1.5 1992/12/01 18:06:00 karels Exp
        !           104:  */
        !           105:
        !           106: #ifndef _DEV_ISA_ISAVAR_H_
        !           107: #define        _DEV_ISA_ISAVAR_H_
        !           108:
        !           109: /*
        !           110:  * Definitions for ISA and ISA PnP autoconfiguration.
        !           111:  */
        !           112:
        !           113: #include <sys/queue.h>
        !           114: #include <machine/bus.h>
        !           115:
        !           116: #ifndef NISADMA
        !           117: #include "isadma.h"
        !           118: #endif
        !           119:
        !           120: /*
        !           121:  * Structures and definitions needed by the machine-dependent header.
        !           122:  */
        !           123: struct isabus_attach_args;
        !           124:
        !           125: #if defined(__alpha__)
        !           126: #include <alpha/isa/isa_machdep.h>
        !           127: #elif defined(__cats__)
        !           128: #include <cats/isa/isa_machdep.h>
        !           129: #elif defined(hp300)
        !           130: #include <hp300/dev/isa_machdep.h>
        !           131: #elif defined(__i386__)
        !           132: #include <i386/isa/isa_machdep.h>
        !           133: #elif defined(__mvmeppc__)
        !           134: #include <mvmeppc/isa/isa_machdep.h>
        !           135: #elif defined(__powerpc__)
        !           136: #include <powerpc/isa/isa_machdep.h>
        !           137: #else
        !           138: #include <machine/isa_machdep.h>
        !           139: #endif
        !           140:
        !           141: #include "isapnp.h"
        !           142:
        !           143: #if NISAPNP > 0
        !           144: /*
        !           145:  * Structures and definitions needed by the machine-dependent header.
        !           146:  */
        !           147: struct isapnp_softc;
        !           148:
        !           149: #if defined(__alpha__)
        !           150: #include <alpha/isa/isapnp_machdep.h>
        !           151: #elif defined(__i386__)
        !           152: #include <i386/isa/isapnp_machdep.h>
        !           153: #else
        !           154: #error COMPILING ISAPNP FOR UNSUPPORTED MACHINE.
        !           155: #endif
        !           156: #endif /* NISAPNP */
        !           157:
        !           158: # define ISAPNP_WRITE_ADDR(sc, v) \
        !           159:     bus_space_write_1(sc->sc_iot, sc->sc_addr_ioh, 0, v)
        !           160: # define ISAPNP_WRITE_DATA(sc, v) \
        !           161:     bus_space_write_1(sc->sc_iot, sc->sc_wrdata_ioh, 0, v)
        !           162: # define ISAPNP_READ_DATA(sc) \
        !           163:     bus_space_read_1(sc->sc_iot, sc->sc_read_ioh, 0)
        !           164:
        !           165: # define ISAPNP_MALLOC(a) malloc(a, M_DEVBUF, M_WAITOK)
        !           166: # define ISAPNP_FREE(a) free(a, M_DEVBUF)
        !           167: # define ISAPNP_CLONE_SETUP(dest, src) \
        !           168:        do { \
        !           169:                bzero((dest), sizeof(*(dest))); \
        !           170:                (dest)->ia_ic = (src)->ia_ic; \
        !           171:        } while (0)
        !           172:
        !           173: #ifndef _DEV_ISA_ISAPNPREG_H_
        !           174: /*
        !           175:  * `reg' defines needed only for these structures.
        !           176:  */
        !           177: #define ISAPNP_MAX_CARDS       8
        !           178: #define ISAPNP_MAX_IDENT       32
        !           179: #define ISAPNP_MAX_DEVCLASS    16
        !           180: #define ISAPNP_SERIAL_SIZE     9
        !           181:
        !           182: #define ISAPNP_NUM_MEM         4
        !           183: #define ISAPNP_NUM_IO          8
        !           184: #define ISAPNP_NUM_IRQ         16
        !           185: #define ISAPNP_NUM_DRQ         8
        !           186: #define ISAPNP_NUM_MEM32       4
        !           187: #endif /* _DEV_ISA_ISAPNPREG_H_ */
        !           188:
        !           189: /*
        !           190:  * ISA PnP-specific structures.
        !           191:  */
        !           192: struct isapnp_softc {
        !           193:        struct device           sc_dev;
        !           194:        TAILQ_HEAD(, isadev)
        !           195:                sc_subdevs;             /* list of all children */
        !           196:
        !           197:        bus_space_tag_t sc_iot;         /* isa io space tag */
        !           198:        bus_space_tag_t sc_memt;        /* isa mem space tag */
        !           199: #if NISADMA > 0
        !           200:        bus_dma_tag_t sc_dmat;          /* isa DMA tag */
        !           201: #endif /* NISADMA > 0 */
        !           202:
        !           203:        int                     sc_read_port;
        !           204:        bus_space_handle_t      sc_addr_ioh;
        !           205:        bus_space_handle_t      sc_wrdata_ioh;
        !           206:        bus_space_handle_t      sc_read_ioh;
        !           207:        bus_space_handle_t      sc_memh;
        !           208:        u_int8_t                sc_ncards;
        !           209:        u_int8_t                sc_id[ISAPNP_MAX_CARDS][ISAPNP_SERIAL_SIZE];
        !           210: };
        !           211:
        !           212: struct isapnp_region {
        !           213:        bus_space_handle_t h;
        !           214:        u_int32_t base;
        !           215:
        !           216:        u_int32_t minbase;
        !           217:        u_int32_t maxbase;
        !           218:        u_int32_t length;
        !           219:        u_int32_t align;
        !           220:        u_int8_t  flags;
        !           221: };
        !           222:
        !           223: struct isapnp_pin {
        !           224:        int16_t   num;
        !           225:        u_int8_t  flags:4;
        !           226:        u_int8_t  type:4;
        !           227:        u_int16_t bits;
        !           228: };
        !           229:
        !           230: struct isapnp_knowndev {
        !           231:        const char pnpid[8];
        !           232:        const char driver[5];
        !           233: };
        !           234:
        !           235: /*
        !           236:  * ISA bus attach arguments
        !           237:  */
        !           238: struct isabus_attach_args {
        !           239:        char    *iba_busname;           /* XXX should be common */
        !           240:        bus_space_tag_t iba_iot;        /* isa i/o space tag */
        !           241:        bus_space_tag_t iba_memt;       /* isa mem space tag */
        !           242: #if NISADMA > 0
        !           243:        bus_dma_tag_t iba_dmat;         /* isa DMA tag */
        !           244: #endif
        !           245:        isa_chipset_tag_t iba_ic;
        !           246: };
        !           247:
        !           248: /*
        !           249:  * ISA/ISA PnP shared driver attach arguments
        !           250:  */
        !           251: struct isa_attach_args {
        !           252:        struct device  *ia_isa;         /* isa device */
        !           253:        bus_space_tag_t ia_iot;         /* isa i/o space tag */
        !           254:        bus_space_tag_t ia_memt;        /* isa mem space tag */
        !           255: #if NISADMA > 0
        !           256:        bus_dma_tag_t ia_dmat;          /* DMA tag */
        !           257: #endif
        !           258:        bus_space_handle_t ia_delaybah; /* i/o handle for `delay port' */
        !           259:
        !           260:        isa_chipset_tag_t ia_ic;
        !           261:
        !           262:        /*
        !           263:         * ISA PnP configuration support.  `ipa_' prefixes are used to denote
        !           264:         * PnP specific members of this structure.
        !           265:         */
        !           266:        struct isa_attach_args  *ipa_sibling;
        !           267:        struct isa_attach_args  *ipa_child;
        !           268:
        !           269:        char    ipa_devident[ISAPNP_MAX_IDENT];
        !           270:        char    ipa_devlogic[ISAPNP_MAX_DEVCLASS];
        !           271:        char    ipa_devcompat[ISAPNP_MAX_DEVCLASS];
        !           272:        char    ipa_devclass[ISAPNP_MAX_DEVCLASS];
        !           273:
        !           274:        u_char  ipa_pref;
        !           275:        u_char  ipa_devnum;
        !           276:
        !           277:        u_char  ipa_nio;
        !           278:        u_char  ipa_nirq;
        !           279:        u_char  ipa_ndrq;
        !           280:        u_char  ipa_nmem;
        !           281:        u_char  ipa_nmem32;
        !           282:
        !           283:        struct isapnp_region    ipa_io[ISAPNP_NUM_IO];
        !           284:        struct isapnp_region    ipa_mem[ISAPNP_NUM_MEM];
        !           285:        struct isapnp_region    ipa_mem32[ISAPNP_NUM_MEM32];
        !           286:        struct isapnp_pin       ipa_irq[ISAPNP_NUM_IRQ];
        !           287:        struct isapnp_pin       ipa_drq[ISAPNP_NUM_DRQ];
        !           288:
        !           289:        /*
        !           290:         * Compatibility defines for ISA drivers.
        !           291:         */
        !           292: #define ia_iobase      ipa_io[0].base
        !           293: #define ia_iosize      ipa_io[0].length
        !           294: #define ia_ioh         ipa_io[0].h
        !           295: #define ia_irq         ipa_irq[0].num
        !           296: #define        ia_drq          ipa_drq[0].num
        !           297: #define        ia_drq2         ipa_drq[1].num
        !           298: #define ia_maddr       ipa_mem[0].base
        !           299: #define ia_msize       ipa_mem[0].length
        !           300: #define ia_memh                ipa_mem[0].h
        !           301:
        !           302:        void    *ia_aux;                /* driver specific */
        !           303: };
        !           304:
        !           305: #define        IOBASEUNK       -1              /* i/o address is unknown */
        !           306: #define        IRQUNK          -1              /* interrupt request line is unknown */
        !           307: #define        DRQUNK          -1              /* DMA request line is unknown */
        !           308: #define        MADDRUNK        -1              /* shared memory address is unknown */
        !           309:
        !           310: /*
        !           311:  * Per-device ISA variables
        !           312:  */
        !           313: struct isadev {
        !           314:        struct  device *id_dev;         /* back pointer to generic */
        !           315:        TAILQ_ENTRY(isadev)
        !           316:                id_bchain;              /* bus chain */
        !           317: };
        !           318:
        !           319: /*
        !           320:  * ISA master bus
        !           321:  */
        !           322: struct isa_softc {
        !           323:        struct  device sc_dev;          /* base device */
        !           324:        TAILQ_HEAD(, isadev)
        !           325:                sc_subdevs;             /* list of all children */
        !           326:
        !           327:        bus_space_tag_t sc_iot;         /* isa io space tag */
        !           328:        bus_space_tag_t sc_memt;        /* isa mem space tag */
        !           329: #if NISADMA > 0
        !           330:        bus_dma_tag_t sc_dmat;          /* isa DMA tag */
        !           331: #endif /* NISADMA > 0 */
        !           332:
        !           333:        isa_chipset_tag_t sc_ic;
        !           334:
        !           335: #if NISADMA > 0
        !           336:        /*
        !           337:         * Bitmap representing the DRQ channels available
        !           338:         * for ISA.
        !           339:         */
        !           340:        int     sc_drqmap;
        !           341: #define sc_drq sc_drqmap               /* XXX compatibility mode */
        !           342:
        !           343:        bus_space_handle_t sc_dma1h;    /* i/o handle for DMA controller #1 */
        !           344:        bus_space_handle_t sc_dma2h;    /* i/o handle for DMA controller #2 */
        !           345:        bus_space_handle_t sc_dmapgh;   /* i/o handle for DMA page registers */
        !           346:
        !           347:        /*
        !           348:         * DMA maps used for the 8 DMA channels.
        !           349:         */
        !           350:        bus_dmamap_t    sc_dmamaps[8];
        !           351:        bus_size_t      sc_dmalength[8];
        !           352:
        !           353:        int     sc_dmareads;            /* state for isa_dmadone() */
        !           354:        int     sc_dmafinished;         /* DMA completion state */
        !           355: #endif /* NISADMA > 0 */
        !           356:
        !           357:        /*
        !           358:         * This i/o handle is used to map port 0x84, which is
        !           359:         * read to provide a 1.25us delay.  This access handle
        !           360:         * is mapped in isaattach(), and exported to drivers
        !           361:         * via isa_attach_args.
        !           362:         */
        !           363:        bus_space_handle_t   sc_delaybah;
        !           364: };
        !           365:
        !           366: #define        ISA_DRQ_ISFREE(isadev, drq) \
        !           367:        ((((struct isa_softc *)(isadev))->sc_drqmap & (1 << (drq))) == 0)
        !           368:
        !           369: #define        ISA_DRQ_ALLOC(isadev, drq) \
        !           370:        ((struct isa_softc *)(isadev))->sc_drqmap |= (1 << (drq))
        !           371:
        !           372: #define        ISA_DRQ_FREE(isadev, drq) \
        !           373:        ((struct isa_softc *)(isadev))->sc_drqmap &= ~(1 << (drq))
        !           374:
        !           375: #define                cf_iobase               cf_loc[0]
        !           376: #define                cf_iosize               cf_loc[1]
        !           377: #define                cf_maddr                cf_loc[2]
        !           378: #define                cf_msize                cf_loc[3]
        !           379: #define                cf_irq                  cf_loc[4]
        !           380: #define                cf_drq                  cf_loc[5]
        !           381: #define                cf_drq2                 cf_loc[6]
        !           382:
        !           383: /*
        !           384:  * ISA interrupt handler manipulation.
        !           385:  *
        !           386:  * To establish an ISA interrupt handler, a driver calls isa_intr_establish()
        !           387:  * with the interrupt number, type, level, function, and function argument of
        !           388:  * the interrupt it wants to handle.  Isa_intr_establish() returns an opaque
        !           389:  * handle to an event descriptor if it succeeds, and invokes panic() if it
        !           390:  * fails.  (XXX It should return NULL, then drivers should handle that, but
        !           391:  * what should they do?)  Interrupt handlers should return 0 for "interrupt
        !           392:  * not for me", 1  for "I took care of it", or -1 for "I guess it was mine,
        !           393:  * but I wasn't expecting it."
        !           394:  *
        !           395:  * To remove an interrupt handler, the driver calls isa_intr_disestablish()
        !           396:  * with the handle returned by isa_intr_establish() for that handler.
        !           397:  */
        !           398:
        !           399: /* ISA interrupt sharing types */
        !           400: char   *isa_intr_typename(int type);
        !           401:
        !           402: void   isascan(struct device *parent, void *match);
        !           403: int    isaprint(void *, const char *);
        !           404:
        !           405: /*
        !           406:  * Some ISA devices (e.g. on a VLB) can perform 32-bit DMA.  This
        !           407:  * flag is passed to bus_dmamap_create() to indicate that fact.
        !           408:  */
        !           409: #define        ISABUS_DMA_32BIT        BUS_DMA_BUS1
        !           410:
        !           411: /*
        !           412:  * ISA PnP prototypes and support macros.
        !           413:  */
        !           414: static __inline void isapnp_write_reg(struct isapnp_softc *, int, u_char);
        !           415: static __inline u_char isapnp_read_reg(struct isapnp_softc *, int);
        !           416:
        !           417: static __inline void
        !           418: isapnp_write_reg(sc, r, v)
        !           419:        struct isapnp_softc *sc;
        !           420:        int r;
        !           421:        u_char v;
        !           422: {
        !           423:        ISAPNP_WRITE_ADDR(sc, r);
        !           424:        ISAPNP_WRITE_DATA(sc, v);
        !           425: }
        !           426:
        !           427: static __inline u_char
        !           428: isapnp_read_reg(sc, r)
        !           429:        struct isapnp_softc *sc;
        !           430:        int r;
        !           431: {
        !           432:        ISAPNP_WRITE_ADDR(sc, r);
        !           433:        return ISAPNP_READ_DATA(sc);
        !           434: }
        !           435:
        !           436: struct isa_attach_args *
        !           437:     isapnp_get_resource(struct isapnp_softc *, int, struct isa_attach_args *);
        !           438: char *isapnp_id_to_vendor(char *, const u_char *);
        !           439:
        !           440: int isapnp_config(bus_space_tag_t, bus_space_tag_t,
        !           441:     struct isa_attach_args *);
        !           442: void isapnp_unconfig(bus_space_tag_t, bus_space_tag_t,
        !           443:     struct isa_attach_args *);
        !           444:
        !           445: void isapnp_isa_attach_hook(struct isa_softc *);
        !           446: #ifdef DEBUG_ISAPNP
        !           447: void isapnp_print_mem(const char *, const struct isapnp_region *);
        !           448: void isapnp_print_io(const char *, const struct isapnp_region *);
        !           449: void isapnp_print_irq(const char *, const struct isapnp_pin *);
        !           450: void isapnp_print_drq(const char *, const struct isapnp_pin *);
        !           451: void isapnp_print_dep_start(const char *, const u_char);
        !           452: void isapnp_print_attach(const struct isa_attach_args *);
        !           453: void isapnp_get_config(struct isapnp_softc *,
        !           454:        struct isa_attach_args *);
        !           455: void isapnp_print_config(const struct isa_attach_args *);
        !           456: #endif /* DEBUG_ISAPNP */
        !           457: #endif /* _DEV_ISA_ISAVAR_H_ */

CVSweb