0001 # SPDX-License-Identifier: GPL-2.0
0002 #
0003 # The 8250/16550 serial drivers. You shouldn't be in this list unless
0004 # you somehow have an implicit or explicit dependency on SERIAL_8250.
0005 #
0006
0007 config SERIAL_8250
0008 tristate "8250/16550 and compatible serial support"
0009 depends on !S390
0010 select SERIAL_CORE
0011 select SERIAL_MCTRL_GPIO if GPIOLIB
0012 help
0013 This selects whether you want to include the driver for the standard
0014 serial ports. The standard answer is Y. People who might say N
0015 here are those that are setting up dedicated Ethernet WWW/FTP
0016 servers, or users that have one of the various bus mice instead of a
0017 serial mouse and don't intend to use their machine's standard serial
0018 port for anything.
0019
0020 To compile this driver as a module, choose M here: the
0021 module will be called 8250.
0022 [WARNING: Do not compile this driver as a module if you are using
0023 non-standard serial ports, since the configuration information will
0024 be lost when the driver is unloaded. This limitation may be lifted
0025 in the future.]
0026
0027 BTW1: If you have a mouseman serial mouse which is not recognized by
0028 the X window system, try running gpm first.
0029
0030 BTW2: If you intend to use a software modem (also called Winmodem)
0031 under Linux, forget it. These modems are crippled and require
0032 proprietary drivers which are only available under Windows.
0033
0034 Most people will say Y or M here, so that they can use serial mice,
0035 modems and similar devices connecting to the standard serial ports.
0036
0037 config SERIAL_8250_DEPRECATED_OPTIONS
0038 bool "Support 8250_core.* kernel options (DEPRECATED)"
0039 depends on SERIAL_8250
0040 default y
0041 help
0042 In 3.7 we renamed 8250 to 8250_core by mistake, so now we have to
0043 accept kernel parameters in both forms like 8250_core.nr_uarts=4 and
0044 8250.nr_uarts=4. We now renamed the module back to 8250, but if
0045 anybody noticed in 3.7 and changed their userspace we still have to
0046 keep the 8250_core.* options around until they revert the changes
0047 they already did.
0048
0049 If 8250 is built as a module, this adds 8250_core alias instead.
0050
0051 If you did not notice yet and/or you have userspace from pre-3.7, it
0052 is safe (and recommended) to say N here.
0053
0054 config SERIAL_8250_PNP
0055 bool "8250/16550 PNP device support" if EXPERT
0056 depends on SERIAL_8250 && PNP
0057 default y
0058 help
0059 This builds standard PNP serial support. You may be able to
0060 disable this feature if you only need legacy serial support.
0061
0062 config SERIAL_8250_16550A_VARIANTS
0063 bool "Support for variants of the 16550A serial port"
0064 depends on SERIAL_8250
0065 default !X86
0066 help
0067 The 8250 driver can probe for many variants of the venerable 16550A
0068 serial port. Doing so takes additional time at boot.
0069
0070 On modern systems, especially those using serial only for a simple
0071 console, you can say N here.
0072
0073 config SERIAL_8250_FINTEK
0074 bool "Support for Fintek F81216A LPC to 4 UART RS485 API"
0075 depends on SERIAL_8250
0076 help
0077 Selecting this option will add support for the RS485 capabilities
0078 of the Fintek F81216A LPC to 4 UART.
0079
0080 If this option is not selected the device will be configured as a
0081 standard 16550A serial port.
0082
0083 If unsure, say N.
0084
0085 config SERIAL_8250_CONSOLE
0086 bool "Console on 8250/16550 and compatible serial port"
0087 depends on SERIAL_8250=y
0088 select SERIAL_CORE_CONSOLE
0089 select SERIAL_EARLYCON
0090 help
0091 If you say Y here, it will be possible to use a serial port as the
0092 system console (the system console is the device which receives all
0093 kernel messages and warnings and which allows logins in single user
0094 mode). This could be useful if some terminal or printer is connected
0095 to that serial port.
0096
0097 Even if you say Y here, the currently visible virtual console
0098 (/dev/tty0) will still be used as the system console by default, but
0099 you can alter that using a kernel command line option such as
0100 "console=ttyS1". (Try "man bootparam" or see the documentation of
0101 your boot loader (grub or lilo or loadlin) about how to pass options
0102 to the kernel at boot time.)
0103
0104 If you don't have a VGA card installed and you say Y here, the
0105 kernel will automatically use the first serial line, /dev/ttyS0, as
0106 system console.
0107
0108 You can set that using a kernel command line option such as
0109 "console=uart8250,io,0x3f8,9600n8"
0110 "console=uart8250,mmio,0xff5e0000,115200n8".
0111 and it will switch to normal serial console when the corresponding
0112 port is ready.
0113 "earlycon=uart8250,io,0x3f8,9600n8"
0114 "earlycon=uart8250,mmio,0xff5e0000,115200n8".
0115 it will not only setup early console.
0116
0117 If unsure, say N.
0118
0119 config SERIAL_8250_GSC
0120 tristate
0121 depends on SERIAL_8250 && GSC
0122 default SERIAL_8250
0123
0124 config SERIAL_8250_DMA
0125 bool "DMA support for 16550 compatible UART controllers" if EXPERT
0126 depends on SERIAL_8250 && DMADEVICES=y
0127 default SERIAL_8250
0128 help
0129 This builds DMA support that can be used with 8250/16650
0130 compatible UART controllers that support DMA signaling.
0131
0132 config SERIAL_8250_PCI
0133 tristate "8250/16550 PCI device support"
0134 depends on SERIAL_8250 && PCI
0135 default SERIAL_8250
0136 help
0137 This builds standard PCI serial support. You may be able to
0138 disable this feature if you only need legacy serial support.
0139 Saves about 9K.
0140 Note that serial ports on NetMos 9835 Multi-I/O cards are handled
0141 by the parport_serial driver, enabled with CONFIG_PARPORT_SERIAL.
0142
0143 config SERIAL_8250_EXAR
0144 tristate "8250/16550 Exar/Commtech PCI/PCIe device support"
0145 depends on SERIAL_8250_PCI
0146 default SERIAL_8250
0147 help
0148 This builds support for XR17C1xx, XR17V3xx and some Commtech
0149 422x PCIe serial cards that are not covered by the more generic
0150 SERIAL_8250_PCI option.
0151
0152 config SERIAL_8250_HP300
0153 tristate
0154 depends on SERIAL_8250 && HP300
0155 default SERIAL_8250
0156
0157 config SERIAL_8250_CS
0158 tristate "8250/16550 PCMCIA device support"
0159 depends on PCMCIA && SERIAL_8250
0160 help
0161 Say Y here to enable support for 16-bit PCMCIA serial devices,
0162 including serial port cards, modems, and the modem functions of
0163 multi-function Ethernet/modem cards. (PCMCIA- or PC-cards are
0164 credit-card size devices often used with laptops.)
0165
0166 To compile this driver as a module, choose M here: the
0167 module will be called serial_cs.
0168
0169 If unsure, say N.
0170
0171 config SERIAL_8250_MEN_MCB
0172 tristate "MEN MCB UART device support"
0173 depends on MCB && SERIAL_8250
0174 help
0175 This enables support for FPGA based UARTs found on many MEN
0176 boards. This driver enables support for the 16z025, 16z057
0177 and 16z125 UARTs.
0178
0179 To compile this driver as a module, chose M here: the
0180 module will be called 8250_men_mcb.
0181
0182
0183 config SERIAL_8250_NR_UARTS
0184 int "Maximum number of 8250/16550 serial ports"
0185 depends on SERIAL_8250
0186 default "4"
0187 help
0188 Set this to the number of serial ports you want the driver
0189 to support. This includes any ports discovered via ACPI or
0190 PCI enumeration and any ports that may be added at run-time
0191 via hot-plug, or any ISA multi-port serial cards.
0192
0193 config SERIAL_8250_RUNTIME_UARTS
0194 int "Number of 8250/16550 serial ports to register at runtime"
0195 depends on SERIAL_8250
0196 range 0 SERIAL_8250_NR_UARTS
0197 default "4"
0198 help
0199 Set this to the maximum number of serial ports you want
0200 the kernel to register at boot time. This can be overridden
0201 with the module parameter "nr_uarts", or boot-time parameter
0202 8250.nr_uarts
0203
0204 config SERIAL_8250_EXTENDED
0205 bool "Extended 8250/16550 serial driver options"
0206 depends on SERIAL_8250
0207 help
0208 If you wish to use any non-standard features of the standard "dumb"
0209 driver, say Y here. This includes HUB6 support, shared serial
0210 interrupts, special multiport support, support for more than the
0211 four COM 1/2/3/4 boards, etc.
0212
0213 Note that the answer to this question won't directly affect the
0214 kernel: saying N will just cause the configurator to skip all
0215 the questions about serial driver options. If unsure, say N.
0216
0217 config SERIAL_8250_MANY_PORTS
0218 bool "Support more than 4 legacy serial ports"
0219 depends on SERIAL_8250_EXTENDED && !IA64
0220 help
0221 Say Y here if you have dumb serial boards other than the four
0222 standard COM 1/2/3/4 ports. This may happen if you have an AST
0223 FourPort, Accent Async, Boca (read the Boca mini-HOWTO, available
0224 from <https://www.tldp.org/docs.html#howto>), or other custom
0225 serial port hardware which acts similar to standard serial port
0226 hardware. If you only use the standard COM 1/2/3/4 ports, you can
0227 say N here to save some memory. You can also say Y if you have an
0228 "intelligent" multiport card such as Digiboards, etc.
0229
0230 #
0231 # Multi-port serial cards
0232 #
0233
0234 config SERIAL_8250_FOURPORT
0235 tristate "Support Fourport cards"
0236 depends on SERIAL_8250 != n && ISA && SERIAL_8250_MANY_PORTS
0237 help
0238 Say Y here if you have an AST FourPort serial board.
0239
0240 To compile this driver as a module, choose M here: the module
0241 will be called 8250_fourport.
0242
0243 config SERIAL_8250_ACCENT
0244 tristate "Support Accent cards"
0245 depends on SERIAL_8250 != n && ISA && SERIAL_8250_MANY_PORTS
0246 help
0247 Say Y here if you have an Accent Async serial board.
0248
0249 To compile this driver as a module, choose M here: the module
0250 will be called 8250_accent.
0251
0252 config SERIAL_8250_ASPEED_VUART
0253 tristate "Aspeed Virtual UART"
0254 depends on SERIAL_8250
0255 depends on OF
0256 depends on REGMAP && MFD_SYSCON
0257 depends on ARCH_ASPEED || COMPILE_TEST
0258 help
0259 If you want to use the virtual UART (VUART) device on Aspeed
0260 BMC platforms, enable this option. This enables the 16550A-
0261 compatible device on the local LPC bus, giving a UART device
0262 with no physical RS232 connections.
0263
0264 config SERIAL_8250_BOCA
0265 tristate "Support Boca cards"
0266 depends on SERIAL_8250 != n && ISA && SERIAL_8250_MANY_PORTS
0267 help
0268 Say Y here if you have a Boca serial board. Please read the Boca
0269 mini-HOWTO, available from <https://www.tldp.org/docs.html#howto>
0270
0271 To compile this driver as a module, choose M here: the module
0272 will be called 8250_boca.
0273
0274 config SERIAL_8250_EXAR_ST16C554
0275 tristate "Support Exar ST16C554/554D Quad UART"
0276 depends on SERIAL_8250 != n && ISA && SERIAL_8250_MANY_PORTS
0277 help
0278 The Uplogix Envoy TU301 uses this Exar Quad UART. If you are
0279 tinkering with your Envoy TU301, or have a machine with this UART,
0280 say Y here.
0281
0282 To compile this driver as a module, choose M here: the module
0283 will be called 8250_exar_st16c554.
0284
0285 config SERIAL_8250_HUB6
0286 tristate "Support Hub6 cards"
0287 depends on SERIAL_8250 != n && ISA && SERIAL_8250_MANY_PORTS
0288 help
0289 Say Y here if you have a HUB6 serial board.
0290
0291 To compile this driver as a module, choose M here: the module
0292 will be called 8250_hub6.
0293
0294 #
0295 # Misc. options/drivers.
0296 #
0297
0298 config SERIAL_8250_SHARE_IRQ
0299 bool "Support for sharing serial interrupts"
0300 depends on SERIAL_8250_EXTENDED
0301 help
0302 Some serial boards have hardware support which allows multiple dumb
0303 serial ports on the same board to share a single IRQ. To enable
0304 support for this in the serial driver, say Y here.
0305
0306 config SERIAL_8250_DETECT_IRQ
0307 bool "Autodetect IRQ on standard ports (unsafe)"
0308 depends on SERIAL_8250_EXTENDED
0309 help
0310 Say Y here if you want the kernel to try to guess which IRQ
0311 to use for your serial port.
0312
0313 This is considered unsafe; it is far better to configure the IRQ in
0314 a boot script using the setserial command.
0315
0316 If unsure, say N.
0317
0318 config SERIAL_8250_RSA
0319 bool "Support RSA serial ports"
0320 depends on SERIAL_8250_EXTENDED
0321 help
0322 Say Y here if you have a IODATA RSA-DV II/S ISA card and
0323 would like to use its >115kbps speeds.
0324 You will need to provide module parameter "probe_rsa", or boot-time
0325 parameter 8250.probe_rsa with I/O addresses of this card then.
0326
0327 If you don't have such card, or if unsure, say N.
0328
0329 config SERIAL_8250_DWLIB
0330 bool
0331
0332 config SERIAL_8250_ACORN
0333 tristate "Acorn expansion card serial port support"
0334 depends on ARCH_ACORN && SERIAL_8250
0335 help
0336 If you have an Atomwide Serial card or Serial Port card for an Acorn
0337 system, say Y to this option. The driver can handle 1, 2, or 3 port
0338 cards. If unsure, say N.
0339
0340 config SERIAL_8250_BCM2835AUX
0341 tristate "BCM2835 auxiliar mini UART support"
0342 depends on ARCH_BCM2835 || COMPILE_TEST
0343 depends on SERIAL_8250 && SERIAL_8250_SHARE_IRQ
0344 help
0345 Support for the BCM2835 auxiliar mini UART.
0346
0347 Features and limitations of the UART are
0348 Registers are similar to 16650 registers,
0349 set bits in the control registers that are unsupported
0350 are ignored and read back as 0
0351 7/8 bit operation with 1 start and 1 stop bit
0352 8 symbols deep fifo for rx and tx
0353 SW controlled RTS and SW readable CTS
0354 Clock rate derived from system clock
0355 Uses 8 times oversampling (compared to 16 times for 16650)
0356 Missing break detection (but break generation)
0357 Missing framing error detection
0358 Missing parity bit
0359 Missing receive time-out interrupt
0360 Missing DCD, DSR, DTR and RI signals
0361
0362 If unsure, say N.
0363
0364 config SERIAL_8250_FSL
0365 bool "Freescale 16550 UART support" if COMPILE_TEST && !(PPC || ARM || ARM64)
0366 depends on SERIAL_8250_CONSOLE
0367 default PPC || ARM || ARM64
0368 help
0369 Selecting this option enables a workaround for a break-detection
0370 erratum for Freescale 16550 UARTs in the 8250 driver. It also
0371 enables support for ACPI enumeration.
0372
0373 config SERIAL_8250_DW
0374 tristate "Support for Synopsys DesignWare 8250 quirks"
0375 depends on SERIAL_8250
0376 select SERIAL_8250_DWLIB
0377 help
0378 Selecting this option will enable handling of the extra features
0379 present in the Synopsys DesignWare APB UART.
0380
0381 config SERIAL_8250_EM
0382 tristate "Support for Emma Mobile integrated serial port"
0383 depends on SERIAL_8250 && HAVE_CLK
0384 depends on ARCH_RENESAS || COMPILE_TEST
0385 help
0386 Selecting this option will add support for the integrated serial
0387 port hardware found on the Emma Mobile line of processors.
0388 If unsure, say N.
0389
0390 config SERIAL_8250_IOC3
0391 tristate "SGI IOC3 8250 UART support"
0392 depends on SERIAL_8250
0393 depends on SGI_MFD_IOC3 || COMPILE_TEST
0394 select SERIAL_8250_EXTENDED
0395 select SERIAL_8250_SHARE_IRQ
0396 help
0397 Enable this if you have a SGI Origin or Octane machine. This module
0398 provides basic serial support by directly driving the UART chip
0399 behind the IOC3 device on those systems. Maximum baud speed is
0400 38400bps using this driver.
0401
0402 config SERIAL_8250_RT288X
0403 bool "Ralink RT288x/RT305x/RT3662/RT3883 serial port support"
0404 depends on SERIAL_8250
0405 default y if MIPS_ALCHEMY || SOC_RT288X || SOC_RT305X || SOC_RT3883 || SOC_MT7620
0406 help
0407 Selecting this option will add support for the alternate register
0408 layout used by Ralink RT288x/RT305x, Alchemy Au1xxx, and some others.
0409 If unsure, say N.
0410
0411 config SERIAL_8250_OMAP
0412 tristate "Support for OMAP internal UART (8250 based driver)"
0413 depends on SERIAL_8250
0414 depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
0415 help
0416 If you have a machine based on an Texas Instruments OMAP CPU you
0417 can enable its onboard serial ports by enabling this option.
0418
0419 This driver uses ttyS instead of ttyO.
0420
0421 config SERIAL_8250_OMAP_TTYO_FIXUP
0422 bool "Replace ttyO with ttyS"
0423 depends on SERIAL_8250_OMAP=y && SERIAL_8250_CONSOLE
0424 default y
0425 help
0426 This option replaces the "console=ttyO" argument with the matching
0427 ttyS argument if the user did not specified it on the command line.
0428 This ensures that the user can see the kernel output during boot
0429 which he wouldn't see otherwise. The getty has still to be configured
0430 for ttyS instead of ttyO regardless of this option.
0431 This option is intended for people who "automatically" enable this
0432 driver without knowing that this driver requires a different console=
0433 argument. If you read this, please keep this option disabled and
0434 instead update your kernel command line. If you prepare a kernel for a
0435 distribution or other kind of larger user base then you probably want
0436 to keep this option enabled. Otherwise people might complain about a
0437 not booting kernel because the serial console remains silent in case
0438 they forgot to update the command line.
0439
0440 config SERIAL_8250_LPC18XX
0441 tristate "NXP LPC18xx/43xx serial port support"
0442 depends on SERIAL_8250 && OF && (ARCH_LPC18XX || COMPILE_TEST)
0443 default ARCH_LPC18XX
0444 help
0445 If you have a LPC18xx/43xx based board and want to use the
0446 serial port, say Y to this option. If unsure, say Y.
0447
0448 config SERIAL_8250_MT6577
0449 tristate "Mediatek serial port support"
0450 depends on SERIAL_8250
0451 depends on ARCH_MEDIATEK || COMPILE_TEST
0452 help
0453 If you have a Mediatek based board and want to use the
0454 serial port, say Y to this option. If unsure, say N.
0455
0456 config SERIAL_8250_UNIPHIER
0457 tristate "Support for UniPhier on-chip UART"
0458 depends on SERIAL_8250
0459 depends on ARCH_UNIPHIER || COMPILE_TEST
0460 help
0461 If you have a UniPhier based board and want to use the on-chip
0462 serial ports, say Y to this option. If unsure, say N.
0463
0464 config SERIAL_8250_INGENIC
0465 tristate "Support for Ingenic SoC serial ports"
0466 depends on SERIAL_8250
0467 depends on OF_FLATTREE
0468 depends on MIPS || COMPILE_TEST
0469 help
0470 If you have a system using an Ingenic SoC and wish to make use of
0471 its UARTs, say Y to this option. If unsure, say N.
0472
0473 config SERIAL_8250_LPSS
0474 tristate "Support for serial ports on Intel LPSS platforms"
0475 default SERIAL_8250
0476 depends on SERIAL_8250 && PCI
0477 depends on X86 || COMPILE_TEST
0478 select SERIAL_8250_DWLIB
0479 select DW_DMAC_CORE if SERIAL_8250_DMA
0480 select DW_DMAC_PCI if (SERIAL_8250_DMA && X86_INTEL_LPSS)
0481 select RATIONAL
0482 help
0483 Selecting this option will enable handling of the UART found on
0484 various Intel platforms such as:
0485 - Intel Baytrail SoC
0486 - Intel Braswell SoC
0487 - Intel Quark X1000 SoC
0488 that are not covered by the more generic SERIAL_8250_PCI option.
0489
0490 config SERIAL_8250_MID
0491 tristate "Support for serial ports on Intel MID platforms"
0492 default SERIAL_8250
0493 depends on SERIAL_8250 && PCI
0494 depends on X86 || COMPILE_TEST
0495 select HSU_DMA if SERIAL_8250_DMA
0496 select HSU_DMA_PCI if (HSU_DMA && X86_INTEL_MID)
0497 select RATIONAL
0498 help
0499 Selecting this option will enable handling of the UART found on
0500 Intel Medfield SOC and various other Intel platforms that is not
0501 covered by the more generic SERIAL_8250_PCI option.
0502
0503 config SERIAL_8250_PERICOM
0504 tristate "Support for Pericom and Acces I/O serial ports"
0505 default SERIAL_8250
0506 depends on SERIAL_8250 && PCI
0507 help
0508 Selecting this option will enable handling of the Pericom and Acces
0509 I/O UARTs that are not covered by the more generic SERIAL_8250_PCI
0510 option.
0511
0512 config SERIAL_8250_PXA
0513 tristate "PXA serial port support"
0514 depends on SERIAL_8250
0515 depends on ARCH_PXA || ARCH_MMP || COMPILE_TEST
0516 help
0517 If you have a machine based on an Intel XScale PXA2xx CPU you can
0518 enable its onboard serial ports by enabling this option. The option is
0519 applicable to both devicetree and legacy boards, and early console is
0520 part of its support.
0521
0522 config SERIAL_8250_TEGRA
0523 tristate "8250 support for Tegra serial ports"
0524 default SERIAL_8250
0525 depends on SERIAL_8250
0526 depends on ARCH_TEGRA || COMPILE_TEST
0527 help
0528 Select this option if you have machine with an NVIDIA Tegra SoC and
0529 wish to enable 8250 serial driver for the Tegra serial interfaces.
0530
0531 config SERIAL_8250_BCM7271
0532 tristate "Broadcom 8250 based serial port"
0533 depends on SERIAL_8250 && (ARCH_BRCMSTB || COMPILE_TEST)
0534 default ARCH_BRCMSTB
0535 help
0536 If you have a Broadcom STB based board and want to use the
0537 enhanced features of the Broadcom 8250 based serial port,
0538 including DMA support and high accuracy BAUD rates, say
0539 Y to this option. If unsure, say N.
0540
0541 config SERIAL_OF_PLATFORM
0542 tristate "Devicetree based probing for 8250 ports"
0543 depends on SERIAL_8250 && OF
0544 help
0545 This option is used for all 8250 compatible serial ports that
0546 are probed through devicetree, including Open Firmware based
0547 PowerPC systems and embedded systems on architectures using the
0548 flattened device tree format.