xref: /openbsd/sys/arch/powerpc64/powerpc64/conf.c (revision 3ad05d8a)
1 /*	$OpenBSD: conf.c,v 1.14 2022/09/02 20:06:56 miod Exp $	*/
2 
3 /*-
4  * Copyright (c) 1991 The Regents of the University of California.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  * 3. Neither the name of the University nor the names of its contributors
16  *    may be used to endorse or promote products derived from this software
17  *    without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29  * SUCH DAMAGE.
30  *
31  *     @(#)conf.c	7.9 (Berkeley) 5/28/91
32  */
33 
34 #include <sys/param.h>
35 #include <sys/systm.h>
36 #include <sys/device.h>
37 #include <sys/tty.h>
38 #include <sys/vnode.h>
39 
40 #include <machine/conf.h>
41 
42 #include "wd.h"
43 bdev_decl(wd);
44 #include "cd.h"
45 #include "rd.h"
46 #include "sd.h"
47 #include "vnd.h"
48 
49 struct bdevsw bdevsw[] =
50 {
51 	bdev_swap_init(1,sw),		/* 0: swap pseudo-device */
52 	bdev_disk_init(NVND,vnd),	/* 1: vnode disk driver */
53 	bdev_disk_init(NRD,rd),		/* 2: ram disk driver */
54 	bdev_disk_init(NSD,sd),		/* 3: SCSI disk */
55 	bdev_disk_init(NCD,cd),		/* 4: SCSI CD-ROM */
56 	bdev_disk_init(NWD,wd),		/* 5: ST506/ESDI/IDE disk */
57 	bdev_notdef(),
58 };
59 int	nblkdev = nitems(bdevsw);
60 
61 #include "audio.h"
62 cdev_decl(wd);
63 #include "bio.h"
64 #include "bpfilter.h"
65 #include "ch.h"
66 #include "com.h"
67 cdev_decl(com);
68 #include "drm.h"
69 #include "dt.h"
70 #include "fido.h"
71 #include "ujoy.h"
72 #include "fuse.h"
73 #include "hotplug.h"
74 #include "ipmi.h"
75 #include "kcov.h"
76 #include "kexec.h"
77 #include "kstat.h"
78 #include "ksyms.h"
79 #include "lpt.h"
80 cdev_decl(lpt);
81 #include "midi.h"
82 #include "opalcons.h"
83 #include "openprom.h"
84 #include "pf.h"
85 #include "pppx.h"
86 #include "pty.h"
87 #include "radio.h"
88 #include "st.h"
89 #include "tun.h"
90 #include "ucom.h"
91 #include "ugen.h"
92 #include "uhid.h"
93 #include "uk.h"
94 #include "ulpt.h"
95 #include "usb.h"
96 #include "video.h"
97 #include "vscsi.h"
98 #include "wsdisplay.h"
99 #include "wskbd.h"
100 #include "wsmouse.h"
101 #include "wsmux.h"
102 
103 #ifdef USER_PCICONF
104 #include "pci.h"
105 cdev_decl(pci);
106 #endif
107 
108 struct cdevsw cdevsw[] =
109 {
110 	cdev_cn_init(1,cn),		/* 0: virtual console */
111 	cdev_ctty_init(1,ctty),		/* 1: controlling terminal */
112 	cdev_mm_init(1,mm),		/* 2: /dev/{null,mem,kmem,...} */
113 	cdev_ksyms_init(NKSYMS,ksyms),	/* 3: kernel symbols device */
114 	cdev_log_init(1,log),		/* 4: /dev/klog */
115 	cdev_ptm_init(NPTY,ptm),	/* 5: pseudo-tty ptm device */
116 	cdev_ptc_init(NPTY,ptc),	/* 6: pseudo-tty master */
117 	cdev_tty_init(NPTY,pts),	/* 7: pseudo-tty slave */
118 	cdev_fd_init(1,filedesc),	/* 8: file descriptor pseudo-device */
119 	cdev_bpf_init(NBPFILTER,bpf),	/* 9: packet filter */
120 	cdev_disk_init(1,diskmap),	/* 10: disk mapper */
121 	cdev_pf_init(NPF,pf),		/* 11: packet filter */
122 	cdev_random_init(1,random),	/* 12: random data source */
123 	cdev_dt_init(NDT,dt),		/* 13: dynamic tracer */
124 	cdev_kcov_init(NKCOV,kcov),	/* 14: kcov */
125 	cdev_kstat_init(NKSTAT,kstat),	/* 15: kernel statistics */
126 	cdev_kexec_init(NKEXEC,kexec),	/* 16: kexec */
127 	cdev_disk_init(NWD,wd),         /* 17: ST506/ESDI/IDE disk */
128 	cdev_notdef(),			/* 18 */
129 	cdev_notdef(),			/* 19 */
130 	cdev_notdef(),			/* 20 */
131 	cdev_notdef(),			/* 21 */
132 	cdev_notdef(),			/* 22 */
133 	cdev_notdef(),			/* 23 */
134 	cdev_disk_init(NVND,vnd),	/* 24: vnode disk driver */
135 	cdev_disk_init(NRD,rd),		/* 25: ram disk driver */
136 	cdev_disk_init(NSD,sd),		/* 26: SCSI disk */
137 	cdev_disk_init(NCD,cd),		/* 27: SCSI CD-ROM */
138 	cdev_notdef(),			/* 28 */
139 	cdev_notdef(),			/* 29 */
140 	cdev_notdef(),			/* 30 */
141 	cdev_notdef(),			/* 31 */
142 	cdev_audio_init(NAUDIO,audio),	/* 32: generic audio I/O */
143 	cdev_midi_init(NMIDI,midi),	/* 33: MIDI I/O */
144 	cdev_radio_init(NRADIO, radio), /* 34: generic radio I/O */
145 	cdev_video_init(NVIDEO,video),	/* 35: generic video I/O */
146 	cdev_notdef(),			/* 36 */
147 	cdev_notdef(),			/* 37 */
148 	cdev_notdef(),			/* 38 */
149 	cdev_notdef(),			/* 39 */
150 	cdev_wsdisplay_init(NWSDISPLAY,	/* 40: frame buffers, etc. */
151 	    wsdisplay),
152 	cdev_mouse_init(NWSKBD, wskbd),	/* 41: keyboards */
153 	cdev_mouse_init(NWSMOUSE,	/* 42: mice */
154 	    wsmouse),
155 	cdev_mouse_init(NWSMUX, wsmux),	/* 43: ws multiplexor */
156 	cdev_notdef(),			/* 44 */
157 	cdev_notdef(),			/* 45 */
158 	cdev_notdef(),			/* 46 */
159 	cdev_notdef(),			/* 47 */
160 	cdev_usb_init(NUSB,usb),	/* 48: USB controller */
161 	cdev_usbdev_init(NUGEN,ugen),	/* 49: USB generic driver */
162 	cdev_usbdev_init(NUHID,uhid),	/* 50: USB generic HID */
163 	cdev_fido_init(NFIDO,fido),	/* 51: FIDO/U2F security key */
164 	cdev_notdef(),			/* 52 */
165 	cdev_notdef(),			/* 53 */
166 	cdev_notdef(),			/* 54 */
167 	cdev_notdef(),			/* 55 */
168 	cdev_tty_init(NOPALCONS,opalcons), /* 56: OPAL console */
169 	cdev_tty_init(NCOM,com),	/* 57: serial port */
170 	cdev_tty_init(NUCOM,ucom),	/* 58: USB tty */
171 	cdev_notdef(),			/* 59 */
172 	cdev_notdef(),			/* 60 */
173 	cdev_notdef(),			/* 61 */
174 	cdev_notdef(),			/* 62 */
175 	cdev_notdef(),			/* 63 */
176 	cdev_lpt_init(NLPT,lpt),	/* 64: parallel printer */
177 	cdev_ulpt_init(NULPT,ulpt),	/* 65: USB printers */
178 	cdev_notdef(),			/* 66 */
179 	cdev_notdef(),			/* 67 */
180 	cdev_ch_init(NCH,ch),		/* 68: SCSI autochanger */
181 	cdev_tape_init(NST,st),		/* 69: SCSI tape */
182 	cdev_uk_init(NUK,uk),		/* 70: unknown SCSI */
183 	cdev_notdef(),			/* 71 */
184 	cdev_pppx_init(NPPPX,pppx),     /* 72: pppx */
185 	cdev_pppx_init(NPPPX,pppac),	/* 73: PPP Access Concentrator */
186 	cdev_notdef(),			/* 74: was switch(4) */
187 	cdev_tun_init(NTUN,tap),	/* 75: Ethernet network tunnel */
188 	cdev_tun_init(NTUN,tun),	/* 76: network tunnel */
189 	cdev_notdef(),			/* 77 */
190 	cdev_notdef(),			/* 78 */
191 	cdev_notdef(),			/* 79 */
192 	cdev_bio_init(NBIO,bio),	/* 80: ioctl tunnel */
193 	cdev_fuse_init(NFUSE,fuse),	/* 81: fuse */
194 	cdev_hotplug_init(NHOTPLUG,hotplug), /* 82: devices hot plugging */
195 	cdev_vscsi_init(NVSCSI,vscsi),	/* 83: vscsi */
196 	cdev_notdef(),			/* 84 */
197 	cdev_notdef(),			/* 85 */
198 	cdev_notdef(),			/* 86 */
199 	cdev_drm_init(NDRM,drm),	/* 87: drm */
200 	cdev_ipmi_init(NIPMI,ipmi),	/* 88: ipmi */
201 	cdev_notdef(),			/* 89 */
202 	cdev_notdef(),			/* 90 */
203 	cdev_notdef(),			/* 91 */
204 	cdev_openprom_init(NOPENPROM,openprom),	/* 92: /dev/openprom */
205 #ifdef USER_PCICONF
206 	cdev_pci_init(NPCI,pci),        /* 93: PCI user */
207 #else
208 	cdev_notdef(),			/* 93 */
209 #endif
210 	cdev_ujoy_init(NUJOY,ujoy),	/* 94: USB joystick/gamecontroller */
211 };
212 int	nchrdev = nitems(cdevsw);
213 
214 int	mem_no = 2; 	/* major device number of memory special file */
215 
216 dev_t	swapdev = makedev(0, 0);
217 
218 int
iskmemdev(dev_t dev)219 iskmemdev(dev_t dev)
220 {
221 	return (major(dev) == mem_no && minor(dev) < 2);
222 }
223 
224 int
iszerodev(dev_t dev)225 iszerodev(dev_t dev)
226 {
227 	return (major(dev) == mem_no && minor(dev) == 12);
228 }
229 
230 dev_t
getnulldev(void)231 getnulldev(void)
232 {
233 	return makedev(mem_no, 2);
234 }
235 
236 const int chrtoblktbl[] = {
237 	/*VCHR*/	/*VBLK*/
238 	/*  0 */	NODEV,
239 	/*  1 */	NODEV,
240 	/*  2 */	NODEV,
241 	/*  3 */	NODEV,
242 	/*  4 */	NODEV,
243 	/*  5 */	NODEV,
244 	/*  6 */	NODEV,
245 	/*  7 */	NODEV,
246 	/*  8 */	NODEV,
247 	/*  9 */	NODEV,
248 	/* 10 */	NODEV,
249 	/* 11 */	NODEV,
250 	/* 12 */	NODEV,
251 	/* 13 */	NODEV,
252 	/* 14 */	NODEV,
253 	/* 15 */	NODEV,
254 	/* 16 */	NODEV,
255 	/* 17 */	5,		/* wd */
256 	/* 18 */	NODEV,
257 	/* 19 */	NODEV,
258 	/* 20 */	NODEV,
259 	/* 21 */	NODEV,
260 	/* 22 */	NODEV,
261 	/* 23 */	NODEV,
262 	/* 24 */	1,		/* vnd */
263 	/* 25 */	2,		/* rd */
264 	/* 26 */	3,		/* sd */
265 	/* 27 */	4,		/* cd */
266 };
267 const int nchrtoblktbl = nitems(chrtoblktbl);
268