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>