xref: /openbmc/linux/drivers/tty/Kconfig (revision e8161447)
1# SPDX-License-Identifier: GPL-2.0
2config TTY
3	bool "Enable TTY" if EXPERT
4	default y
5	help
6	  Allows you to remove TTY support which can save space, and
7	  blocks features that require TTY from inclusion in the kernel.
8	  TTY is required for any text terminals or serial port
9	  communication. Most users should leave this enabled.
10
11if TTY
12
13config VT
14	bool "Virtual terminal" if EXPERT
15	select INPUT
16	default y if !UML
17	help
18	  If you say Y here, you will get support for terminal devices with
19	  display and keyboard devices. These are called "virtual" because you
20	  can run several virtual terminals (also called virtual consoles) on
21	  one physical terminal. This is rather useful, for example one
22	  virtual terminal can collect system messages and warnings, another
23	  one can be used for a text-mode user session, and a third could run
24	  an X session, all in parallel. Switching between virtual terminals
25	  is done with certain key combinations, usually Alt-<function key>.
26
27	  The setterm command ("man setterm") can be used to change the
28	  properties (such as colors or beeping) of a virtual terminal. The
29	  man page console_codes(4) ("man console_codes") contains the special
30	  character sequences that can be used to change those properties
31	  directly. The fonts used on virtual terminals can be changed with
32	  the setfont ("man setfont") command and the key bindings are defined
33	  with the loadkeys ("man loadkeys") command.
34
35	  You need at least one virtual terminal device in order to make use
36	  of your keyboard and monitor. Therefore, only people configuring an
37	  embedded system would want to say N here in order to save some
38	  memory; the only way to log into such a system is then via a serial
39	  or network connection.
40
41	  If unsure, say Y, or else you won't be able to do much with your new
42	  shiny Linux system :-)
43
44config CONSOLE_TRANSLATIONS
45	depends on VT
46	default y
47	bool "Enable character translations in console" if EXPERT
48	help
49	  This enables support for font mapping and Unicode translation
50	  on virtual consoles.
51
52config VT_CONSOLE
53	bool "Support for console on virtual terminal" if EXPERT
54	depends on VT
55	default y
56	help
57	  The system console is the device which receives all kernel messages
58	  and warnings and which allows logins in single user mode. If you
59	  answer Y here, a virtual terminal (the device used to interact with
60	  a physical terminal) can be used as system console. This is the most
61	  common mode of operations, so you should say Y here unless you want
62	  the kernel messages be output only to a serial port (in which case
63	  you should say Y to "Console on serial port", below).
64
65	  If you do say Y here, by default the currently visible virtual
66	  terminal (/dev/tty0) will be used as system console. You can change
67	  that with a kernel command line option such as "console=tty3" which
68	  would use the third virtual terminal as system console. (Try "man
69	  bootparam" or see the documentation of your boot loader (lilo or
70	  loadlin) about how to pass options to the kernel at boot time.)
71
72	  If unsure, say Y.
73
74config VT_CONSOLE_SLEEP
75	def_bool y
76	depends on VT_CONSOLE && PM_SLEEP
77
78config HW_CONSOLE
79	bool
80	depends on VT
81	default y
82
83config VT_HW_CONSOLE_BINDING
84	bool "Support for binding and unbinding console drivers"
85	depends on HW_CONSOLE
86	help
87	  The virtual terminal is the device that interacts with the physical
88	  terminal through console drivers. On these systems, at least one
89	  console driver is loaded. In other configurations, additional console
90	  drivers may be enabled, such as the framebuffer console. If more than
91	  1 console driver is enabled, setting this to 'y' will allow you to
92	  select the console driver that will serve as the backend for the
93	  virtual terminals.
94
95	  See <file:Documentation/driver-api/console.rst> for more
96	  information. For framebuffer console users, please refer to
97	  <file:Documentation/fb/fbcon.rst>.
98
99config UNIX98_PTYS
100	bool "Unix98 PTY support" if EXPERT
101	default y
102	help
103	  A pseudo terminal (PTY) is a software device consisting of two
104	  halves: a master and a slave. The slave device behaves identical to
105	  a physical terminal; the master device is used by a process to
106	  read data from and write data to the slave, thereby emulating a
107	  terminal. Typical programs for the master side are telnet servers
108	  and xterms.
109
110	  Linux has traditionally used the BSD-like names /dev/ptyxx for
111	  masters and /dev/ttyxx for slaves of pseudo terminals. This scheme
112	  has a number of problems. The GNU C library glibc 2.1 and later,
113	  however, supports the Unix98 naming standard: in order to acquire a
114	  pseudo terminal, a process opens /dev/ptmx; the number of the pseudo
115	  terminal is then made available to the process and the pseudo
116	  terminal slave can be accessed as /dev/pts/<number>. What was
117	  traditionally /dev/ttyp2 will then be /dev/pts/2, for example.
118
119	  All modern Linux systems use the Unix98 ptys.  Say Y unless
120	  you're on an embedded system and want to conserve memory.
121
122config LEGACY_PTYS
123	bool "Legacy (BSD) PTY support"
124	default y
125	help
126	  A pseudo terminal (PTY) is a software device consisting of two
127	  halves: a master and a slave. The slave device behaves identical to
128	  a physical terminal; the master device is used by a process to
129	  read data from and write data to the slave, thereby emulating a
130	  terminal. Typical programs for the master side are telnet servers
131	  and xterms.
132
133	  Linux has traditionally used the BSD-like names /dev/ptyxx
134	  for masters and /dev/ttyxx for slaves of pseudo
135	  terminals. This scheme has a number of problems, including
136	  security.  This option enables these legacy devices; on most
137	  systems, it is safe to say N.
138
139config LEGACY_PTY_COUNT
140	int "Maximum number of legacy PTY in use"
141	depends on LEGACY_PTYS
142	range 0 256
143	default "256"
144	help
145	  The maximum number of legacy PTYs that can be used at any one time.
146	  The default is 256, and should be more than enough.  Embedded
147	  systems may want to reduce this to save memory.
148
149	  When not in use, each legacy PTY occupies 12 bytes on 32-bit
150	  architectures and 24 bytes on 64-bit architectures.
151
152config LEGACY_TIOCSTI
153	bool "Allow legacy TIOCSTI usage"
154	default y
155	help
156	  Historically the kernel has allowed TIOCSTI, which will push
157	  characters into a controlling TTY. This continues to be used
158	  as a malicious privilege escalation mechanism, and provides no
159	  meaningful real-world utility any more. Its use is considered
160	  a dangerous legacy operation, and can be disabled on most
161	  systems.
162
163	  Say Y here only if you have confirmed that your system's
164	  userspace depends on this functionality to continue operating
165	  normally.
166
167	  This functionality can be changed at runtime with the
168	  dev.tty.legacy_tiocsti sysctl. This configuration option sets
169	  the default value of the sysctl.
170
171config LDISC_AUTOLOAD
172	bool "Automatically load TTY Line Disciplines"
173	default y
174	help
175	  Historically the kernel has always automatically loaded any
176	  line discipline that is in a kernel module when a user asks
177	  for it to be loaded with the TIOCSETD ioctl, or through other
178	  means.  This is not always the best thing to do on systems
179	  where you know you will not be using some of the more
180	  "ancient" line disciplines, so prevent the kernel from doing
181	  this unless the request is coming from a process with the
182	  CAP_SYS_MODULE permissions.
183
184	  Say 'Y' here if you trust your userspace users to do the right
185	  thing, or if you have only provided the line disciplines that
186	  you know you will be using, or if you wish to continue to use
187	  the traditional method of on-demand loading of these modules
188	  by any user.
189
190	  This functionality can be changed at runtime with the
191	  dev.tty.ldisc_autoload sysctl, this configuration option will
192	  only set the default value of this functionality.
193
194source "drivers/tty/serial/Kconfig"
195
196config SERIAL_NONSTANDARD
197	bool "Non-standard serial port support"
198	depends on HAS_IOMEM
199	help
200	  Say Y here if you have any non-standard serial boards -- boards
201	  which aren't supported using the standard "dumb" serial driver.
202	  This includes intelligent serial boards such as
203	  Digiboards, etc. These are usually used for systems that need many
204	  serial ports because they serve many terminals or dial-in
205	  connections.
206
207	  Note that the answer to this question won't directly affect the
208	  kernel: saying N will just cause the configurator to skip all
209	  the questions about non-standard serial boards.
210
211	  Most people can say N here.
212
213config MOXA_INTELLIO
214	tristate "Moxa Intellio support"
215	depends on SERIAL_NONSTANDARD && (ISA || EISA || PCI)
216	select FW_LOADER
217	help
218	  Say Y here if you have a Moxa Intellio multiport serial card.
219
220	  To compile this driver as a module, choose M here: the
221	  module will be called moxa.
222
223config MOXA_SMARTIO
224	tristate "Moxa SmartIO support v. 2.0"
225	depends on SERIAL_NONSTANDARD && PCI
226	help
227	  Say Y here if you have a Moxa SmartIO multiport serial card and/or
228	  want to help develop a new version of this driver.
229
230	  This is upgraded (1.9.1) driver from original Moxa drivers with
231	  changes finally resulting in PCI probing.
232
233	  This driver can also be built as a module. The module will be called
234	  mxser. If you want to do that, say M here.
235
236config SYNCLINK_GT
237	tristate "SyncLink GT/AC support"
238	depends on SERIAL_NONSTANDARD && PCI
239	depends on BROKEN
240	help
241	  Support for SyncLink GT and SyncLink AC families of
242	  synchronous and asynchronous serial adapters
243	  manufactured by Microgate Systems, Ltd. (www.microgate.com)
244
245config N_HDLC
246	tristate "HDLC line discipline support"
247	depends on SERIAL_NONSTANDARD
248	help
249	  Allows synchronous HDLC communications with tty device drivers that
250	  support synchronous HDLC such as the Microgate SyncLink adapter.
251
252	  This driver can be built as a module ( = code which can be
253	  inserted in and removed from the running kernel whenever you want).
254	  The module will be called n_hdlc. If you want to do that, say M
255	  here.
256
257config PPC_EPAPR_HV_BYTECHAN
258	bool "ePAPR hypervisor byte channel driver"
259	depends on PPC
260	select EPAPR_PARAVIRT
261	help
262	  This driver creates /dev entries for each ePAPR hypervisor byte
263	  channel, thereby allowing applications to communicate with byte
264	  channels as if they were serial ports.
265
266config PPC_EARLY_DEBUG_EHV_BC
267	bool "Early console (udbg) support for ePAPR hypervisors"
268	depends on PPC_EPAPR_HV_BYTECHAN=y
269	help
270	  Select this option to enable early console (a.k.a. "udbg") support
271	  via an ePAPR byte channel.  You also need to choose the byte channel
272	  handle below.
273
274config PPC_EARLY_DEBUG_EHV_BC_HANDLE
275	int "Byte channel handle for early console (udbg)"
276	depends on PPC_EARLY_DEBUG_EHV_BC
277	default 0
278	help
279	  If you want early console (udbg) output through a byte channel,
280	  specify the handle of the byte channel to use.
281
282	  For this to work, the byte channel driver must be compiled
283	  in-kernel, not as a module.
284
285	  Note that only one early console driver can be enabled, so don't
286	  enable any others if you enable this one.
287
288	  If the number you specify is not a valid byte channel handle, then
289	  there simply will be no early console output.  This is true also
290	  if you don't boot under a hypervisor at all.
291
292config GOLDFISH_TTY
293	tristate "Goldfish TTY Driver"
294	depends on GOLDFISH
295	select SERIAL_CORE
296	select SERIAL_CORE_CONSOLE
297	help
298	  Console and system TTY driver for the Goldfish virtual platform.
299
300config GOLDFISH_TTY_EARLY_CONSOLE
301	bool
302	default y if GOLDFISH_TTY=y
303	select SERIAL_EARLYCON
304
305config IPWIRELESS
306	tristate "IPWireless 3G UMTS PCMCIA card support"
307	depends on PCMCIA && NETDEVICES
308	select PPP
309	help
310	  This is a driver for 3G UMTS PCMCIA card from IPWireless company. In
311	  some countries (for example Czech Republic, T-Mobile ISP) this card
312	  is shipped for service called UMTS 4G.
313
314config N_GSM
315	tristate "GSM MUX line discipline support (EXPERIMENTAL)"
316	depends on NET
317	help
318	  This line discipline provides support for the GSM MUX protocol and
319	  presents the mux as a set of 61 individual tty devices.
320
321config NOZOMI
322	tristate "HSDPA Broadband Wireless Data Card - Globe Trotter"
323	depends on PCI
324	help
325	  If you have a HSDPA driver Broadband Wireless Data Card -
326	  Globe Trotter PCMCIA card, say Y here.
327
328	  To compile this driver as a module, choose M here, the module
329	  will be called nozomi.
330
331config MIPS_EJTAG_FDC_TTY
332	bool "MIPS EJTAG Fast Debug Channel TTY"
333	depends on MIPS_CDMM
334	help
335	  This enables a TTY and console on the MIPS EJTAG Fast Debug Channels,
336	  if they are present. This can be useful when working with an EJTAG
337	  probe which supports it, to get console output and a login prompt via
338	  EJTAG without needing to connect a serial cable.
339
340	  TTY devices are named e.g. ttyFDC3c2 (for FDC channel 2 of the FDC on
341	  CPU3).
342
343	  The console can be enabled with console=fdc1 (for FDC channel 1 on all
344	  CPUs). Do not use the console unless there is a debug probe attached
345	  to drain the FDC TX FIFO.
346
347	  If unsure, say N.
348
349config MIPS_EJTAG_FDC_EARLYCON
350	bool "Early FDC console"
351	depends on MIPS_EJTAG_FDC_TTY
352	help
353	  This registers a console on FDC channel 1 very early during boot (from
354	  MIPS arch code). This is useful for bring-up and debugging early boot
355	  issues.
356
357	  Do not enable unless there is a debug probe attached to drain the FDC
358	  TX FIFO.
359
360	  If unsure, say N.
361
362config MIPS_EJTAG_FDC_KGDB
363	bool "Use KGDB over an FDC channel"
364	depends on MIPS_EJTAG_FDC_TTY && KGDB
365	default y
366	help
367	  This enables the use of KGDB over an FDC channel, allowing KGDB to be
368	  used remotely or when a serial port isn't available.
369
370config MIPS_EJTAG_FDC_KGDB_CHAN
371	int "KGDB FDC channel"
372	depends on MIPS_EJTAG_FDC_KGDB
373	range 2 15
374	default 3
375	help
376	  FDC channel number to use for KGDB.
377
378config NULL_TTY
379	tristate "NULL TTY driver"
380	help
381	  Say Y here if you want a NULL TTY which simply discards messages.
382
383	  This is useful to allow userspace applications which expect a console
384	  device to work without modifications even when no console is
385	  available or desired.
386
387	  In order to use this driver, you should redirect the console to this
388	  TTY, or boot the kernel with console=ttynull.
389
390	  If unsure, say N.
391
392config VCC
393	tristate "Sun Virtual Console Concentrator"
394	depends on SUN_LDOMS
395	help
396	  Support for Sun logical domain consoles.
397
398source "drivers/tty/hvc/Kconfig"
399
400config RPMSG_TTY
401	tristate "RPMSG tty driver"
402	depends on RPMSG
403	help
404	  Say y here to export rpmsg endpoints as tty devices, usually found
405	  in /dev/ttyRPMSGx.
406	  This makes it possible for user-space programs to send and receive
407	  rpmsg messages as a standard tty protocol.
408
409	  To compile this driver as a module, choose M here: the module will be
410	  called rpmsg_tty.
411
412endif # TTY
413
414source "drivers/tty/serdev/Kconfig"
415