[BACK]Return to eisa_machdep.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / i386 / eisa

Annotation of src/sys/arch/i386/eisa/eisa_machdep.c, Revision 1.5.8.1

1.5.8.1 ! thorpej     1: /*     $NetBSD: eisa_machdep.c,v 1.5 1996/10/21 23:12:56 thorpej Exp $ */
        !             2:
        !             3: /*-
        !             4:  * Copyright (c) 1997 The NetBSD Foundation, Inc.
        !             5:  * All rights reserved.
        !             6:  *
        !             7:  * This code is derived from software contributed to The NetBSD Foundation
        !             8:  * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
        !             9:  * NASA Ames Research Center.
        !            10:  *
        !            11:  * Redistribution and use in source and binary forms, with or without
        !            12:  * modification, are permitted provided that the following conditions
        !            13:  * are met:
        !            14:  * 1. Redistributions of source code must retain the above copyright
        !            15:  *    notice, this list of conditions and the following disclaimer.
        !            16:  * 2. Redistributions in binary form must reproduce the above copyright
        !            17:  *    notice, this list of conditions and the following disclaimer in the
        !            18:  *    documentation and/or other materials provided with the distribution.
        !            19:  * 3. All advertising materials mentioning features or use of this software
        !            20:  *    must display the following acknowledgement:
        !            21:  *     This product includes software developed by the NetBSD
        !            22:  *     Foundation, Inc. and its contributors.
        !            23:  * 4. Neither the name of The NetBSD Foundation nor the names of its
        !            24:  *    contributors may be used to endorse or promote products derived
        !            25:  *    from this software without specific prior written permission.
        !            26:  *
        !            27:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
        !            28:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
        !            29:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
        !            30:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
        !            31:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
        !            32:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
        !            33:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
        !            34:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
        !            35:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
        !            36:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        !            37:  * POSSIBILITY OF SUCH DAMAGE.
        !            38:  */
1.1       cgd        39:
                     40: /*
                     41:  * Copyright (c) 1996 Christopher G. Demetriou.  All rights reserved.
                     42:  *
                     43:  * Redistribution and use in source and binary forms, with or without
                     44:  * modification, are permitted provided that the following conditions
                     45:  * are met:
                     46:  * 1. Redistributions of source code must retain the above copyright
                     47:  *    notice, this list of conditions and the following disclaimer.
                     48:  * 2. Redistributions in binary form must reproduce the above copyright
                     49:  *    notice, this list of conditions and the following disclaimer in the
                     50:  *    documentation and/or other materials provided with the distribution.
                     51:  * 3. All advertising materials mentioning features or use of this software
                     52:  *    must display the following acknowledgement:
                     53:  *      This product includes software developed by Christopher G. Demetriou
                     54:  *     for the NetBSD Project.
                     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:  * Machine-specific functions for EISA autoconfiguration.
                     72:  */
                     73:
                     74: #include <sys/types.h>
                     75: #include <sys/param.h>
                     76: #include <sys/time.h>
                     77: #include <sys/systm.h>
                     78: #include <sys/errno.h>
                     79: #include <sys/device.h>
1.5       thorpej    80: #include <sys/extent.h>
1.1       cgd        81:
1.5.8.1 ! thorpej    82: #define _I386_BUS_DMA_PRIVATE
        !            83: #include <machine/bus.h>
        !            84:
1.1       cgd        85: #include <i386/isa/icu.h>
1.5       thorpej    86: #include <dev/isa/isareg.h>
1.1       cgd        87: #include <dev/isa/isavar.h>
                     88: #include <dev/eisa/eisavar.h>
                     89:
1.5.8.1 ! thorpej    90: /*
        !            91:  * EISA doesn't have any special needs; just use the generic versions
        !            92:  * of these funcions.
        !            93:  */
        !            94: struct i386_bus_dma_tag eisa_bus_dma_tag = {
        !            95:        NULL,                   /* _cookie */
        !            96:        _bus_dmamap_create,
        !            97:        _bus_dmamap_destroy,
        !            98:        _bus_dmamap_load,
        !            99:        _bus_dmamap_load_mbuf,
        !           100:        _bus_dmamap_load_uio,
        !           101:        _bus_dmamap_load_raw,
        !           102:        _bus_dmamap_unload,
        !           103:        NULL,                   /* _dmamap_sync */
        !           104:        _bus_dmamem_alloc,
        !           105:        _bus_dmamem_free,
        !           106:        _bus_dmamem_map,
        !           107:        _bus_dmamem_unmap,
        !           108:        _bus_dmamem_mmap,
        !           109: };
        !           110:
