Annotation of src/sys/arch/i386/eisa/eisa_machdep.c, Revision 1.4
1.4 ! christos 1: /* $NetBSD: eisa_machdep.c,v 1.3 1996/10/11 00:26:33 christos Exp $ */
1.1 cgd 2:
3: /*
4: * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
5: *
6: * Redistribution and use in source and binary forms, with or without
7: * modification, are permitted provided that the following conditions
8: * are met:
9: * 1. Redistributions of source code must retain the above copyright
10: * notice, this list of conditions and the following disclaimer.
11: * 2. Redistributions in binary form must reproduce the above copyright
12: * notice, this list of conditions and the following disclaimer in the
13: * documentation and/or other materials provided with the distribution.
14: * 3. All advertising materials mentioning features or use of this software
15: * must display the following acknowledgement:
16: * This product includes software developed by Christopher G. Demetriou
17: * for the NetBSD Project.
18: * 4. The name of the author may not be used to endorse or promote products
19: * derived from this software without specific prior written permission
20: *
21: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31: */
32:
33: /*
34: * Machine-specific functions for EISA autoconfiguration.
35: */
36:
37: #include <sys/types.h>
38: #include <sys/param.h>
39: #include <sys/time.h>
40: #include <sys/systm.h>
41: #include <sys/errno.h>
42: #include <sys/device.h>
43:
44: #include <i386/isa/icu.h>
45: #include <dev/isa/isavar.h>
46: #include <dev/eisa/eisavar.h>
47:
48: void
49: eisa_attach_hook(parent, self, eba)
50: struct device *parent, *self;
51: struct eisabus_attach_args *eba;
52: {
53:
54: /* Nothing to do */
55: }
56:
57: int
58: eisa_maxslots(ec)
59: eisa_chipset_tag_t ec;
60: {
61:
62: /*
63: * Always try 16 slots.
64: */
65: return (16);
66: }
67:
68: int
69: eisa_intr_map(ec, irq, ihp)
70: eisa_chipset_tag_t ec;
71: u_int irq;
72: eisa_intr_handle_t *ihp;
73: {
74:
75: if (irq >= ICU_LEN) {
1.4 ! christos 76: printf("eisa_intr_map: bad IRQ %d\n", irq);
1.1 cgd 77: *ihp = -1;
78: return 1;
79: }
80: if (irq == 2) {
1.4 ! christos 81: printf("eisa_intr_map: changed IRQ 2 to IRQ 9\n");
1.1 cgd 82: irq = 9;
83: }
84:
85: *ihp = irq;
86: return 0;
87: }
88:
89: const char *
90: eisa_intr_string(ec, ih)
91: eisa_chipset_tag_t ec;
92: eisa_intr_handle_t ih;
93: {
94: static char irqstr[8]; /* 4 + 2 + NULL + sanity */
95:
96: if (ih == 0 || ih >= ICU_LEN || ih == 2)
97: panic("eisa_intr_string: bogus handle 0x%x\n", ih);
98:
1.4 ! christos 99: sprintf(irqstr, "irq %d", ih);
1.1 cgd 100: return (irqstr);
101:
102: }
103:
104: void *
105: eisa_intr_establish(ec, ih, type, level, func, arg)
106: eisa_chipset_tag_t ec;
107: eisa_intr_handle_t ih;
108: int type, level, (*func) __P((void *));
109: void *arg;
110: {
111:
112: if (ih == 0 || ih >= ICU_LEN || ih == 2)
113: panic("eisa_intr_establish: bogus handle 0x%x\n", ih);
114:
1.2 cgd 115: return isa_intr_establish(NULL, ih, type, level, func, arg);
1.1 cgd 116: }
117:
118: void
119: eisa_intr_disestablish(ec, cookie)
120: eisa_chipset_tag_t ec;
121: void *cookie;
122: {
123:
1.2 cgd 124: return isa_intr_disestablish(NULL, cookie);
1.1 cgd 125: }
CVSweb <webmaster@jp.NetBSD.org>