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