isa_machdep.h revision 1.4
1/*	$OpenBSD: isa_machdep.h,v 1.4 2005/12/13 00:18:19 jsg Exp $	*/
2/*	$NetBSD: isa_machdep.h,v 1.2 2003/05/09 23:51:28 fvdl Exp $	*/
3
4/*-
5 * Copyright (c) 1996, 1997, 1998 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. Neither the name of the University nor the names of its contributors
57 *    may be used to endorse or promote products derived from this software
58 *    without specific prior written permission.
59 *
60 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
61 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
62 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
63 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
64 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
65 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
66 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
67 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
68 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
69 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
70 * SUCH DAMAGE.
71 *
72 *	@(#)isa.h	5.7 (Berkeley) 5/9/91
73 */
74
75/*
76 * Various pieces of the i386 port want to include this file without
77 * or in spite of using isavar.h, and should be fixed.
78 */
79
80#ifndef _I386_ISA_MACHDEP_H_			/* XXX */
81#define _I386_ISA_MACHDEP_H_			/* XXX */
82
83#include <machine/bus.h>
84#include <dev/isa/isadmavar.h>
85
86/*
87 * XXX THIS FILE IS A MESS.  copyright: berkeley's probably.
88 * contents from isavar.h and isareg.h, mostly the latter.
89 * perhaps charles's?
90 *
91 * copyright from berkeley's isa.h which is now dev/isa/isareg.h.
92 */
93
94/*
95 * Types provided to machine-independent ISA code.
96 */
97
98typedef void *isa_chipset_tag_t;
99
100struct device;			/* XXX */
101struct isabus_attach_args;	/* XXX */
102
103/*
104 * Functions provided to machine-independent ISA code.
105 */
106void	isa_attach_hook(struct device *, struct device *,
107	    struct isabus_attach_args *);
108int	isa_intr_alloc(isa_chipset_tag_t, int, int, int *);
109void	*isa_intr_establish(isa_chipset_tag_t ic, int irq, int type,
110	    int level, int (*ih_fun)(void *), void *ih_arg, char *);
111void	isa_intr_disestablish(isa_chipset_tag_t ic, void *handler);
112int	isa_mem_alloc(bus_space_tag_t, bus_size_t, bus_size_t,
113	    bus_addr_t, int, bus_addr_t *, bus_space_handle_t *);
114void	isa_mem_free(bus_space_tag_t, bus_space_handle_t, bus_size_t);
115
116int isa_intr_check(isa_chipset_tag_t, int, int);
117
118/*
119 * for ACPI code
120 */
121
122void	isa_reinit_irq(void);
123
124/*
125 * ALL OF THE FOLLOWING ARE MACHINE-DEPENDENT, AND SHOULD NOT BE USED
126 * BY PORTABLE CODE.
127 */
128
129extern struct x86_bus_dma_tag isa_bus_dma_tag;
130
131/*
132 * Cookie used by ISA dma.  A pointer to one of these it stashed in
133 * the DMA map.
134 */
135struct x86_isa_dma_cookie {
136	int	id_flags;		/* flags; see below */
137
138	void	*id_origbuf;		/* pointer to orig buffer if
139					   bouncing */
140	bus_size_t id_origbuflen;	/* ...and size */
141
142	void	*id_bouncebuf;		/* pointer to the bounce buffer */
143	bus_size_t id_bouncebuflen;	/* ...and size */
144	int	id_nbouncesegs;		/* number of valid bounce segs */
145	bus_dma_segment_t id_bouncesegs[0]; /* array of bounce buffer
146					       physical memory segments */
147};
148
149/* id_flags */
150#define	ID_MIGHT_NEED_BOUNCE	0x01	/* map could need bounce buffers */
151#define	ID_HAS_BOUNCE		0x02	/* map currently has bounce buffers */
152#define	ID_IS_BOUNCING		0x04	/* map is bouncing current xfer */
153
154
155
156/*
157 * XXX Various seemingly PC-specific constants, some of which may be
158 * unnecessary anyway.
159 */
160
161/*
162 * RAM Physical Address Space (ignoring the above mentioned "hole")
163 */
164#define	RAM_BEGIN	0x0000000	/* Start of RAM Memory */
165#define	RAM_END		0x1000000	/* End of RAM Memory */
166#define	RAM_SIZE	(RAM_END - RAM_BEGIN)
167
168/*
169 * Oddball Physical Memory Addresses
170 */
171#define	COMPAQ_RAMRELOC	0x80c00000	/* Compaq RAM relocation/diag */
172#define	COMPAQ_RAMSETUP	0x80c00002	/* Compaq RAM setup */
173#define	WEITEK_FPU	0xC0000000	/* WTL 2167 */
174#define	CYRIX_EMC	0xC0000000	/* Cyrix EMC */
175
176/*
177 * stuff that used to be in pccons.c
178 */
179#define	MONO_BASE	0x3B4
180#define	MONO_BUF	0xB0000
181#define	CGA_BASE	0x3D4
182#define	CGA_BUF		0xB8000
183
184/*
185 * Variables and macros to deal with the ISA I/O hole.
186 * XXX These should be converted to machine- and bus-mapping-independent
187 * function definitions, invoked through the softc.
188 */
189
190extern u_long atdevbase;           /* kernel virtual address of "hole" */
191
192/*
193 * Given a kernel virtual address for some location
194 * in the "hole" I/O space, return a physical address.
195 */
196#define ISA_PHYSADDR(v) ((void *) ((u_long)(v) - atdevbase + IOM_BEGIN))
197
198/*
199 * Given a physical address in the "hole",
200 * return a kernel virtual address.
201 */
202#define ISA_HOLE_VADDR(p)  ((void *) ((u_long)(p) - IOM_BEGIN + atdevbase))
203
204
205/*
206 * Miscellanous functions.
207 */
208void sysbeep(int, int);		/* beep with the system speaker */
209
210#endif /* _I386_ISA_MACHDEP_H_ XXX */
211