tty: Added a CONFIG_TTY option to allow removal of TTY
authorJoe Millenbach <jmillenbach@gmail.com>
Fri, 18 Jan 2013 06:44:22 +0000 (22:44 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 19 Jan 2013 00:15:27 +0000 (16:15 -0800)
The option allows you to remove TTY and compile without errors. This
saves space on systems that won't support TTY interfaces anyway.
bloat-o-meter output is below.

The bulk of this patch consists of Kconfig changes adding "depends on
TTY" to various serial devices and similar drivers that require the TTY
layer.  Ideally, these dependencies would occur on a common intermediate
symbol such as SERIO, but most drivers "select SERIO" rather than
"depends on SERIO", and "select" does not respect dependencies.

bloat-o-meter output comparing our previous minimal to new minimal by
removing TTY.  The list is filtered to not show removed entries with awk
'$3 != "-"' as the list was very long.

add/remove: 0/226 grow/shrink: 2/14 up/down: 6/-35356 (-35350)
function                                     old     new   delta
chr_dev_init                                 166     170      +4
allow_signal                                  80      82      +2
static.__warned                              143     142      -1
disallow_signal                               63      62      -1
__set_special_pids                            95      94      -1
unregister_console                           126     121      -5
start_kernel                                 546     541      -5
register_console                             593     588      -5
copy_from_user                                45      40      -5
sys_setsid                                   128     120      -8
sys_vhangup                                   32      19     -13
do_exit                                     1543    1526     -17
bitmap_zero                                   60      40     -20
arch_local_irq_save                          137     117     -20
release_task                                 674     652     -22
static.spin_unlock_irqrestore                308     260     -48

Signed-off-by: Joe Millenbach <jmillenbach@gmail.com>
Reviewed-by: Jamey Sharp <jamey@minilop.net>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
55 files changed:
arch/alpha/Kconfig
arch/ia64/hp/sim/Kconfig
arch/m68k/Kconfig.devices
arch/parisc/Kconfig
arch/tile/Kconfig
arch/um/Kconfig.common
arch/xtensa/Kconfig
drivers/bluetooth/Kconfig
drivers/char/Kconfig
drivers/char/pcmcia/Kconfig
drivers/i2c/busses/Kconfig
drivers/input/joystick/Kconfig
drivers/input/keyboard/Kconfig
drivers/input/mouse/Kconfig
drivers/input/serio/Kconfig
drivers/input/touchscreen/Kconfig
drivers/ipack/devices/Kconfig
drivers/isdn/Kconfig
drivers/isdn/capi/Kconfig
drivers/isdn/gigaset/Kconfig
drivers/isdn/hardware/mISDN/Kconfig
drivers/lguest/Kconfig
drivers/media/radio/wl128x/Kconfig
drivers/misc/Kconfig
drivers/misc/ti-st/Kconfig
drivers/mmc/card/Kconfig
drivers/net/caif/Kconfig
drivers/net/can/Kconfig
drivers/net/hamradio/Kconfig
drivers/net/irda/Kconfig
drivers/net/ppp/Kconfig
drivers/net/slip/Kconfig
drivers/net/usb/Kconfig
drivers/net/wan/Kconfig
drivers/pps/clients/Kconfig
drivers/s390/char/Kconfig
drivers/staging/ccg/Kconfig
drivers/staging/dgrp/Kconfig
drivers/staging/fwserial/Kconfig
drivers/staging/sb105x/Kconfig
drivers/tty/Kconfig
drivers/tty/Makefile
drivers/tty/hvc/Kconfig
drivers/tty/serial/Kconfig
drivers/usb/class/Kconfig
drivers/usb/gadget/Kconfig
drivers/usb/serial/Kconfig
fs/proc/Makefile
include/linux/console.h
include/linux/proc_fs.h
include/linux/tty.h
lib/Kconfig.kgdb
net/bluetooth/rfcomm/Kconfig
net/irda/ircomm/Kconfig
sound/soc/codecs/Kconfig

index 9d5904cc7712fbdd64ce3d682617d5f31be6b268..1ef196ddadebf8fe2459a1ed27b434daba8edd2c 100644 (file)
@@ -125,6 +125,7 @@ choice
 
 config ALPHA_GENERIC
        bool "Generic"
+       depends on TTY
        help
          A generic kernel will run on all supported Alpha hardware.
 
@@ -491,6 +492,7 @@ config VGA_HOSE
 
 config ALPHA_SRM
        bool "Use SRM as bootloader" if ALPHA_CABRIOLET || ALPHA_AVANTI_CH || ALPHA_EB64P || ALPHA_PC164 || ALPHA_TAKARA || ALPHA_EB164 || ALPHA_ALCOR || ALPHA_MIATA || ALPHA_LX164 || ALPHA_SX164 || ALPHA_NAUTILUS || ALPHA_NONAME
+       depends on TTY
        default y if ALPHA_JENSEN || ALPHA_MIKASA || ALPHA_SABLE || ALPHA_LYNX || ALPHA_NORITAKE || ALPHA_DP264 || ALPHA_RAWHIDE || ALPHA_EIGER || ALPHA_WILDFIRE || ALPHA_TITAN || ALPHA_SHARK || ALPHA_MARVEL
        ---help---
          There are two different types of booting firmware on Alphas: SRM,
index 8d513a8c5266b4db31ef1cb6fd6eb75777c7dda3..d84707d5520343876312a76bf15ee68ba6117445 100644 (file)
@@ -8,6 +8,7 @@ config HP_SIMETH
 
 config HP_SIMSERIAL
        bool "Simulated serial driver support"
+       depends on TTY
 
 config HP_SIMSERIAL_CONSOLE
        bool "Console for HP simulator"
index c4cdfe444c64817f01eac43b561ab6096e44ae24..4bc945dfe467ba8fd746eb5de9d595f8c172c3d8 100644 (file)
@@ -41,7 +41,7 @@ config NFBLOCK
 
 config NFCON
        tristate "NatFeat console driver"
-       depends on NATFEAT
+       depends on TTY && NATFEAT
        help
          Say Y to include support for the ARAnyM NatFeat console driver
          which allows the console output to be redirected to the stderr
index b77feffbadea9b91f46d85be47d35a0f49d4b2f4..df5beb6397605c54d62e447a27026a541ae09632 100644 (file)
@@ -23,6 +23,7 @@ config PARISC
        select HAVE_MOD_ARCH_SPECIFIC
        select MODULES_USE_ELF_RELA
        select CLONE_BACKWARDS
+       select TTY # Needed for pdc_cons.c
 
        help
          The PA-RISC microprocessor is designed by Hewlett-Packard and used
index 875d008828b8ec619c295cf1b2d5c8923ea0389b..ae8a7ca67fa46de34463ba08bada58b9ad6ca3ab 100644 (file)
@@ -121,6 +121,7 @@ config DEBUG_COPY_FROM_USER
        def_bool n
 
 config HVC_TILE
+       depends on TTY
        select HVC_DRIVER
        def_bool y
 
index 648121b037d55fd5f4962626ca79ac27022b38e1..bceee6623b00134023918cd5b62ec6144e3c66eb 100644 (file)
@@ -12,6 +12,7 @@ config UML
        select GENERIC_CPU_DEVICES
        select GENERIC_IO
        select GENERIC_CLOCKEVENTS
+       select TTY # Needed for line.c
 
 config MMU
        bool
index 5aab1acabf1cb4440c0b5656ecff733bc1df7b07..ad64c73b86750c0d2f279e670ef9ad61fc52f091 100644 (file)
@@ -132,6 +132,7 @@ choice
 
 config XTENSA_PLATFORM_ISS
        bool "ISS"
+       depends on TTY
        select XTENSA_CALIBRATE_CCOUNT
        select SERIAL_CONSOLE
        select XTENSA_ISS_NETWORK
index e9f203eadb1f8390def3c0d1bdf24757d594ce82..fdfd61a2d5237d0d3b977c858be1cfdeef37bcf0 100644 (file)
@@ -26,6 +26,7 @@ config BT_HCIBTSDIO
 
 config BT_HCIUART
        tristate "HCI UART driver"
+       depends on TTY
        help
          Bluetooth HCI UART driver.
          This driver is required if you want to use Bluetooth devices with
index 72bedad6bf8cca35cc93593f5112d71216ed677a..3bb6fa3930beba0c07282f858be05e2c74e10b79 100644 (file)
@@ -53,7 +53,7 @@ source "drivers/tty/serial/Kconfig"
 
 config TTY_PRINTK
        bool "TTY driver to output user messages via printk"
-       depends on EXPERT
+       depends on EXPERT && TTY
        default n
        ---help---
          If you say Y here, the support for writing user messages (i.e.
@@ -159,7 +159,7 @@ source "drivers/tty/hvc/Kconfig"
 
 config VIRTIO_CONSOLE
        tristate "Virtio console"
-       depends on VIRTIO
+       depends on VIRTIO && TTY
        select HVC_DRIVER
        help
          Virtio console for use with lguest and other hypervisors.
@@ -392,6 +392,7 @@ config XILINX_HWICAP
 
 config R3964
        tristate "Siemens R3964 line discipline"
+       depends on TTY
        ---help---
          This driver allows synchronous communication with devices using the
          Siemens R3964 packet protocol. Unless you are dealing with special
@@ -439,7 +440,7 @@ source "drivers/char/pcmcia/Kconfig"
 
 config MWAVE
        tristate "ACP Modem (Mwave) support"
-       depends on X86
+       depends on X86 && TTY
        select SERIAL_8250
        ---help---
          The ACP modem (Mwave) for Linux is a WinModem. It is composed of a
index 6614416a86232270f085bdc4af60d6bf18f59ddf..2a166d56738ac85947c0b6f4103750050d5ea7b1 100644 (file)
@@ -7,7 +7,7 @@ menu "PCMCIA character devices"
 
 config SYNCLINK_CS
        tristate "SyncLink PC Card support"
-       depends on PCMCIA
+       depends on PCMCIA && TTY
        help
          Enable support for the SyncLink PC Card serial adapter, running
          asynchronous and HDLC communications up to 512Kbps. The port is
@@ -45,7 +45,7 @@ config CARDMAN_4040
 
 config IPWIRELESS
        tristate "IPWireless 3G UMTS PCMCIA card support"
-       depends on PCMCIA && NETDEVICES
+       depends on PCMCIA && NETDEVICES && TTY
        select PPP
        help
          This is a driver for 3G UMTS PCMCIA card from IPWireless company. In
index bdca5111eb9de406e685c62315fb67a59bf5cecc..cf474b2df4ae0941b67b26e046396a479be9b67d 100644 (file)
@@ -803,7 +803,7 @@ config I2C_PARPORT_LIGHT
 
 config I2C_TAOS_EVM
        tristate "TAOS evaluation module"
-       depends on EXPERIMENTAL
+       depends on EXPERIMENTAL && TTY
        select SERIO
        select SERIO_SERPORT
        default n
index 56eb471b5576954f6119664b23a1d7b83316d3fb..055bcaba774c971d5f1d5473d43b342383925acd 100644 (file)
@@ -132,6 +132,8 @@ config JOYSTICK_TMDC
 
 source "drivers/input/joystick/iforce/Kconfig"
 
+if TTY
+
 config JOYSTICK_WARRIOR
        tristate "Logitech WingMan Warrior joystick"
        select SERIO
@@ -205,6 +207,8 @@ config JOYSTICK_ZHENHUA
          To compile this driver as a module, choose M here: the
          module will be called zhenhua.
 
+endif # TTY
+
 config JOYSTICK_DB9
        tristate "Multisystem, Sega Genesis, Saturn joysticks and gamepads"
        depends on PARPORT
index 5a240c60342d8a8e7c3381a576103c2949bdce1d..008f96aaf19e59b92a7230d197cc560176229f61 100644 (file)
@@ -69,6 +69,7 @@ config KEYBOARD_ATARI
 config KEYBOARD_ATKBD
        tristate "AT keyboard" if EXPERT || !X86
        default y
+       depends on TTY
        select SERIO
        select SERIO_LIBPS2
        select SERIO_I8042 if X86
@@ -153,6 +154,7 @@ config KEYBOARD_BFIN
 
 config KEYBOARD_LKKBD
        tristate "DECstation/VAXstation LK201/LK401 keyboard"
+       depends on TTY
        select SERIO
        help
          Say Y here if you want to use a LK201 or LK401 style serial
@@ -268,7 +270,7 @@ config KEYBOARD_HIL_OLD
 
 config KEYBOARD_HIL
        tristate "HP HIL keyboard/pointer support"
-       depends on GSC || HP300
+       depends on (GSC || HP300) && TTY
        default y
        select HP_SDC
        select HIL_MLC
@@ -400,6 +402,7 @@ config KEYBOARD_IMX
 
 config KEYBOARD_NEWTON
        tristate "Newton keyboard"
+       depends on TTY
        select SERIO
        help
          Say Y here if you have a Newton keyboard on a serial port.
@@ -479,6 +482,8 @@ config KEYBOARD_SAMSUNG
          To compile this driver as a module, choose M here: the
          module will be called samsung-keypad.
 
+if TTY
+
 config KEYBOARD_STOWAWAY
        tristate "Stowaway keyboard"
        select SERIO
@@ -501,6 +506,8 @@ config KEYBOARD_SUNKBD
          To compile this driver as a module, choose M here: the
          module will be called sunkbd.
 
+endif # TTY
+
 config KEYBOARD_SH_KEYSC
        tristate "SuperH KEYSC keypad support"
        depends on SUPERH || ARCH_SHMOBILE
@@ -597,6 +604,7 @@ config KEYBOARD_TWL4030
 
 config KEYBOARD_XTKBD
        tristate "XT keyboard"
+       depends on TTY
        select SERIO
        help
          Say Y here if you want to use the old IBM PC/XT keyboard (or
index cd6268cf7cd5d2f99115eba326eb65763236507d..fc160f72dc4ee0d5836c669cbd6253445fe2402e 100644 (file)
@@ -14,6 +14,7 @@ if INPUT_MOUSE
 
 config MOUSE_PS2
        tristate "PS/2 mouse"
+       depends on TTY
        default y
        select SERIO
        select SERIO_LIBPS2
@@ -138,6 +139,7 @@ config MOUSE_PS2_OLPC
 
 config MOUSE_SERIAL
        tristate "Serial mouse"
+       depends on TTY
        select SERIO
        help
          Say Y here if you have a serial (RS-232, COM port) mouse connected
@@ -262,6 +264,7 @@ config MOUSE_RISCPC
 
 config MOUSE_VSXXXAA
        tristate "DEC VSXXX-AA/GA mouse and VSXXX-AB tablet"
+       depends on TTY
        select SERIO
        help
          Say Y (or M) if you want to use a DEC VSXXX-AA (hockey
index 4a4e182c33e7a0c540a52a566b4eeabe038a5e4a..81ee7551148ea35823f35fe91f07c290b8934d0b 100644 (file)
@@ -4,6 +4,7 @@
 config SERIO
        tristate "Serial I/O support" if EXPERT || !X86
        default y
+       depends on TTY
        help
          Say Yes here if you have any input device that uses serial I/O to
          communicate with the system. This includes the
index 515cfe7905430fb621362231ac7dd468f42a3016..3d6f548dd3d4de7d76925a7150f050c7babb5bd8 100644 (file)
@@ -192,6 +192,8 @@ config TOUCHSCREEN_DA9052
          To compile this driver as a module, choose M here: the
          module will be called da9052_tsi.
 
+if TTY
+
 config TOUCHSCREEN_DYNAPRO
        tristate "Dynapro serial touchscreen"
        select SERIO
@@ -216,6 +218,8 @@ config TOUCHSCREEN_HAMPSHIRE
          To compile this driver as a module, choose M here: the
          module will be called hampshire.
 
+endif # TTY
+
 config TOUCHSCREEN_EETI
        tristate "EETI touchscreen panel support"
        depends on I2C
@@ -237,6 +241,7 @@ config TOUCHSCREEN_EGALAX
 
 config TOUCHSCREEN_FUJITSU
        tristate "Fujitsu serial touchscreen"
+       depends on TTY
        select SERIO
        help
          Say Y here if you have the Fujitsu touchscreen (such as one
@@ -275,6 +280,8 @@ config TOUCHSCREEN_S3C2410
          To compile this driver as a module, choose M here: the
          module will be called s3c2410_ts.
 
+if TTY
+
 config TOUCHSCREEN_GUNZE
        tristate "Gunze AHL-51S touchscreen"
        select SERIO
@@ -311,6 +318,8 @@ config TOUCHSCREEN_WACOM_W8001
          To compile this driver as a module, choose M here: the
          module will be called wacom_w8001.
 
+endif # TTY
+
 config TOUCHSCREEN_WACOM_I2C
        tristate "Wacom Tablet support (I2C)"
        depends on I2C
@@ -369,6 +378,8 @@ config TOUCHSCREEN_MMS114
          To compile this driver as a module, choose M here: the
          module will be called mms114.
 
+if TTY
+
 config TOUCHSCREEN_MTOUCH
        tristate "MicroTouch serial touchscreens"
        select SERIO
@@ -393,6 +404,8 @@ config TOUCHSCREEN_INEXIO
          To compile this driver as a module, choose M here: the
          module will be called inexio.
 
+endif # TTY
+
 config TOUCHSCREEN_INTEL_MID
        tristate "Intel MID platform resistive touchscreen"
        depends on INTEL_SCU_IPC
@@ -450,6 +463,7 @@ config TOUCHSCREEN_HTCPEN
 
 config TOUCHSCREEN_PENMOUNT
        tristate "Penmount serial touchscreen"
+       depends on TTY
        select SERIO
        help
          Say Y here if you have a Penmount serial touchscreen connected to
@@ -493,6 +507,8 @@ config TOUCHSCREEN_TNETV107X
          To compile this driver as a module, choose M here: the
          module will be called tnetv107x-ts.
 
+if TTY
+
 config TOUCHSCREEN_TOUCHRIGHT
        tristate "Touchright serial touchscreen"
        select SERIO
@@ -517,6 +533,8 @@ config TOUCHSCREEN_TOUCHWIN
          To compile this driver as a module, choose M here: the
          module will be called touchwin.
 
+endif # TTY
+
 config TOUCHSCREEN_TI_AM335X_TSC
        tristate "TI Touchscreen Interface"
        depends on MFD_TI_AM335X_TSCADC
@@ -790,6 +808,8 @@ config TOUCHSCREEN_USB_EASYTOUCH
          Say Y here if you have an EasyTouch USB Touch controller.
          If unsure, say N.
 
+if TTY
+
 config TOUCHSCREEN_TOUCHIT213
        tristate "Sahara TouchIT-213 touchscreen"
        select SERIO
@@ -813,6 +833,8 @@ config TOUCHSCREEN_TSC_SERIO
          To compile this driver as a module, choose M here: the
          module will be called tsc40.
 
+endif # TTY
+
 config TOUCHSCREEN_TSC2005
         tristate "TSC2005 based touchscreens"
         depends on SPI_MASTER && GENERIC_HARDIRQS
index 0b82fdc198c042d3ac6eeb4ea5f3a7880436c5df..907a8cb48f2a70518d44fcdd2af4b7624f9385d4 100644 (file)
@@ -1,6 +1,6 @@
 config SERIAL_IPOCTAL
        tristate "IndustryPack IP-OCTAL uart support"
-       depends on IPACK_BUS
+       depends on IPACK_BUS && TTY
        help
          This driver supports the IPOCTAL serial port device for the IndustryPack bus.
        default n
index 86cd75a0e84da69469ef10b5712285f4ce4e84f2..ef661acdda179c40a8a5826e4d0de6c04b4636ab 100644 (file)
@@ -22,6 +22,7 @@ if ISDN
 
 menuconfig ISDN_I4L
        tristate "Old ISDN4Linux (deprecated)"
+       depends on TTY
        ---help---
          This driver allows you to use an ISDN adapter for networking
          connections and as dialin/out device.  The isdn-tty's have a built
index 15c3ffd9d8605b51006d4b65171dacdab7a57b8b..f046865800405664ae73ec6dc761635327b7b55a 100644 (file)
@@ -18,6 +18,7 @@ config CAPI_TRACE
 
 config ISDN_CAPI_MIDDLEWARE
        bool "CAPI2.0 Middleware support"
+       depends on TTY
        help
          This option will enhance the capabilities of the /dev/capi20
          interface.  It will provide a means of moving a data connection,
index b18a92c32184721f6dfb658d30ed017207a76aab..dde5e09e62675efa7ae108fd7a61e7488f4dcbb5 100644 (file)
@@ -1,5 +1,6 @@
 menuconfig ISDN_DRV_GIGASET
        tristate "Siemens Gigaset support"
+       depends on TTY
        select CRC_CCITT
        select BITREVERSE
        help
index eadc1cd34a20ae2830ed4442807889ac693c8b27..b8611e3e5e7451501fb1df22b27ef252c99dee21 100644 (file)
@@ -76,6 +76,7 @@ config MISDN_NETJET
        tristate "Support for NETJet cards"
        depends on MISDN
        depends on PCI
+       depends on TTY
        select MISDN_IPAC
        select ISDN_HDLC
        select ISDN_I4L
index 34ae49dc557c9abe0816b3ffb5a6a80af39f525f..f9c43145a611a6910b1fd67445c2d366645f966a 100644 (file)
@@ -1,6 +1,6 @@
 config LGUEST
        tristate "Linux hypervisor example code"
-       depends on X86_32 && EXPERIMENTAL && EVENTFD
+       depends on X86_32 && EXPERIMENTAL && EVENTFD && TTY
        select HVC_DRIVER
        ---help---
          This is a very simple module which allows you to run
index ea1e6545df3691f142e88237d21565c517f7dd3e..f359be7e9dd9a952aa4544e2bff211666d0cfa98 100644 (file)
@@ -4,7 +4,7 @@
 menu "Texas Instruments WL128x FM driver (ST based)"
 config RADIO_WL128X
        tristate "Texas Instruments WL128x FM Radio"
-       depends on VIDEO_V4L2 && RFKILL && GPIOLIB
+       depends on VIDEO_V4L2 && RFKILL && GPIOLIB && TTY
        select TI_ST if NET
        help
        Choose Y here if you have this FM radio chip.
index b151b7c1bd59d9fe0f7cad745802572a6f7156ea..4b2bb939dde16d8f3878dd98922fcd168fac14f3 100644 (file)
@@ -127,7 +127,7 @@ config PHANTOM
 
 config INTEL_MID_PTI
        tristate "Parallel Trace Interface for MIPI P1149.7 cJTAG standard"
-       depends on PCI
+       depends on PCI && TTY
        default n
        help
          The PTI (Parallel Trace Interface) driver directs
index abb5de1afce3d00634742831d1ab66244945b619..f34dcc51473052cf5f3605f4251438e6707fc61d 100644 (file)
@@ -5,7 +5,7 @@
 menu "Texas Instruments shared transport line discipline"
 config TI_ST
        tristate "Shared transport core driver"
-       depends on NET && GPIOLIB
+       depends on NET && GPIOLIB && TTY
        select FW_LOADER
        help
          This enables the shared transport core driver for TI
index 3b1f783bf924fccc2168aea37b9a1056d5095dd6..5562308699bc292d5dce1e63fdea2452c38164f5 100644 (file)
@@ -52,6 +52,7 @@ config MMC_BLOCK_BOUNCE
 
 config SDIO_UART
        tristate "SDIO UART/GPS class support"
+       depends on TTY
        help
          SDIO function driver for SDIO cards that implements the UART
          class, as well as the GPS class which appears like a UART.
index abf4d7a9dcce5183fbc89b7a7e3475b86d219618..60c2142373c99a62d1a5029179c559712928ee43 100644 (file)
@@ -6,7 +6,7 @@ comment "CAIF transport drivers"
 
 config CAIF_TTY
        tristate "CAIF TTY transport driver"
-       depends on CAIF
+       depends on CAIF && TTY
        default n
        ---help---
        The CAIF TTY transport driver is a Line Discipline (ldisc)
index b56bd9e80957f0dc5f8dde896cb648e7cf939ab5..72df3a306a08994b0a26242fdd8b5f49b1666a7e 100644 (file)
@@ -13,7 +13,7 @@ config CAN_VCAN
 
 config CAN_SLCAN
        tristate "Serial / USB serial CAN Adaptors (slcan)"
-       depends on CAN
+       depends on CAN && TTY
        ---help---
          CAN driver for several 'low cost' CAN interfaces that are attached
          via serial lines or via USB-to-serial adapters using the LAWICEL
index 95dbcfdf131dd73d4bd9ce54ceb85ffde253f7ee..bf5e59687680b996242d8f603e5f725fa82cd99e 100644 (file)
@@ -1,6 +1,6 @@
 config MKISS
        tristate "Serial port KISS driver"
-       depends on AX25
+       depends on AX25 && TTY
        select CRC16
        ---help---
          KISS is a protocol used for the exchange of data between a computer
@@ -18,7 +18,7 @@ config MKISS
 
 config 6PACK
        tristate "Serial port 6PACK driver"
-       depends on AX25
+       depends on AX25 && TTY
        ---help---
          6pack is a transmission protocol for the data exchange between your
          PC and your TNC (the Terminal Node Controller acts as a kind of
index 595205406d7386188d86fbe5ce943a7128ea9d3b..e1454cdec14b2b968bb3282818597b45de4c0e31 100644 (file)
@@ -5,7 +5,7 @@ comment "SIR device drivers"
 
 config IRTTY_SIR
        tristate "IrTTY (uses Linux serial driver)"
-       depends on IRDA
+       depends on IRDA && TTY
        help
          Say Y here if you want to build support for the IrTTY line
          discipline.  To compile it as a module, choose M here: the module
index 872df3ef07a60899f13060cae59a498dd81c53e7..3d9ef4f1e6000dc534b4612ccc43c545cdafe060 100644 (file)
@@ -147,6 +147,7 @@ config PPPOL2TP
          Support for PPP-over-L2TP socket family. L2TP is a protocol
          used by ISPs and enterprises to tunnel PPP traffic over UDP
          tunnels. L2TP is replacing PPTP for VPN uses.
+if TTY
 
 config PPP_ASYNC
        tristate "PPP support for async serial ports"
@@ -172,4 +173,6 @@ config PPP_SYNC_TTY
 
          To compile this driver as a module, choose M here.
 
+endif # TTY
+
 endif # PPP
index 211b160e4e9c0131d1b91b4509807c7c15cc7206..48e68714eef3c31df23ee42d3f6704da94ba868f 100644 (file)
@@ -4,6 +4,7 @@
 
 config SLIP
        tristate "SLIP (serial line) support"
+       depends on TTY
        ---help---
          Say Y if you intend to use SLIP or CSLIP (compressed SLIP) to
          connect to your Internet service provider or to connect to some
index ef976215b649330d0c6873b8185f3fefc34b1651..bd33153261ce506d86c4ecde6e29c97c29111e49 100644 (file)
@@ -445,7 +445,7 @@ config USB_NET_QMI_WWAN
 
 config USB_HSO
        tristate "Option USB High Speed Mobile Devices"
-       depends on USB && RFKILL
+       depends on USB && RFKILL && TTY
        default n
        help
          Choose this option if you have an Option HSDPA/HSUPA card.
@@ -493,7 +493,7 @@ config USB_SIERRA_NET
 
 config USB_VL600
        tristate "LG VL600 modem dongle"
-       depends on USB_NET_CDCETHER
+       depends on USB_NET_CDCETHER && TTY
        select USB_ACM
        help
          Select this if you want to use an LG Electronics 4G/LTE usb modem
index d58431e99f7320a2c3643f58a6bf07ab04c6add1..61eb8994b34f90fdce5fbf5b34894d2a158d1d4e 100644 (file)
@@ -429,7 +429,7 @@ config LAPBETHER
 
 config X25_ASY
        tristate "X.25 async driver (EXPERIMENTAL)"
-       depends on LAPB && X25
+       depends on LAPB && X25 && TTY
        ---help---
          Send and receive X.25 frames over regular asynchronous serial
          lines such as telephone lines equipped with ordinary modems.
index 445197d4a8c44f2810d44282f09755817067146e..6efd9b60d8ff1aaeb9f2e3563096c070d24ab642 100644 (file)
@@ -17,7 +17,7 @@ config PPS_CLIENT_KTIMER
 
 config PPS_CLIENT_LDISC
        tristate "PPS line discipline"
-       depends on PPS
+       depends on PPS && TTY
        help
          If you say yes here you get support for a PPS source connected
          with the CD (Carrier Detect) pin of your serial port.
index 2c9a776bd63ce8524a9d8c0bfa3c3dd9c4d30109..71bf959732fe0112823ca12fc9ed4ee388274ce8 100644 (file)
@@ -11,7 +11,7 @@ config TN3270
 config TN3270_TTY
        def_tristate y
        prompt "Support for tty input/output on 3270 terminals"
-       depends on TN3270
+       depends on TN3270 && TTY
        help
          Include support for using an IBM 3270 terminal as a Linux tty.
 
@@ -33,7 +33,7 @@ config TN3270_CONSOLE
 config TN3215
        def_bool y
        prompt "Support for 3215 line mode terminal"
-       depends on CCW
+       depends on CCW && TTY
        help
          Include support for IBM 3215 line-mode terminals.
 
@@ -51,7 +51,7 @@ config CCW_CONSOLE
 config SCLP_TTY
        def_bool y
        prompt "Support for SCLP line mode terminal"
-       depends on S390
+       depends on S390 && TTY
        help
          Include support for IBM SCLP line-mode terminals.
 
@@ -66,7 +66,7 @@ config SCLP_CONSOLE
 config SCLP_VT220_TTY
        def_bool y
        prompt "Support for SCLP VT220-compatible terminal"
-       depends on S390
+       depends on S390 && TTY
        help
          Include support for an IBM SCLP VT220-compatible terminal.
 
index 8997a8c757aa59b79d4438aabf49c63b8ac9a9b8..7ed5bc6caadbded6cc07d52455650e8c6a701f29 100644 (file)
@@ -2,7 +2,7 @@ if USB_GADGET
 
 config USB_G_CCG
        tristate "Configurable Composite Gadget (STAGING)"
-       depends on STAGING && BLOCK && NET && !USB_ZERO && !USB_ZERO_HNPTEST && !USB_AUDIO && !GADGET_UAC1 && !USB_ETH && !USB_ETH_RNDIS && !USB_ETH_EEM && !USB_G_NCM && !USB_GADGETFS && !USB_FUNCTIONFS && !USB_FUNCTIONFS_ETH && !USB_FUNCTIONFS_RNDIS && !USB_FUNCTIONFS_GENERIC && !USB_FILE_STORAGE && !USB_FILE_STORAGE_TEST && !USB_MASS_STORAGE && !USB_G_SERIAL && !USB_MIDI_GADGET && !USB_G_PRINTER && !USB_CDC_COMPOSITE && !USB_G_NOKIA && !USB_G_ACM_MS && !USB_G_MULTI && !USB_G_MULTI_RNDIS && !USB_G_MULTI_CDC && !USB_G_HID && !USB_G_DBGP && !USB_G_WEBCAM
+       depends on STAGING && BLOCK && NET && !USB_ZERO && !USB_ZERO_HNPTEST && !USB_AUDIO && !GADGET_UAC1 && !USB_ETH && !USB_ETH_RNDIS && !USB_ETH_EEM && !USB_G_NCM && !USB_GADGETFS && !USB_FUNCTIONFS && !USB_FUNCTIONFS_ETH && !USB_FUNCTIONFS_RNDIS && !USB_FUNCTIONFS_GENERIC && !USB_FILE_STORAGE && !USB_FILE_STORAGE_TEST && !USB_MASS_STORAGE && !USB_G_SERIAL && !USB_MIDI_GADGET && !USB_G_PRINTER && !USB_CDC_COMPOSITE && !USB_G_NOKIA && !USB_G_ACM_MS && !USB_G_MULTI && !USB_G_MULTI_RNDIS && !USB_G_MULTI_CDC && !USB_G_HID && !USB_G_DBGP && !USB_G_WEBCAM && TTY
        help
          The Configurable Composite Gadget supports multiple USB
          functions: acm, mass storage, rndis and FunctionFS.
index 39f4bb65ec83ac83076a7d69dc2771ae1de1bfcb..e4c41552923a5a95a6618a3f803d940f5e556300 100644 (file)
@@ -1,7 +1,7 @@
 config DGRP
        tristate "Digi Realport driver"
        default n
-       depends on SYSFS
+       depends on SYSFS && TTY
        ---help---
        Support for Digi Realport devices.  These devices allow you to
        access remote serial ports as if they are local tty devices.  This
index 580406cb1808e55b201aafad0611f62ed536744f..9cdb3cdc4b667eeb53d7624207fa9786a1c8687e 100644 (file)
@@ -1,6 +1,6 @@
 config FIREWIRE_SERIAL
        tristate "TTY over Firewire"
-       depends on FIREWIRE
+       depends on FIREWIRE && TTY
        help
           This enables TTY over IEEE 1394, providing high-speed serial
          connectivity to cabled peers.
index 3d0d0eb95b8cdfafcc687a91699d2cd8b2f885b9..6a2e1b78e8440c51ade7a64b28d97443fae37f59 100644 (file)
@@ -1,7 +1,7 @@
 config SB105X
        tristate "SystemBase PCI Multiport UART"
        select SERIAL_CORE
-       depends on PCI && BROKEN
+       depends on PCI && TTY && BROKEN
        help
          A driver for the SystemBase Multi-2/PCI serial card
 
index 0ecf22b6a38e5c61a9d42670435ac60939ce82c4..a79fd8ebd56e8ec6b09a7030a83b7f4fd21145a4 100644 (file)
@@ -1,3 +1,14 @@
+config TTY
+       bool "Enable TTY" if EXPERT
+       default y
+       ---help---
+         Allows you to remove TTY support which can save space, and
+         blocks features that require TTY from inclusion in the kernel.
+         TTY is required for any text terminals or serial port
+         communication. Most users should leave this enabled.
+
+if TTY
+
 config VT
        bool "Virtual terminal" if EXPERT
        depends on !S390 && !UML
@@ -388,3 +399,5 @@ config PPC_EARLY_DEBUG_EHV_BC_HANDLE
          If the number you specify is not a valid byte channel handle, then
          there simply will be no early console output.  This is true also
          if you don't boot under a hypervisor at all.
+
+endif # TTY
index 2953059530e4a18c3fbdc61bf94abf4aec921144..df5663d0d55e48960dcc28db0e5fd8a74cf7a792 100644 (file)
@@ -1,4 +1,4 @@
-obj-y                          += tty_io.o n_tty.o tty_ioctl.o tty_ldisc.o \
+obj-$(CONFIG_TTY)              += tty_io.o n_tty.o tty_ioctl.o tty_ldisc.o \
                                   tty_buffer.o tty_port.o tty_mutex.o
 obj-$(CONFIG_LEGACY_PTYS)      += pty.o
 obj-$(CONFIG_UNIX98_PTYS)      += pty.o
index f47b734c6a7abfda97d21f9dc27f4b95c8fb821d..8902f9b4df719f75a03f3417a5aa8d5e8b8f8e3c 100644 (file)
@@ -1,3 +1,5 @@
+if TTY
+
 config HVC_DRIVER
        bool
        help
@@ -119,3 +121,4 @@ config HVCS
          which will also be compiled when this driver is built as a
          module.
 
+endif # TTY
index 2dc429357fe370922fb203a1dcfda82870ef415e..e9aeccdfbe35e8663ed5af9159cee49942ddc7b7 100644 (file)
@@ -2,6 +2,8 @@
 # Serial device configuration
 #
 
+if TTY
+
 menu "Serial drivers"
        depends on HAS_IOMEM
 
@@ -1483,3 +1485,5 @@ config SERIAL_RP2_NR_UARTS
          need to be increased.
 
 endmenu
+
+endif # TTY
index 2519e320098f268273f3866131e760c5a5ea287e..316aac8e4ca1934a34989d0d39c68bc47b46786a 100644 (file)
@@ -6,7 +6,7 @@ comment "USB Device Class drivers"
 
 config USB_ACM
        tristate "USB Modem (CDC ACM) support"
-       depends on USB
+       depends on USB && TTY
        ---help---
          This driver supports USB modems and ISDN adapters which support the
          Communication Device Class Abstract Control Model interface.
index 14625fd2cecda40bb6922158c4b522866d062171..a1bd951f9cb7f7287a0be8d6d45d4165ab44cd69 100644 (file)
@@ -750,6 +750,7 @@ config USB_GADGET_TARGET
 
 config USB_G_SERIAL
        tristate "Serial Gadget (with CDC ACM and CDC OBEX support)"
+       depends on TTY
        select USB_LIBCOMPOSITE
        help
          The Serial Gadget talks to the Linux-USB generic serial driver.
@@ -799,6 +800,8 @@ config USB_G_PRINTER
          For more information, see Documentation/usb/gadget_printer.txt
          which includes sample code for accessing the device file.
 
+if TTY
+
 config USB_CDC_COMPOSITE
        tristate "CDC Composite Device (Ethernet and ACM)"
        depends on NET
@@ -879,6 +882,8 @@ config USB_G_MULTI_CDC
 
          If unsure, say "y".
 
+endif # TTY
+
 config USB_G_HID
        tristate "HID Gadget"
        select USB_LIBCOMPOSITE
@@ -895,6 +900,7 @@ config USB_G_HID
 # Standalone / single function gadgets
 config USB_G_DBGP
        tristate "EHCI Debug Device Gadget"
+       depends on TTY
        select USB_LIBCOMPOSITE
        help
          This gadget emulates an EHCI Debug device. This is useful when you want
index 76f4622417380eff45c205664cfb3179727edbc7..d8e35fe30b0c8c5a0d0fd87fbabf3230737c944d 100644 (file)
@@ -4,7 +4,7 @@
 
 menuconfig USB_SERIAL
        tristate "USB Serial Converter support"
-       depends on USB
+       depends on USB && TTY
        ---help---
          Say Y here if you have a USB device that provides normal serial
          ports, or acts like a serial device, and you want to connect it to
index 981b05601931c2036aa36f54839134766f002dfc..712f24db9600f26dc919e5024255916de3a45067 100644 (file)
@@ -8,7 +8,8 @@ proc-y                  := nommu.o task_nommu.o
 proc-$(CONFIG_MMU)     := mmu.o task_mmu.o
 
 proc-y       += inode.o root.o base.o generic.o array.o \
-               proc_tty.o fd.o
+               fd.o
+proc-$(CONFIG_TTY)      += proc_tty.o
 proc-y += cmdline.o
 proc-y += consoles.o
 proc-y += cpuinfo.o
index dedb082fe50fde9e62190569b0c362238a46f1b0..3b709da1786e314bd665da41ae9324567b38313e 100644 (file)
@@ -157,7 +157,12 @@ extern int is_console_locked(void);
 extern int braille_register_console(struct console *, int index,
                char *console_options, char *braille_options);
 extern int braille_unregister_console(struct console *);
+#ifdef CONFIG_TTY
 extern void console_sysfs_notify(void);
+#else
+static inline void console_sysfs_notify(void)
+{ }
+#endif
 extern bool console_suspend_enabled;
 
 /* Suspend and resume console messages over PM events */
index 32676b35d2f5dceb3e340574ad9c7dccdff482dc..3c22538aab667c1f843b9c4a8d0ef7b613b773c6 100644 (file)
@@ -127,7 +127,12 @@ extern void pid_ns_release_proc(struct pid_namespace *ns);
  * proc_tty.c
  */
 struct tty_driver;
+#ifdef CONFIG_TTY
 extern void proc_tty_init(void);
+#else
+static inline void proc_tty_init(void)
+{ }
+#endif
 extern void proc_tty_register_driver(struct tty_driver *driver);
 extern void proc_tty_unregister_driver(struct tty_driver *driver);
 
index f89acd1ed6d3f1735c3a1605cb6caa279a2ff040..c75d886b03078dce545a10ea83ac654e0a4335c4 100644 (file)
@@ -318,11 +318,43 @@ struct tty_file_private {
 
 #define TTY_WRITE_FLUSH(tty) tty_write_flush((tty))
 
+#ifdef CONFIG_TTY
+extern void console_init(void);
+extern void tty_kref_put(struct tty_struct *tty);
+extern struct pid *tty_get_pgrp(struct tty_struct *tty);
+extern void tty_vhangup_self(void);
+extern void disassociate_ctty(int priv);
+extern dev_t tty_devnum(struct tty_struct *tty);
+extern void proc_clear_tty(struct task_struct *p);
+extern struct tty_struct *get_current_tty(void);
+/* tty_io.c */
+extern int __init tty_init(void);
+#else
+static inline void console_init(void)
+{ }
+static inline void tty_kref_put(struct tty_struct *tty)
+{ }
+static inline struct pid *tty_get_pgrp(struct tty_struct *tty)
+{ return NULL; }
+static inline void tty_vhangup_self(void)
+{ }
+static inline void disassociate_ctty(int priv)
+{ }
+static inline dev_t tty_devnum(struct tty_struct *tty)
+{ return 0; }
+static inline void proc_clear_tty(struct task_struct *p)
+{ }
+static inline struct tty_struct *get_current_tty(void)
+{ return NULL; }
+/* tty_io.c */
+static inline int __init tty_init(void)
+{ return 0; }
+#endif
+
 extern void tty_write_flush(struct tty_struct *);
 
 extern struct ktermios tty_std_termios;
 
-extern void console_init(void);
 extern int vcs_init(void);
 
 extern struct class *tty_class;
@@ -342,7 +374,6 @@ static inline struct tty_struct *tty_kref_get(struct tty_struct *tty)
                kref_get(&tty->kref);
        return tty;
 }
-extern void tty_kref_put(struct tty_struct *tty);
 
 extern int tty_paranoia_check(struct tty_struct *tty, struct inode *inode,
                              const char *routine);
@@ -374,18 +405,15 @@ extern void tty_driver_remove_tty(struct tty_driver *driver,
                                  struct tty_struct *tty);
 extern void tty_free_termios(struct tty_struct *tty);
 extern int is_current_pgrp_orphaned(void);
-extern struct pid *tty_get_pgrp(struct tty_struct *tty);
 extern int is_ignored(int sig);
 extern int tty_signal(int sig, struct tty_struct *tty);
 extern void tty_hangup(struct tty_struct *tty);
 extern void tty_vhangup(struct tty_struct *tty);
 extern void tty_vhangup_locked(struct tty_struct *tty);
-extern void tty_vhangup_self(void);
 extern void tty_unhangup(struct file *filp);
 extern int tty_hung_up_p(struct file *filp);
 extern void do_SAK(struct tty_struct *tty);
 extern void __do_SAK(struct tty_struct *tty);
-extern void disassociate_ctty(int priv);
 extern void no_tty(void);
 extern void tty_flush_to_ldisc(struct tty_struct *tty);
 extern void tty_buffer_free_all(struct tty_port *port);
@@ -415,9 +443,6 @@ extern long tty_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
 extern int tty_mode_ioctl(struct tty_struct *tty, struct file *file,
                        unsigned int cmd, unsigned long arg);
 extern int tty_perform_flush(struct tty_struct *tty, unsigned long arg);
-extern dev_t tty_devnum(struct tty_struct *tty);
-extern void proc_clear_tty(struct task_struct *p);
-extern struct tty_struct *get_current_tty(void);
 extern void tty_default_fops(struct file_operations *fops);
 extern struct tty_struct *alloc_tty_struct(void);
 extern int tty_alloc_file(struct file *file);
@@ -543,9 +568,6 @@ static inline int tty_audit_push_task(struct task_struct *tsk,
 }
 #endif
 
-/* tty_io.c */
-extern int __init tty_init(void);
-
 /* tty_ioctl.c */
 extern int n_tty_ioctl_helper(struct tty_struct *tty, struct file *file,
                       unsigned int cmd, unsigned long arg);
index 43cb93fa2651263930ae6c0f8181cd43aa119052..30894fab84d6791ffb5cfb3e40b9ce8dcb77b3d3 100644 (file)
@@ -22,6 +22,7 @@ config KGDB_SERIAL_CONSOLE
        tristate "KGDB: use kgdb over the serial console"
        select CONSOLE_POLL
        select MAGIC_SYSRQ
+       depends on TTY
        default y
        help
          Share a serial console with kgdb. Sysrq-g must be used
index 22e718b554e4e8a7650f4b8d09c8df91b0d714c2..18d352ea2bc7e2a38672fda575a602b6a0ccab0d 100644 (file)
@@ -12,6 +12,7 @@ config BT_RFCOMM
 config BT_RFCOMM_TTY
        bool "RFCOMM TTY support"
        depends on BT_RFCOMM
+       depends on TTY
        help
          This option enables TTY emulation support for RFCOMM channels.
 
index 2d4c6b4a78d6cce3595df0a98419afcba1149f4f..19492c1707b7c4d92ecd00942935b5aaaa8e34e1 100644 (file)
@@ -1,6 +1,6 @@
 config IRCOMM
        tristate "IrCOMM protocol"
-       depends on IRDA
+       depends on IRDA && TTY
        help
          Say Y here if you want to build support for the IrCOMM protocol.
          To compile it as modules, choose M here: the modules will be
index 3a847828932ae01e13b2be5ca8f587c0048f17eb..298822c0ad65d8b422b379769c2eb1d640a898f1 100644 (file)
@@ -34,7 +34,7 @@ config SND_SOC_ALL_CODECS
        select SND_SOC_CS42L73 if I2C
        select SND_SOC_CS4270 if I2C
        select SND_SOC_CS4271 if SND_SOC_I2C_AND_SPI
-       select SND_SOC_CX20442
+       select SND_SOC_CX20442 if TTY
        select SND_SOC_DA7210 if I2C
        select SND_SOC_DA732X if I2C
        select SND_SOC_DA9055 if I2C
@@ -236,6 +236,7 @@ config SND_SOC_CS4271
 
 config SND_SOC_CX20442
        tristate
+       depends on TTY
 
 config SND_SOC_JZ4740_CODEC
        select REGMAP_MMIO