1 # SPDX-License-Identifier: GPL-2.0
2 #
3 # Character device configuration
4 #
5 
6 menu "Character devices"
7 
8 source "drivers/tty/Kconfig"
9 
10 config TTY_PRINTK
11 	tristate "TTY driver to output user messages via printk"
12 	depends on EXPERT && TTY
13 	default n
14 	help
15 	  If you say Y here, the support for writing user messages (i.e.
16 	  console messages) via printk is available.
17 
18 	  The feature is useful to inline user messages with kernel
19 	  messages.
20 	  In order to use this feature, you should output user messages
21 	  to /dev/ttyprintk or redirect console to this TTY, or boot
22 	  the kernel with console=ttyprintk.
23 
24 	  If unsure, say N.
25 
26 config TTY_PRINTK_LEVEL
27 	depends on TTY_PRINTK
28 	int "ttyprintk log level (1-7)"
29 	range 1 7
30 	default "6"
31 	help
32 	  Printk log level to use for ttyprintk messages.
33 
34 config PRINTER
35 	tristate "Parallel printer support"
36 	depends on PARPORT
37 	depends on HAS_IOPORT || PARPORT_NOT_PC
38 	help
39 	  If you intend to attach a printer to the parallel port of your Linux
40 	  box (as opposed to using a serial printer; if the connector at the
41 	  printer has 9 or 25 holes ["female"], then it's serial), say Y.
42 	  Also read the Printing-HOWTO, available from
43 	  <https://www.tldp.org/docs.html#howto>.
44 
45 	  It is possible to share one parallel port among several devices
46 	  (e.g. printer and ZIP drive) and it is safe to compile the
47 	  corresponding drivers into the kernel.
48 
49 	  To compile this driver as a module, choose M here and read
50 	  <file:Documentation/admin-guide/parport.rst>.  The module will be called lp.
51 
52 	  If you have several parallel ports, you can specify which ports to
53 	  use with the "lp" kernel command line option.  (Try "man bootparam"
54 	  or see the documentation of your boot loader (lilo or loadlin) about
55 	  how to pass options to the kernel at boot time.)  The syntax of the
56 	  "lp" command line option can be found in <file:drivers/char/lp.c>.
57 
58 	  If you have more than 8 printers, you need to increase the LP_NO
59 	  macro in lp.c and the PARPORT_MAX macro in parport.h.
60 
61 config LP_CONSOLE
62 	bool "Support for console on line printer"
63 	depends on PRINTER
64 	help
65 	  If you want kernel messages to be printed out as they occur, you
66 	  can have a console on the printer. This option adds support for
67 	  doing that; to actually get it to happen you need to pass the
68 	  option "console=lp0" to the kernel at boot time.
69 
70 	  If the printer is out of paper (or off, or unplugged, or too
71 	  busy..) the kernel will stall until the printer is ready again.
72 	  By defining CONSOLE_LP_STRICT to 0 (at your own risk) you
73 	  can make the kernel continue when this happens,
74 	  but it'll lose the kernel messages.
75 
76 	  If unsure, say N.
77 
78 config PPDEV
79 	tristate "Support for user-space parallel port device drivers"
80 	depends on PARPORT
81 	help
82 	  Saying Y to this adds support for /dev/parport device nodes.  This
83 	  is needed for programs that want portable access to the parallel
84 	  port, for instance deviceid (which displays Plug-and-Play device
85 	  IDs).
86 
87 	  This is the parallel port equivalent of SCSI generic support (sg).
88 	  It is safe to say N to this -- it is not needed for normal printing
89 	  or parallel port CD-ROM/disk support.
90 
91 	  To compile this driver as a module, choose M here: the
92 	  module will be called ppdev.
93 
94 	  If unsure, say N.
95 
96 config VIRTIO_CONSOLE
97 	tristate "Virtio console"
98 	depends on TTY
99 	select HVC_DRIVER
100 	select VIRTIO
101 	help
102 	  Virtio console for use with hypervisors.
103 
104 	  Also serves as a general-purpose serial device for data
105 	  transfer between the guest and host.  Character devices at
106 	  /dev/vportNpn will be created when corresponding ports are
107 	  found, where N is the device number and n is the port number
108 	  within that device.  If specified by the host, a sysfs
109 	  attribute called 'name' will be populated with a name for
110 	  the port which can be used by udev scripts to create a
111 	  symlink to the device.
112 
113 config IBM_BSR
114 	tristate "IBM POWER Barrier Synchronization Register support"
115 	depends on PPC_PSERIES
116 	help
117 	  This devices exposes a hardware mechanism for fast synchronization
118 	  of threads across a large system which avoids bouncing a cacheline
119 	  between several cores on a system
120 
121 config POWERNV_OP_PANEL
122 	tristate "IBM POWERNV Operator Panel Display support"
123 	depends on PPC_POWERNV
124 	default m
125 	help
126 	  If you say Y here, a special character device node, /dev/op_panel,
127 	  will be created which exposes the operator panel display on IBM
128 	  Power Systems machines with FSPs.
129 
130 	  If you don't require access to the operator panel display from user
131 	  space, say N.
132 
133 	  If unsure, say M here to build it as a module called powernv-op-panel.
134 
135 source "drivers/char/ipmi/Kconfig"
136 
137 config DS1620
138 	tristate "NetWinder thermometer support"
139 	depends on ARCH_NETWINDER
140 	help
141 	  Say Y here to include support for the thermal management hardware
142 	  found in the NetWinder. This driver allows the user to control the
143 	  temperature set points and to read the current temperature.
144 
145 	  It is also possible to say M here to build it as a module (ds1620)
146 	  It is recommended to be used on a NetWinder, but it is not a
147 	  necessity.
148 
149 config NWBUTTON
150 	tristate "NetWinder Button"
151 	depends on ARCH_NETWINDER
152 	help
153 	  If you say Y here and create a character device node /dev/nwbutton
154 	  with major and minor numbers 10 and 158 ("man mknod"), then every
155 	  time the orange button is pressed a number of times, the number of
156 	  times the button was pressed will be written to that device.
157 
158 	  This is most useful for applications, as yet unwritten, which
159 	  perform actions based on how many times the button is pressed in a
160 	  row.
161 
162 	  Do not hold the button down for too long, as the driver does not
163 	  alter the behaviour of the hardware reset circuitry attached to the
164 	  button; it will still execute a hard reset if the button is held
165 	  down for longer than approximately five seconds.
166 
167 	  To compile this driver as a module, choose M here: the
168 	  module will be called nwbutton.
169 
170 	  Most people will answer Y to this question and "Reboot Using Button"
171 	  below to be able to initiate a system shutdown from the button.
172 
173 config NWBUTTON_REBOOT
174 	bool "Reboot Using Button"
175 	depends on NWBUTTON
176 	help
177 	  If you say Y here, then you will be able to initiate a system
178 	  shutdown and reboot by pressing the orange button a number of times.
179 	  The number of presses to initiate the shutdown is two by default,
180 	  but this can be altered by modifying the value of NUM_PRESSES_REBOOT
181 	  in nwbutton.h and recompiling the driver or, if you compile the
182 	  driver as a module, you can specify the number of presses at load
183 	  time with "insmod button reboot_count=<something>".
184 
185 config NWFLASH
186 	tristate "NetWinder flash support"
187 	depends on ARCH_NETWINDER
188 	help
189 	  If you say Y here and create a character device /dev/flash with
190 	  major 10 and minor 160 you can manipulate the flash ROM containing
191 	  the NetWinder firmware. Be careful as accidentally overwriting the
192 	  flash contents can render your computer unbootable. On no account
193 	  allow random users access to this device. :-)
194 
195 	  To compile this driver as a module, choose M here: the
196 	  module will be called nwflash.
197 
198 	  If you're not sure, say N.
199 
200 source "drivers/char/hw_random/Kconfig"
201 
202 config DTLK
203 	tristate "Double Talk PC internal speech card support"
204 	depends on ISA
205 	help
206 	  This driver is for the DoubleTalk PC, a speech synthesizer
207 	  manufactured by RC Systems (<https://www.rcsys.com/>).  It is also
208 	  called the `internal DoubleTalk'.
209 
210 	  To compile this driver as a module, choose M here: the
211 	  module will be called dtlk.
212 
213 config XILINX_HWICAP
214 	tristate "Xilinx HWICAP Support"
215 	depends on MICROBLAZE
216 	help
217 	  This option enables support for Xilinx Internal Configuration
218 	  Access Port (ICAP) driver.  The ICAP is used on Xilinx Virtex
219 	  FPGA platforms to partially reconfigure the FPGA at runtime.
220 
221 	  If unsure, say N.
222 
223 config APPLICOM
224 	tristate "Applicom intelligent fieldbus card support"
225 	depends on PCI
226 	help
227 	  This driver provides the kernel-side support for the intelligent
228 	  fieldbus cards made by Applicom International. More information
229 	  about these cards can be found on the WWW at the address
230 	  <https://www.applicom-int.com/>, or by email from David Woodhouse
231 	  <dwmw2@infradead.org>.
232 
233 	  To compile this driver as a module, choose M here: the
234 	  module will be called applicom.
235 
236 	  If unsure, say N.
237 
238 config SONYPI
239 	tristate "Sony Vaio Programmable I/O Control Device support"
240 	depends on X86_32 && PCI && INPUT
241 	help
242 	  This driver enables access to the Sony Programmable I/O Control
243 	  Device which can be found in many (all ?) Sony Vaio laptops.
244 
245 	  If you have one of those laptops, read
246 	  <file:Documentation/admin-guide/laptops/sonypi.rst>, and say Y or M here.
247 
248 	  To compile this driver as a module, choose M here: the
249 	  module will be called sonypi.
250 
251 config MWAVE
252 	tristate "ACP Modem (Mwave) support"
253 	depends on X86 && TTY
254 	select SERIAL_8250
255 	help
256 	  The ACP modem (Mwave) for Linux is a WinModem. It is composed of a
257 	  kernel driver and a user level application. Together these components
258 	  support direct attachment to public switched telephone networks (PSTNs)
259 	  and support selected world wide countries.
260 
261 	  This version of the ACP Modem driver supports the IBM Thinkpad 600E,
262 	  600, and 770 that include on board ACP modem hardware.
263 
264 	  The modem also supports the standard communications port interface
265 	  (ttySx) and is compatible with the Hayes AT Command Set.
266 
267 	  The user level application needed to use this driver can be found at
268 	  the IBM Linux Technology Center (LTC) web site:
269 	  <http://www.ibm.com/linux/ltc/>.
270 
271 	  If you own one of the above IBM Thinkpads which has the Mwave chipset
272 	  in it, say Y.
273 
274 	  To compile this driver as a module, choose M here: the
275 	  module will be called mwave.
276 
277 config SCx200_GPIO
278 	tristate "NatSemi SCx200 GPIO Support"
279 	depends on SCx200
280 	select NSC_GPIO
281 	help
282 	  Give userspace access to the GPIO pins on the National
283 	  Semiconductor SCx200 processors.
284 
285 	  If compiled as a module, it will be called scx200_gpio.
286 
287 config PC8736x_GPIO
288 	tristate "NatSemi PC8736x GPIO Support"
289 	depends on X86_32 && !UML
290 	default SCx200_GPIO	# mostly N
291 	select NSC_GPIO		# needed for support routines
292 	help
293 	  Give userspace access to the GPIO pins on the National
294 	  Semiconductor PC-8736x (x=[03456]) SuperIO chip.  The chip
295 	  has multiple functional units, inc several managed by
296 	  hwmon/pc87360 driver.  Tested with PC-87366
297 
298 	  If compiled as a module, it will be called pc8736x_gpio.
299 
300 config NSC_GPIO
301 	tristate "NatSemi Base GPIO Support"
302 	depends on X86_32
303 	# selected by SCx200_GPIO and PC8736x_GPIO
304 	# what about 2 selectors differing: m != y
305 	help
306 	  Common support used (and needed) by scx200_gpio and
307 	  pc8736x_gpio drivers.  If those drivers are built as
308 	  modules, this one will be too, named nsc_gpio
309 
310 config DEVMEM
311 	bool "/dev/mem virtual device support"
312 	default y
313 	help
314 	  Say Y here if you want to support the /dev/mem device.
315 	  The /dev/mem device is used to access areas of physical
316 	  memory.
317 	  When in doubt, say "Y".
318 
319 config NVRAM
320 	tristate "/dev/nvram support"
321 	depends on X86 || HAVE_ARCH_NVRAM_OPS
322 	default M68K || PPC
323 	help
324 	  If you say Y here and create a character special file /dev/nvram
325 	  with major number 10 and minor number 144 using mknod ("man mknod"),
326 	  you get read and write access to the non-volatile memory.
327 
328 	  /dev/nvram may be used to view settings in NVRAM or to change them
329 	  (with some utility). It could also be used to frequently
330 	  save a few bits of very important data that may not be lost over
331 	  power-off and for which writing to disk is too insecure. Note
332 	  however that most NVRAM space in a PC belongs to the BIOS and you
333 	  should NEVER idly tamper with it. See Ralf Brown's interrupt list
334 	  for a guide to the use of CMOS bytes by your BIOS.
335 
336 	  This memory is conventionally called "NVRAM" on PowerPC machines,
337 	  "CMOS RAM" on PCs, "NVRAM" on Ataris and "PRAM" on Macintoshes.
338 
339 	  To compile this driver as a module, choose M here: the
340 	  module will be called nvram.
341 
342 config DEVPORT
343 	bool "/dev/port character device"
344 	depends on HAS_IOPORT
345 	default y
346 	help
347 	  Say Y here if you want to support the /dev/port device. The /dev/port
348 	  device is similar to /dev/mem, but for I/O ports.
349 
350 config HPET
351 	bool "HPET - High Precision Event Timer" if X86
352 	default n
353 	depends on ACPI
354 	help
355 	  If you say Y here, you will have a miscdevice named "/dev/hpet/".  Each
356 	  open selects one of the timers supported by the HPET.  The timers are
357 	  non-periodic and/or periodic.
358 
359 config HPET_MMAP
360 	bool "Allow mmap of HPET"
361 	default y
362 	depends on HPET
363 	help
364 	  If you say Y here, user applications will be able to mmap
365 	  the HPET registers.
366 
367 config HPET_MMAP_DEFAULT
368 	bool "Enable HPET MMAP access by default"
369 	default y
370 	depends on HPET_MMAP
371 	help
372 	  In some hardware implementations, the page containing HPET
373 	  registers may also contain other things that shouldn't be
374 	  exposed to the user.  This option selects the default (if
375 	  kernel parameter hpet_mmap is not set) user access to the
376 	  registers for applications that require it.
377 
378 config HANGCHECK_TIMER
379 	tristate "Hangcheck timer"
380 	depends on X86 || PPC64 || S390
381 	help
382 	  The hangcheck-timer module detects when the system has gone
383 	  out to lunch past a certain margin.  It can reboot the system
384 	  or merely print a warning.
385 
386 config UV_MMTIMER
387 	tristate "UV_MMTIMER Memory mapped RTC for SGI UV"
388 	depends on X86_UV
389 	default m
390 	help
391 	  The uv_mmtimer device allows direct userspace access to the
392 	  UV system timer.
393 
394 source "drivers/char/tpm/Kconfig"
395 
396 config TELCLOCK
397 	tristate "Telecom clock driver for ATCA SBC"
398 	depends on X86
399 	default n
400 	help
401 	  The telecom clock device is specific to the MPCBL0010 and MPCBL0050
402 	  ATCA computers and allows direct userspace access to the
403 	  configuration of the telecom clock configuration settings.  This
404 	  device is used for hardware synchronization across the ATCA backplane
405 	  fabric.  Upon loading, the driver exports a sysfs directory,
406 	  /sys/devices/platform/telco_clock, with a number of files for
407 	  controlling the behavior of this hardware.
408 
409 source "drivers/s390/char/Kconfig"
410 
411 source "drivers/char/xillybus/Kconfig"
412 
413 config ADI
414 	tristate "SPARC Privileged ADI driver"
415 	depends on SPARC64
416 	default m
417 	help
418 	  SPARC M7 and newer processors utilize ADI (Application Data
419 	  Integrity) to version and protect memory.  This driver provides
420 	  read/write access to the ADI versions for privileged processes.
421 	  This feature is also known as MCD (Memory Corruption Detection)
422 	  and SSM (Silicon Secured Memory).  Intended consumers of this
423 	  driver include crash and makedumpfile.
424 
425 endmenu
426