isa_machdep.h revision 1.1
1/*	$OpenBSD: isa_machdep.h,v 1.1 2004/01/28 01:39:39 mickey 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. 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#include <dev/isa/isadmavar.h>
89
90/*
91 * XXX THIS FILE IS A MESS.  copyright: berkeley's probably.
92 * contents from isavar.h and isareg.h, mostly the latter.
93 * perhaps charles's?
94 *
95 * copyright from berkeley's isa.h which is now dev/isa/isareg.h.
96 */
97
98/*
99 * Types provided to machine-independent ISA code.
100 */
101
102typedef void *isa_chipset_tag_t;
103
104struct device;			/* XXX */
105struct isabus_attach_args;	/* XXX */
106
107/*
108 * Functions provided to machine-independent ISA code.
109 */
110void	isa_attach_hook(struct device *, struct device *,
111	    struct isabus_attach_args *);
112int	isa_intr_alloc(isa_chipset_tag_t, int, int, int *);
113const struct evcnt *isa_intr_evcnt(isa_chipset_tag_t ic, int irq);
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
121#define	isa_dmainit(ic, bst, dmat, d)					\
122	_isa_dmainit(&(ic)->ic_dmastate, (bst), (dmat), (d))
123#define	isa_dmacascade(ic, c)						\
124	_isa_dmacascade(&(ic)->ic_dmastate, (c))
125#define	isa_dmamaxsize(ic, c)						\
126	_isa_dmamaxsize(&(ic)->ic_dmastate, (c))
127#define	isa_dmamap_create(ic, c, s, f)					\
128	_isa_dmamap_create(&(ic)->ic_dmastate, (c), (s), (f))
129#define	isa_dmamap_destroy(ic, c)					\
130	_isa_dmamap_destroy(&(ic)->ic_dmastate, (c))
131#define	isa_dmastart(ic, c, a, n, p, f, bf)				\
132	_isa_dmastart(&(ic)->ic_dmastate, (c), (a), (n), (p), (f), (bf))
133#define	isa_dmaabort(ic, c)						\
134	_isa_dmaabort(&(ic)->ic_dmastate, (c))
135#define	isa_dmacount(ic, c)						\
136	_isa_dmacount(&(ic)->ic_dmastate, (c))
137#define	isa_dmafinished(ic, c)						\
138	_isa_dmafinished(&(ic)->ic_dmastate, (c))
139#define	isa_dmadone(ic, c)						\
140	_isa_dmadone(&(ic)->ic_dmastate, (c))
141#define	isa_dmafreeze(ic)						\
142	_isa_dmafreeze(&(ic)->ic_dmastate)
143#define	isa_dmathaw(ic)							\
144	_isa_dmathaw(&(ic)->ic_dmastate)
145#define	isa_dmamem_alloc(ic, c, s, ap, f)				\
146	_isa_dmamem_alloc(&(ic)->ic_dmastate, (c), (s), (ap), (f))
147#define	isa_dmamem_free(ic, c, a, s)					\
148	_isa_dmamem_free(&(ic)->ic_dmastate, (c), (a), (s))
149#define	isa_dmamem_map(ic, c, a, s, kp, f)				\
150	_isa_dmamem_map(&(ic)->ic_dmastate, (c), (a), (s), (kp), (f))
151#define	isa_dmamem_unmap(ic, c, k, s)					\
152	_isa_dmamem_unmap(&(ic)->ic_dmastate, (c), (k), (s))
153#define	isa_dmamem_mmap(ic, c, a, s, o, p, f)				\
154	_isa_dmamem_mmap(&(ic)->ic_dmastate, (c), (a), (s), (o), (p), (f))
155#define isa_drq_alloc(ic, c)						\
156	_isa_drq_alloc(&(ic)->ic_dmastate, c)
157#define isa_drq_free(ic, c)						\
158	_isa_drq_free(&(ic)->ic_dmastate, c)
159#define	isa_drq_isfree(ic, c)						\
160	_isa_drq_isfree(&(ic)->ic_dmastate, (c))
161#define	isa_malloc(ic, c, s, p, f)					\
162	_isa_malloc(&(ic)->ic_dmastate, (c), (s), (p), (f))
163#define	isa_free(a, p)							\
164	_isa_free((a), (p))
165#define	isa_mappage(m, o, p)						\
166	_isa_mappage((m), (o), (p))
167
168int isa_intr_check(isa_chipset_tag_t, int, int);
169
170/*
171 * for ACPI code
172 */
173
174void	isa_reinit_irq(void);
175
176/*
177 * ALL OF THE FOLLOWING ARE MACHINE-DEPENDENT, AND SHOULD NOT BE USED
178 * BY PORTABLE CODE.
179 */
180
181extern struct x86_bus_dma_tag isa_bus_dma_tag;
182
183/*
184 * XXX Various seemingly PC-specific constants, some of which may be
185 * unnecessary anyway.
186 */
187
188/*
189 * RAM Physical Address Space (ignoring the above mentioned "hole")
190 */
191#define	RAM_BEGIN	0x0000000	/* Start of RAM Memory */
192#define	RAM_END		0x1000000	/* End of RAM Memory */
193#define	RAM_SIZE	(RAM_END - RAM_BEGIN)
194
195/*
196 * Oddball Physical Memory Addresses
197 */
198#define	COMPAQ_RAMRELOC	0x80c00000	/* Compaq RAM relocation/diag */
199#define	COMPAQ_RAMSETUP	0x80c00002	/* Compaq RAM setup */
200#define	WEITEK_FPU	0xC0000000	/* WTL 2167 */
201#define	CYRIX_EMC	0xC0000000	/* Cyrix EMC */
202
203/*
204 * stuff that used to be in pccons.c
205 */
206#define	MONO_BASE	0x3B4
207#define	MONO_BUF	0xB0000
208#define	CGA_BASE	0x3D4
209#define	CGA_BUF		0xB8000
210
211/*
212 * Variables and macros to deal with the ISA I/O hole.
213 * XXX These should be converted to machine- and bus-mapping-independent
214 * function definitions, invoked through the softc.
215 */
216
217extern u_long atdevbase;           /* kernel virtual address of "hole" */
218
219/*
220 * Given a kernel virtual address for some location
221 * in the "hole" I/O space, return a physical address.
222 */
223#define ISA_PHYSADDR(v) ((void *) ((u_long)(v) - atdevbase + IOM_BEGIN))
224
225/*
226 * Given a physical address in the "hole",
227 * return a kernel virtual address.
228 */
229#define ISA_HOLE_VADDR(p)  ((void *) ((u_long)(p) - IOM_BEGIN + atdevbase))
230
231
232/*
233 * Miscellanous functions.
234 */
235void sysbeep(int, int);		/* beep with the system speaker */
236
237#endif /* _I386_ISA_MACHDEP_H_ XXX */
238