1.1       cgd       111: void
                    112: eisa_attach_hook(parent, self, eba)
                    113:        struct device *parent, *self;
                    114:        struct eisabus_attach_args *eba;
                    115: {
                    116:
1.5.8.1 ! thorpej   117:        /* Give the MI code the bus DMA tag. */
        !           118:        eba->eba_dmat = &eisa_bus_dma_tag;
1.1       cgd       119: }
                    120:
                    121: int
                    122: eisa_maxslots(ec)
                    123:        eisa_chipset_tag_t ec;
                    124: {
                    125:
                    126:        /*
                    127:         * Always try 16 slots.
                    128:         */
                    129:        return (16);
                    130: }
                    131:
                    132: int
                    133: eisa_intr_map(ec, irq, ihp)
                    134:        eisa_chipset_tag_t ec;
                    135:        u_int irq;
                    136:        eisa_intr_handle_t *ihp;
                    137: {
                    138:
                    139:        if (irq >= ICU_LEN) {
1.4       christos  140:                printf("eisa_intr_map: bad IRQ %d\n", irq);
1.1       cgd       141:                *ihp = -1;
                    142:                return 1;
                    143:        }
                    144:        if (irq == 2) {
1.4       christos  145:                printf("eisa_intr_map: changed IRQ 2 to IRQ 9\n");
1.1       cgd       146:                irq = 9;
                    147:        }
                    148:
                    149:        *ihp = irq;
                    150:        return 0;
                    151: }
                    152:
                    153: const char *
                    154: eisa_intr_string(ec, ih)
                    155:        eisa_chipset_tag_t ec;
                    156:        eisa_intr_handle_t ih;
                    157: {
                    158:        static char irqstr[8];          /* 4 + 2 + NULL + sanity */
                    159:
                    160:        if (ih == 0 || ih >= ICU_LEN || ih == 2)
                    161:                panic("eisa_intr_string: bogus handle 0x%x\n", ih);
                    162:
1.4       christos  163:        sprintf(irqstr, "irq %d", ih);
1.1       cgd       164:        return (irqstr);
                    165:
                    166: }
                    167:
                    168: void *
                    169: eisa_intr_establish(ec, ih, type, level, func, arg)
                    170:        eisa_chipset_tag_t ec;
                    171:        eisa_intr_handle_t ih;
                    172:        int type, level, (*func) __P((void *));
                    173:        void *arg;
                    174: {
                    175:
                    176:        if (ih == 0 || ih >= ICU_LEN || ih == 2)
                    177:                panic("eisa_intr_establish: bogus handle 0x%x\n", ih);
                    178:
1.2       cgd       179:        return isa_intr_establish(NULL, ih, type, level, func, arg);
1.1       cgd       180: }
                    181:
                    182: void
                    183: eisa_intr_disestablish(ec, cookie)
                    184:        eisa_chipset_tag_t ec;
                    185:        void *cookie;
                    186: {
                    187:
1.2       cgd       188:        return isa_intr_disestablish(NULL, cookie);
1.5       thorpej   189: }
                    190:
                    191: int
                    192: eisa_mem_alloc(t, size, align, boundary, cacheable, addrp, bahp)
                    193:        bus_space_tag_t t;
                    194:        bus_size_t size, align;
                    195:        bus_addr_t boundary;
                    196:        int cacheable;
                    197:        bus_addr_t *addrp;
                    198:        bus_space_handle_t *bahp;
                    199: {
                    200:        extern struct extent *iomem_ex;
                    201:
                    202:        /*
                    203:         * Allocate physical address space after the ISA hole.
                    204:         */
                    205:        return bus_space_alloc(t, IOM_END, iomem_ex->ex_end, size, align,
                    206:            boundary, cacheable, addrp, bahp);
                    207: }
                    208:
                    209: void
                    210: eisa_mem_free(t, bah, size)
                    211:        bus_space_tag_t t;
                    212:        bus_space_handle_t bah;
                    213:        bus_size_t size;
                    214: {
                    215:
                    216:        bus_space_free(t, bah, size);
1.1       cgd       217: }

CVSweb <webmaster@jp.NetBSD.org>