xref: /openbsd/sys/arch/sparc64/include/autoconf.h (revision 09467b48)
1 /*	$OpenBSD: autoconf.h,v 1.18 2008/06/26 05:42:13 ray Exp $	*/
2 /*	$NetBSD: autoconf.h,v 1.10 2001/07/24 19:32:11 eeh Exp $ */
3 
4 /*-
5  * Copyright (c) 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 Paul Kranenburg.
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  *
20  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
21  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
24  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30  * POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 /*
34  * Copyright (c) 1992, 1993
35  *	The Regents of the University of California.  All rights reserved.
36  *
37  * This software was developed by the Computer Systems Engineering group
38  * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
39  * contributed to Berkeley.
40  *
41  * All advertising materials mentioning features or use of this software
42  * must display the following acknowledgement:
43  *	This product includes software developed by the University of
44  *	California, Lawrence Berkeley Laboratory.
45  *
46  * Redistribution and use in source and binary forms, with or without
47  * modification, are permitted provided that the following conditions
48  * are met:
49  * 1. Redistributions of source code must retain the above copyright
50  *    notice, this list of conditions and the following disclaimer.
51  * 2. Redistributions in binary form must reproduce the above copyright
52  *    notice, this list of conditions and the following disclaimer in the
53  *    documentation and/or other materials provided with the distribution.
54  * 3. Neither the name of the University nor the names of its contributors
55  *    may be used to endorse or promote products derived from this software
56  *    without specific prior written permission.
57  *
58  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
59  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
60  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
61  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
62  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
63  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
64  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
65  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
66  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
67  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
68  * SUCH DAMAGE.
69  *
70  *	@(#)autoconf.h	8.2 (Berkeley) 9/30/93
71  */
72 
73 /*
74  * Autoconfiguration information.
75  */
76 
77 #include <machine/bus.h>
78 #include <dev/sbus/sbusvar.h>
79 
80 /* This is used to map device classes to IPLs */
81 struct intrmap {
82 	char	*in_class;
83 	int	in_lev;
84 };
85 extern struct intrmap intrmap[];
86 
87 /* The "mainbus" on ultra desktops is actually the UPA bus.  We need to
88  * separate this from peripheral buses like SBus and PCI because each bus may
89  * have different ways of encoding properties, such as "reg" and "interrupts".
90  */
91 
92 /* Device register space description */
93 struct upa_reg {
94 	int64_t	ur_paddr;
95 	int64_t	ur_len;
96 };
97 
98 /*
99  * Attach arguments presented by mainbus_attach()
100  *
101  * Large fields first followed by smaller ones to minimize stack space used.
102  */
103 struct mainbus_attach_args {
104 	bus_space_tag_t	ma_bustag;	/* parent bus tag */
105 	bus_dma_tag_t	ma_dmatag;
106 	char		*ma_name;	/* PROM node name */
107 	struct upa_reg	*ma_reg;	/* "reg" properties */
108 	u_int		*ma_address;	/* "address" properties -- 32 bits */
109 	u_int		*ma_interrupts;	/* "interrupts" properties */
110 	int		ma_upaid;	/* UPA bus ID */
111 	int		ma_node;	/* PROM handle */
112 	int		ma_nreg;	/* Counts for those properties */
113 	int		ma_naddress;
114 	int		ma_ninterrupts;
115 	int		ma_pri;		/* priority (IPL) */
116 };
117 
118 /*
119  * length; the others convert or make some other guarantee.
120  */
121 long	getproplen(int node, char *name);
122 int	getprop(int, char *, size_t, int *, void **);
123 char	*getpropstring(int node, char *name);
124 int	getpropint(int node, char *name, int deflt);
125 int	getpropspeed(int node, char *name);
126 
127 /* Frequently used options node */
128 extern int optionsnode;
129 
130 	/* new interfaces: */
131 char	*getpropstringA(int, char *, char *);
132 
133 /*
134  * `clockfreq' produces a printable representation of a clock frequency
135  * (this is just a frill).
136  */
137 char	*clockfreq(long freq);
138 
139 /* Openprom V2 style boot path */
140 struct device;
141 struct bootpath {
142 	int	node;
143 	char	name[16];	/* name of this node */
144 	long	val[3];		/* up to three optional values */
145 	struct device *dev;	/* device that recognised this component */
146 };
147 struct bootpath	*bootpath_store(int, struct bootpath *);
148 
149 /* Establish a mountroot_hook, for benefit of floppy drive, mostly. */
150 void	mountroot_hook_establish(void (*)(struct device *), struct device *);
151 
152 void	bootstrap(int);
153 int	firstchild(int);
154 int	nextsibling(int);
155 void	callrom(void);
156 struct device *getdevunit(char *, int);
157 void	*findzs(int);
158 int	romgetcursoraddr(int **, int **);
159 int	findroot(void);
160 int	findnode(int, const char *);
161 int	checkstatus(int);
162 int	node_has_property(int, const char *);
163 void	device_register(struct device *, void *);
164