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