xref: /openbsd/sys/arch/i386/isa/isa_machdep.h (revision 78b63d65)
1 /*	$OpenBSD: isa_machdep.h,v 1.15 1999/01/13 07:26:00 niklas 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  * 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) 1990 The Regents of the University of California.
43  * All rights reserved.
44  *
45  * This code is derived from software contributed to Berkeley by
46  * William Jolitz.
47  *
48  * Redistribution and use in source and binary forms, with or without
49  * modification, are permitted provided that the following conditions
50  * are met:
51  * 1. Redistributions of source code must retain the above copyright
52  *    notice, this list of conditions and the following disclaimer.
53  * 2. Redistributions in binary form must reproduce the above copyright
54  *    notice, this list of conditions and the following disclaimer in the
55  *    documentation and/or other materials provided with the distribution.
56  * 3. All advertising materials mentioning features or use of this software
57  *    must display the following acknowledgement:
58  *	This product includes software developed by the University of
59  *	California, Berkeley and its contributors.
60  * 4. Neither the name of the University nor the names of its contributors
61  *    may be used to endorse or promote products derived from this software
62  *    without specific prior written permission.
63  *
64  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
65  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
66  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
67  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
68  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
69  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
70  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
71  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
72  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
73  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
74  * SUCH DAMAGE.
75  *
76  *	@(#)isa.h	5.7 (Berkeley) 5/9/91
77  */
78 
79 /*
80  * Various pieces of the i386 port want to include this file without
81  * or in spite of using isavar.h, and should be fixed.
82  */
83 
84 #ifndef _I386_ISA_MACHDEP_H_			/* XXX */
85 #define _I386_ISA_MACHDEP_H_			/* XXX */
86 
87 #include <machine/bus.h>
88 
89 /*
90  * XXX THIS FILE IS A MESS.  copyright: berkeley's probably.
91  * contents from isavar.h and isareg.h, mostly the latter.
92  * perhaps charles's?
93  *
94  * copyright from berkeley's isa.h which is now dev/isa/isareg.h.
95  */
96 
97 /*
98  * Types provided to machine-independent ISA code.
99  */
100 typedef void *isa_chipset_tag_t;
101 
102 struct device;			/* XXX */
103 struct isabus_attach_args;	/* XXX */
104 
105 /*
106  * Functions provided to machine-independent ISA code.
107  */
108 void	isa_attach_hook __P((struct device *, struct device *,
109 	    struct isabus_attach_args *));
110 int	isa_intr_alloc __P((isa_chipset_tag_t, int, int, int *));
111 int	isa_intr_check __P((isa_chipset_tag_t, int, int));
112 void	*isa_intr_establish __P((isa_chipset_tag_t ic, int irq, int type,
113 	    int level, int (*ih_fun)(void *), void *ih_arg, char *ih_what));
114 void	isa_intr_disestablish __P((isa_chipset_tag_t ic, void *handler));
115 
116 /*
117  * ALL OF THE FOLLOWING ARE MACHINE-DEPENDENT, AND SHOULD NOT BE USED
118  * BY PORTABLE CODE.
119  */
120 
121 extern struct i386_bus_dma_tag isa_bus_dma_tag;
122 
123 /*
124  * Cookie used by ISA dma.  A pointer to one of these it stashed in
125  * the DMA map.
126  */
127 struct i386_isa_dma_cookie {
128 	int	id_flags;		/* flags; see below */
129 
130 	void	*id_origbuf;		/* pointer to orig buffer if
131 					   bouncing */
132 	bus_size_t id_origbuflen;	/* ...and size */
133 
134 	void	*id_bouncebuf;		/* pointer to the bounce buffer */
135 	bus_size_t id_bouncebuflen;	/* ...and size */
136 	int	id_nbouncesegs;		/* number of valid bounce segs */
137 	bus_dma_segment_t id_bouncesegs[0]; /* array of bounce buffer
138 					       physical memory segments */
139 };
140 
141 /* id_flags */
142 #define	ID_MIGHT_NEED_BOUNCE	0x01	/* map could need bounce buffers */
143 #define	ID_HAS_BOUNCE		0x02	/* map currently has bounce buffers */
144 #define	ID_IS_BOUNCING		0x04	/* map is bouncing current xfer */
145 
146 /*
147  * XXX Various seemingly PC-specific constants, some of which may be
148  * unnecessary anyway.
149  */
150 
151 /*
152  * RAM Physical Address Space (ignoring the above mentioned "hole")
153  */
154 #define	RAM_BEGIN	0x0000000	/* Start of RAM Memory */
155 #define	RAM_END		0x1000000	/* End of RAM Memory */
156 #define	RAM_SIZE	(RAM_END - RAM_BEGIN)
157 
158 /*
159  * Oddball Physical Memory Addresses
160  */
161 #define	COMPAQ_RAMRELOC	0x80c00000	/* Compaq RAM relocation/diag */
162 #define	COMPAQ_RAMSETUP	0x80c00002	/* Compaq RAM setup */
163 #define	WEITEK_FPU	0xC0000000	/* WTL 2167 */
164 #define	CYRIX_EMC	0xC0000000	/* Cyrix EMC */
165 
166 /*
167  * stuff that used to be in pccons.c
168  */
169 #define	MONO_BUF	0xB0000
170 #define	CGA_BUF		0xB8000
171 #define	IOPHYSMEM	0xA0000
172 
173 
174 /*
175  * ISA DMA bounce buffers.
176  * XXX should be made partially machine- and bus-mapping-independent.
177  *
178  * DMA_BOUNCE is the number of pages of low-addressed physical memory
179  * to acquire for ISA bounce buffers. If physical memory below 16 MB
180  * then DMA_BOUNCE_LOW will be used.
181  *
182  * isaphysmem is the address of this physical contiguous low memory.
183  * isaphysmempgs is the number of pages allocated.
184  */
185 
186 #ifndef DMA_BOUNCE
187 #define	DMA_BOUNCE      48		/* number of pages if memory > 16M */
188 #endif
189 
190 #ifndef DMA_BOUNCE_LOW
191 #define	DMA_BOUNCE_LOW  16		/* number of pages if memory <= 16M */
192 #endif
193 
194 extern vm_offset_t isaphysmem;
195 extern int isaphysmempgs;
196 
197 
198 /*
199  * Variables and macros to deal with the ISA I/O hole.
200  * XXX These should be converted to machine- and bus-mapping-independent
201  * function definitions, invoked through the softc.
202  */
203 
204 extern u_long atdevbase;           /* kernel virtual address of "hole" */
205 
206 /*
207  * Given a kernel virtual address for some location
208  * in the "hole" I/O space, return a physical address.
209  */
210 #define ISA_PHYSADDR(v) ((void *) ((u_long)(v) - atdevbase + IOM_BEGIN))
211 
212 /*
213  * Given a physical address in the "hole",
214  * return a kernel virtual address.
215  */
216 #define ISA_HOLE_VADDR(p)  ((void *) ((u_long)(p) - IOM_BEGIN + atdevbase))
217 
218 
219 /*
220  * Miscellanous functions.
221  */
222 void sysbeep __P((int, int));		/* beep with the system speaker */
223 
224 #endif /* _I386_ISA_MACHDEP_H_ XXX */
225