xref: /openbsd-src/sys/arch/hppa/hppa/conf.c (revision 4912f94d4a7e2b653e74201ac73923335fd298aa)
1 /*	$OpenBSD: conf.c,v 1.75 2022/10/15 10:12:13 jsg 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/buf.h>
37 #include <sys/ioctl.h>
38 #include <sys/tty.h>
39 #include <sys/vnode.h>
40 
41 #include <machine/conf.h>
42 
43 #include "vnd.h"
44 #include "rd.h"
45 #include "sd.h"
46 #include "st.h"
47 #include "cd.h"
48 #include "ch.h"
49 #include "uk.h"
50 #include "wd.h"
51 bdev_decl(wd);
52 cdev_decl(wd);
53 #if 0
54 #include "fd.h"
55 #else
56 #define NFD 0
57 #endif
58 bdev_decl(fd);
59 cdev_decl(fd);
60 
61 struct bdevsw   bdevsw[] =
62 {
63 	bdev_swap_init(1,sw),		/*  0: swap pseudo-device */
64 	bdev_notdef(),			/*  1: was: concatenated disk driver */
65 	bdev_disk_init(NVND,vnd),	/*  2: vnode disk driver */
66 	bdev_disk_init(NRD,rd),		/*  3: RAM disk */
67 	bdev_disk_init(NSD,sd),		/*  4: SCSI disk */
68 	bdev_notdef(),			/*  5: was: SCSI tape */
69 	bdev_disk_init(NCD,cd),		/*  6: SCSI CD-ROM */
70 	bdev_disk_init(NFD,fd),		/*  7: floppy drive */
71 	bdev_disk_init(NWD,wd),		/*  8: ST506 drive */
72 	bdev_notdef(),			/*  9: */
73 	bdev_notdef(),			/* 10: */
74 	bdev_notdef(),			/* 11: */
75 	bdev_notdef(),			/* 12: */
76 	bdev_notdef(),			/* 13: */
77 	bdev_notdef(),			/* 14: */
78 };
79 int	nblkdev = nitems(bdevsw);
80 
81 #include "audio.h"
82 #include "video.h"
83 #include "bio.h"
84 #include "pty.h"
85 #include "wsdisplay.h"
86 #include "wskbd.h"
87 #include "wsmouse.h"
88 #include "wsmux.h"
89 
90 #include "bpfilter.h"
91 #include "tun.h"
92 
93 #include "ksyms.h"
94 #include "kstat.h"
95 
96 #include "lpt.h"
97 cdev_decl(lpt);
98 
99 #include "com.h"
100 cdev_decl(com);
101 
102 #include "dt.h"
103 #include "pf.h"
104 
105 #include "hotplug.h"
106 #include "vscsi.h"
107 #include "pppx.h"
108 
109 #ifdef USER_PCICONF
110 #include "pci.h"
111 cdev_decl(pci);
112 #endif
113 
114 #include "usb.h"
115 #include "uhid.h"
116 #include "fido.h"
117 #include "ujoy.h"
118 #include "ugen.h"
119 #include "ulpt.h"
120 #include "ucom.h"
121 
122 #include "fuse.h"
123 
124 struct cdevsw   cdevsw[] =
125 {
126 	cdev_cn_init(1,cn),		/*  0: virtual console */
127 	cdev_ctty_init(1,ctty),		/*  1: controlling terminal */
128 	cdev_mm_init(1,mm),		/*  2: /dev/{null,mem,kmem,...} */
129 	cdev_notdef(),			/*  3 was /dev/drum */
130 	cdev_tty_init(NPTY,pts),	/*  4: pseudo-tty slave */
131 	cdev_ptc_init(NPTY,ptc),	/*  5: pseudo-tty master */
132 	cdev_log_init(1,log),		/*  6: /dev/klog */
133 	cdev_notdef(),			/*  7: was: concatenated disk */
134 	cdev_disk_init(NVND,vnd),	/*  8: vnode disk driver */
135 	cdev_disk_init(NRD,rd),		/*  9: RAM disk */
136 	cdev_disk_init(NSD,sd),		/* 10: SCSI disk */
137 	cdev_tape_init(NST,st),		/* 11: SCSI tape */
138 	cdev_disk_init(NCD,cd),		/* 12: SCSI cd-rom */
139 	cdev_ch_init(NCH,ch),		/* 13: SCSI changer */
140 	cdev_notdef(),			/* 14: */
141 	cdev_uk_init(NUK,uk),		/* 15: SCSI unknown */
142 	cdev_fd_init(1,filedesc),	/* 16: file descriptor pseudo-device */
143 	cdev_bpf_init(NBPFILTER,bpf),	/* 17: Berkeley packet filter */
144 	cdev_tun_init(NTUN,tun),	/* 18: network tunnel */
145 	cdev_notdef(),			/* 19: was LKM */
146 	cdev_random_init(1,random),	/* 20: random generator */
147 	cdev_pf_init(NPF,pf),		/* 21: packet filter */
148 	cdev_tty_init(1,pdc),		/* 22: PDC device */
149 	cdev_tty_init(NCOM,com),	/* 23: RS232 */
150 	cdev_disk_init(NFD,fd),		/* 24: floppy drive */
151 	cdev_ksyms_init(NKSYMS,ksyms),	/* 25: Kernel symbols device */
152 	cdev_lpt_init(NLPT,lpt),	/* 26: parallel printer */
153 	cdev_wsdisplay_init(NWSDISPLAY,	/* 27: workstation console */
154 	    wsdisplay),
155 	cdev_mouse_init(NWSKBD,wskbd),	/* 28: keyboards */
156 	cdev_mouse_init(NWSMOUSE,wsmouse), /* 29: mice */
157 	cdev_mouse_init(NWSMUX,wsmux),	/* 30: mux */
158 #ifdef USER_PCICONF
159 	cdev_pci_init(NPCI,pci),	/* 31: PCI user */
160 #else
161 	cdev_notdef(),			/* 31: */
162 #endif
163 	cdev_dt_init(NDT,dt),		/* 32: dynamic tracer */
164 	cdev_video_init(NVIDEO,video),	/* 33: generic video I/O */
165 	cdev_notdef(),			/* 34 */
166 	cdev_audio_init(NAUDIO,audio),	/* 35: /dev/audio */
167 	cdev_notdef(),			/* 36: was: /dev/crypto */
168 	cdev_bio_init(NBIO,bio),	/* 37: ioctl tunnel */
169 	cdev_ptm_init(NPTY,ptm),	/* 38: pseudo-tty ptm device */
170 	cdev_disk_init(NWD,wd),		/* 39: ST506 disk */
171 	cdev_usb_init(NUSB,usb),	/* 40: USB controller */
172 	cdev_usbdev_init(NUHID,uhid),	/* 41: USB generic HID */
173 	cdev_usbdev_init(NUGEN,ugen),	/* 42: USB generic driver */
174 	cdev_ulpt_init(NULPT,ulpt),	/* 43: USB printers */
175 	cdev_notdef(),			/* 44: was urio */
176 	cdev_tty_init(NUCOM,ucom),	/* 45: USB tty */
177 	cdev_notdef(),			/* 46: was USB scanners */
178 	cdev_hotplug_init(NHOTPLUG,hotplug), /* 47: devices hot plugging */
179 	cdev_notdef(),			/* 48: */
180 	cdev_notdef(),			/* 49: */
181 	cdev_notdef(),			/* 50: */
182 	cdev_kstat_init(NKSTAT,kstat),	/* 51: kernel statistics */
183 	cdev_notdef(),			/* 52: */
184 	cdev_notdef(),			/* 53: */
185 	cdev_vscsi_init(NVSCSI,vscsi),	/* 54: vscsi */
186 	cdev_notdef(),
187 	cdev_disk_init(1,diskmap),	/* 56: disk mapper */
188 	cdev_pppx_init(NPPPX,pppx),	/* 57: pppx */
189 	cdev_fuse_init(NFUSE,fuse),	/* 58: fuse */
190 	cdev_tun_init(NTUN,tap),	/* 59: Ethernet network tunnel */
191 	cdev_notdef(),			/* 60: was switch(4) */
192 	cdev_fido_init(NFIDO,fido),	/* 61: FIDO/U2F security key */
193 	cdev_pppx_init(NPPPX,pppac),	/* 62: PPP Access Concentrator */
194 	cdev_ujoy_init(NUJOY,ujoy),	/* 63: USB joystick/gamecontroller */
195 };
196 int nchrdev = nitems(cdevsw);
197 
198 int mem_no = 2;		/* major device number of memory special file */
199 
200 /*
201  * Swapdev is a fake device implemented
202  * in sw.c used only internally to get to swstrategy.
203  * It cannot be provided to the users, because the
204  * swstrategy routine munches the b_dev and b_blkno entries
205  * before calling the appropriate driver.  This would horribly
206  * confuse, e.g. the hashing routines. Instead, /dev/drum is
207  * provided as a character (raw) device.
208  */
209 dev_t   swapdev = makedev(0, 0);
210 
211 const int chrtoblktbl[] = {
212 	/*VCHR*/	/*VBLK*/
213 	/*  0 */	NODEV,
214 	/*  1 */	NODEV,
215 	/*  2 */	NODEV,
216 	/*  3 */	NODEV,
217 	/*  4 */	NODEV,
218 	/*  5 */	NODEV,
219 	/*  6 */	NODEV,
220 	/*  7 */	NODEV,
221 	/*  8 */	2,		/* vnd */
222 	/*  9 */	3,		/* rd */
223 	/* 10 */	4,		/* sd */
224 	/* 11 */	NODEV,
225 	/* 12 */	6,		/* cd */
226 	/* 13 */	NODEV,
227 	/* 14 */	NODEV,
228 	/* 15 */	NODEV,
229 	/* 16 */	NODEV,
230 	/* 17 */	NODEV,
231 	/* 18 */	NODEV,
232 	/* 19 */	NODEV,
233 	/* 20 */	NODEV,
234 	/* 21 */	NODEV,
235 	/* 22 */	NODEV,
236 	/* 23 */	NODEV,
237 	/* 24 */	7,		/* fd */
238 	/* 25 */	NODEV,
239 	/* 26 */	NODEV,
240 	/* 27 */	NODEV,
241 	/* 28 */	NODEV,
242 	/* 29 */	NODEV,
243 	/* 30 */	NODEV,
244 	/* 31 */	NODEV,
245 	/* 32 */	NODEV,
246 	/* 33 */	NODEV,
247 	/* 34 */	NODEV,
248 	/* 35 */	NODEV,
249 	/* 36 */	NODEV,
250 	/* 37 */	NODEV,
251 	/* 38 */	NODEV,
252 	/* 39 */	8,		/* wd */
253 };
254 const int nchrtoblktbl = nitems(chrtoblktbl);
255 
256 /*
257  * Returns true if dev is /dev/zero.
258  */
259 int
iszerodev(dev_t dev)260 iszerodev(dev_t dev)
261 {
262 	return (major(dev) == mem_no && minor(dev) == 12);
263 }
264 
265 dev_t
getnulldev(void)266 getnulldev(void)
267 {
268 	return makedev(mem_no, 2);
269 }
270 
271 /*
272  * Returns true if dev is /dev/mem or /dev/kmem.
273  */
274 int
iskmemdev(dev_t dev)275 iskmemdev(dev_t dev)
276 {
277 	return (major(dev) == mem_no && minor(dev) < 2);
278 }
279