xref: /openbsd-src/sys/arch/i386/isa/isa_machdep.h (revision b30de97d4acfcd79cc3c5aa8ebe33237055e4d04)
1 /*	$OpenBSD: isa_machdep.h,v 1.26 2024/05/13 00:16:09 jsg Exp $	*/
2 /*	$NetBSD: isa_machdep.h,v 1.7 1997/06/06 23:28:42 thorpej Exp $	*/
3 
4 /*-
5  * Copyright (c) 1996, 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  *
21  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
22  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
23  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
25  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31  * POSSIBILITY OF SUCH DAMAGE.
32  */
33 
34 /*-
35  * Copyright (c) 1990 The Regents of the University of California.
36  * All rights reserved.
37  *
38  * This code is derived from software contributed to Berkeley by
39  * William Jolitz.
40  *
41  * Redistribution and use in source and binary forms, with or without
42  * modification, are permitted provided that the following conditions
43  * are met:
44  * 1. Redistributions of source code must retain the above copyright
45  *    notice, this list of conditions and the following disclaimer.
46  * 2. Redistributions in binary form must reproduce the above copyright
47  *    notice, this list of conditions and the following disclaimer in the
48  *    documentation and/or other materials provided with the distribution.
49  * 3. Neither the name of the University nor the names of its contributors
50  *    may be used to endorse or promote products derived from this software
51  *    without specific prior written permission.
52  *
53  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
54  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
55  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
56  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
57  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
58  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
59  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
60  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
61  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
62  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
63  * SUCH DAMAGE.
64  *
65  *	@(#)isa.h	5.7 (Berkeley) 5/9/91
66  */
67 
68 /*
69  * Various pieces of the i386 port want to include this file without
70  * or in spite of using isavar.h, and should be fixed.
71  */
72 
73 #ifndef _I386_ISA_MACHDEP_H_			/* XXX */
74 #define _I386_ISA_MACHDEP_H_			/* XXX */
75 
76 #include <machine/bus.h>
77 
78 /*
79  * ISA can only DMA to 0-16M.
80  */
81 #define	ISA_DMA_BOUNCE_THRESHOLD	0x00ffffff
82 
83 /*
84  * XXX THIS FILE IS A MESS.  copyright: berkeley's probably.
85  * contents from isavar.h and isareg.h, mostly the latter.
86  * perhaps charles's?
87  *
88  * copyright from berkeley's isa.h which is now dev/isa/isareg.h.
89  */
90 
91 /*
92  * Types provided to machine-independent ISA code.
93  */
94 typedef void *isa_chipset_tag_t;
95 
96 struct device;			/* XXX */
97 struct isabus_attach_args;	/* XXX */
98 
99 /*
100  * Functions provided to machine-independent ISA code.
101  */
102 void	isa_attach_hook(struct device *, struct device *,
103 	    struct isabus_attach_args *);
104 int	isa_intr_alloc(isa_chipset_tag_t, int, int, int *);
105 int	isa_intr_check(isa_chipset_tag_t, int, int);
106 void	*isa_intr_establish(isa_chipset_tag_t ic, int irq, int type,
107 	    int level, int (*ih_fun)(void *), void *ih_arg,
108 	    const char *ih_what);
109 void	isa_intr_disestablish(isa_chipset_tag_t ic, void *handler);
110 
111 /*
112  * ALL OF THE FOLLOWING ARE MACHINE-DEPENDENT, AND SHOULD NOT BE USED
113  * BY PORTABLE CODE.
114  */
115 
116 extern struct bus_dma_tag isa_bus_dma_tag;
117 
118 /*
119  * Cookie used by ISA dma.  A pointer to one of these it stashed in
120  * the DMA map.
121  */
122 struct isa_dma_cookie {
123 	int	id_flags;		/* flags; see below */
124 
125 	void	*id_origbuf;		/* pointer to orig buffer if
126 					   bouncing */
127 	bus_size_t id_origbuflen;	/* ...and size */
128 
129 	void	*id_bouncebuf;		/* pointer to the bounce buffer */
130 	bus_size_t id_bouncebuflen;	/* ...and size */
131 	int	id_nbouncesegs;		/* number of valid bounce segs */
132 	bus_dma_segment_t id_bouncesegs[0]; /* array of bounce buffer
133 					       physical memory segments */
134 };
135 
136 /* id_flags */
137 #define	ID_MIGHT_NEED_BOUNCE	0x01	/* map could need bounce buffers */
138 #define	ID_HAS_BOUNCE		0x02	/* map currently has bounce buffers */
139 #define	ID_IS_BOUNCING		0x04	/* map is bouncing current xfer */
140 
141 /*
142  * Variables and macros to deal with the ISA I/O hole.
143  * XXX These should be converted to machine- and bus-mapping-independent
144  * function definitions, invoked through the softc.
145  */
146 
147 extern u_long atdevbase;           /* kernel virtual address of "hole" */
148 
149 /*
150  * Given a kernel virtual address for some location
151  * in the "hole" I/O space, return a physical address.
152  */
153 #define ISA_PHYSADDR(v) ((void *) ((u_long)(v) - atdevbase + IOM_BEGIN))
154 
155 /*
156  * Given a physical address in the "hole",
157  * return a kernel virtual address.
158  */
159 #define ISA_HOLE_VADDR(p)  ((void *) ((u_long)(p) - IOM_BEGIN + atdevbase))
160 
161 #endif /* _I386_ISA_MACHDEP_H_ XXX */
162