isa_machdep.h revision 1.6
1/*	$OpenBSD: isa_machdep.h,v 1.6 2006/03/01 21:51:39 deraadt 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 * ISA can only DMA to 0-16M.
88 */
89#define	ISA_DMA_BOUNCE_THRESHOLD	0x00ffffff
90
91/*
92 * XXX THIS FILE IS A MESS.  copyright: berkeley's probably.
93 * contents from isavar.h and isareg.h, mostly the latter.
94 * perhaps charles's?
95 *
96 * copyright from berkeley's isa.h which is now dev/isa/isareg.h.
97 */
98
99/*
100 * Types provided to machine-independent ISA code.
101 */
102
103typedef void *isa_chipset_tag_t;
104
105struct device;			/* XXX */
106struct isabus_attach_args;	/* XXX */
107
108/*
109 * Functions provided to machine-independent ISA code.
110 */
111void	isa_attach_hook(struct device *, struct device *,
112	    struct isabus_attach_args *);
113int	isa_intr_alloc(isa_chipset_tag_t, int, int, int *);
114void	*isa_intr_establish(isa_chipset_tag_t ic, int irq, int type,
115	    int level, int (*ih_fun)(void *), void *ih_arg, char *);
116void	isa_intr_disestablish(isa_chipset_tag_t ic, void *handler);
117int	isa_mem_alloc(bus_space_tag_t, bus_size_t, bus_size_t,
118	    bus_addr_t, int, bus_addr_t *, bus_space_handle_t *);
119void	isa_mem_free(bus_space_tag_t, bus_space_handle_t, bus_size_t);
120
121int isa_intr_check(isa_chipset_tag_t, int, int);
122
123/*
124 * for ACPI code
125 */
126
127void	isa_reinit_irq(void);
128
129/*
130 * ALL OF THE FOLLOWING ARE MACHINE-DEPENDENT, AND SHOULD NOT BE USED
131 * BY PORTABLE CODE.
132 */
133
134extern struct x86_bus_dma_tag isa_bus_dma_tag;
135
136/*
137 * Cookie used by ISA dma.  A pointer to one of these it stashed in
138 * the DMA map.
139 */
140struct x86_isa_dma_cookie {
141	int	id_flags;		/* flags; see below */
142
143	void	*id_origbuf;		/* pointer to orig buffer if
144					   bouncing */
145	bus_size_t id_origbuflen;	/* ...and size */
146
147	void	*id_bouncebuf;		/* pointer to the bounce buffer */
148	bus_size_t id_bouncebuflen;	/* ...and size */
149	int	id_nbouncesegs;		/* number of valid bounce segs */
150	bus_dma_segment_t id_bouncesegs[0]; /* array of bounce buffer
151					       physical memory segments */
152};
153
154/* id_flags */
155#define	ID_MIGHT_NEED_BOUNCE	0x01	/* map could need bounce buffers */
156#define	ID_HAS_BOUNCE		0x02	/* map currently has bounce buffers */
157#define	ID_IS_BOUNCING		0x04	/* map is bouncing current xfer */
158
159
160
161/*
162 * XXX Various seemingly PC-specific constants, some of which may be
163 * unnecessary anyway.
164 */
165
166/*
167 * RAM Physical Address Space (ignoring the above mentioned "hole")
168 */
169#define	RAM_BEGIN	0x0000000	/* Start of RAM Memory */
170#define	RAM_END		0x1000000	/* End of RAM Memory */
171#define	RAM_SIZE	(RAM_END - RAM_BEGIN)
172
173/*
174 * Oddball Physical Memory Addresses
175 */
176#define	COMPAQ_RAMRELOC	0x80c00000	/* Compaq RAM relocation/diag */
177#define	COMPAQ_RAMSETUP	0x80c00002	/* Compaq RAM setup */
178#define	WEITEK_FPU	0xC0000000	/* WTL 2167 */
179#define	CYRIX_EMC	0xC0000000	/* Cyrix EMC */
180
181/*
182 * stuff that used to be in pccons.c
183 */
184#define	MONO_BASE	0x3B4
185#define	MONO_BUF	0xB0000
186#define	CGA_BASE	0x3D4
187#define	CGA_BUF		0xB8000
188
189/*
190 * Variables and macros to deal with the ISA I/O hole.
191 * XXX These should be converted to machine- and bus-mapping-independent
192 * function definitions, invoked through the softc.
193 */
194
195extern u_long atdevbase;           /* kernel virtual address of "hole" */
196
197/*
198 * Given a kernel virtual address for some location
199 * in the "hole" I/O space, return a physical address.
200 */
201#define ISA_PHYSADDR(v) ((void *) ((u_long)(v) - atdevbase + IOM_BEGIN))
202
203/*
204 * Given a physical address in the "hole",
205 * return a kernel virtual address.
206 */
207#define ISA_HOLE_VADDR(p)  ((void *) ((u_long)(p) - IOM_BEGIN + atdevbase))
208
209#endif /* _I386_ISA_MACHDEP_H_ XXX */
210