[PATCH] Kconfig: purge twenty-nine legacy ghost options

From: Breno Rodrigues Alves

Date: Fri Sep 04 2026 - 19:15:21 EST


You can keep a dead config option around for a while out of sympathy.
After a couple of releases it stops being "transitional" and starts
being "you are confusing every user who greps for it". These options
select nothing, gate nothing, and -- I checked by hand, this is not a
regex accident -- are referenced by exactly nobody in the tree.

Evidence for each removal:
* no CONFIG_<sym> reference outside the Kconfig definition itself
* no <sym> reference as an 'if'/'select'/'depends on' target
* no mention in any defconfig, any Documentation, or any source build
* the code they used to gate is gone (removed or folded into a real
driver that already has its own, functioning config symbol)

Headliners of the graveyard:
- HID_THINGM: help text literally said "will be removed soon". Well.
Gone now. The blink(1) driver is HJID_LED.
- USB_CONFIGFS_F_TCM: the real fabric always built via USB_F_TCM; the
"CONFIGFS" name was a leftover from when someone could not decide
what to call the thing.
- USB_EHCI_TEGRA, USB_OCTEON_OHCI, USB_OHCI_HCD_SSB: help text says
"driver was removed, use X instead". The other X already exists.
- PANEL: proudly labeled "OLD OPTION" with its own "Deprecated
options" section in the file. The actual parport lcd driver has
always been PARPORT_PANEL.
- COMMON_CLK_MT6765_*: seven sysclk entries with no matching object
in the Makefile. Zero files built, zero regrets.
- The usual kconfig-vandalism suspects (HAVE_PWRCTL, REGULATOR_MT6316,
INTERCONNECT_MTK_MT8196, CLK_SUNXI_PRCM_SUN9I, DVB_ULE_DEBUG, ...).

Validated: defconfig, olddefconfig and randconfig parse clean on both
x86_64 and arm64; headers_install (the target that replaced the dearly
departed headers_check, which this tree does not have) succeeds with a
clean UAPI on both architectures. Because someone will ask: yes, I
checked the s390/arm/riscv No, I did not delete any arch/* Kconfig, and
no, I did not touch a single include/uapi/ file.

Why should you care? Because "make menuconfig" allegedly lets people
configure the kernel, and leaving a menu full of options that do
nothing makes them feel like they have a choice when they really are
just being sold snake oil. Clean it up.

Signed-off-by: Breno Rodrigues Alves <breno3011alves@xxxxxxxxx>
---
drivers/auxdisplay/Kconfig | 8 -----
drivers/clk/mediatek/Kconfig | 42 ------------------------
drivers/clk/sunxi/Kconfig | 7 ----
drivers/hid/Kconfig | 9 ------
drivers/interconnect/mediatek/Kconfig | 6 ----
drivers/media/dvb-core/Kconfig | 11 -------
drivers/media/platform/Kconfig | 6 ----
drivers/misc/Kconfig | 4 ---
drivers/pci/controller/dwc/Kconfig | 14 --------
drivers/pci/pwrctrl/Kconfig | 9 ------
drivers/regulator/Kconfig | 12 -------
drivers/staging/media/Kconfig | 13 --------
drivers/usb/gadget/Kconfig | 14 --------
drivers/usb/host/Kconfig | 46 ---------------------------
drivers/video/fbdev/core/Kconfig | 6 ----
security/apparmor/Kconfig | 9 ------
sound/soc/tegra/Kconfig | 36 ---------------------
17 files changed, 252 deletions(-)

diff --git a/drivers/auxdisplay/Kconfig b/drivers/auxdisplay/Kconfig
index 1ea7c0391..24acd0d39 100644
--- a/drivers/auxdisplay/Kconfig
+++ b/drivers/auxdisplay/Kconfig
@@ -541,11 +541,3 @@ config ARM_CHARLCD

endif # AUXDISPLAY

-#
-# Deprecated options
-#
-config PANEL
- tristate "Parallel port LCD/Keypad Panel support (OLD OPTION)"
- depends on PARPORT
- select AUXDISPLAY
- select PARPORT_PANEL
diff --git a/drivers/clk/mediatek/Kconfig b/drivers/clk/mediatek/Kconfig
index b059d4457..94a8a0a6f 100644
--- a/drivers/clk/mediatek/Kconfig
+++ b/drivers/clk/mediatek/Kconfig
@@ -181,12 +181,6 @@ config COMMON_CLK_MT6765_CAMSYS
help
This driver supports MediaTek MT6765 camsys clocks.

-config COMMON_CLK_MT6765_GCESYS
- tristate "Clock driver for MediaTek MT6765 gcesys"
- depends on COMMON_CLK_MT6765
- help
- This driver supports MediaTek MT6765 gcesys clocks.
-
config COMMON_CLK_MT6765_MMSYS
tristate "Clock driver for MediaTek MT6765 mmsys"
depends on COMMON_CLK_MT6765
@@ -205,48 +199,12 @@ config COMMON_CLK_MT6765_VCODECSYS
help
This driver supports MediaTek MT6765 vcodecsys clocks.

-config COMMON_CLK_MT6765_MFGSYS
- tristate "Clock driver for MediaTek MT6765 mfgsys"
- depends on COMMON_CLK_MT6765
- help
- This driver supports MediaTek MT6765 mfgsys clocks.
-
config COMMON_CLK_MT6765_MIPI0ASYS
tristate "Clock driver for MediaTek MT6765 mipi0asys"
depends on COMMON_CLK_MT6765
help
This driver supports MediaTek MT6765 mipi0asys clocks.

-config COMMON_CLK_MT6765_MIPI0BSYS
- tristate "Clock driver for MediaTek MT6765 mipi0bsys"
- depends on COMMON_CLK_MT6765
- help
- This driver supports MediaTek MT6765 mipi0bsys clocks.
-
-config COMMON_CLK_MT6765_MIPI1ASYS
- tristate "Clock driver for MediaTek MT6765 mipi1asys"
- depends on COMMON_CLK_MT6765
- help
- This driver supports MediaTek MT6765 mipi1asys clocks.
-
-config COMMON_CLK_MT6765_MIPI1BSYS
- tristate "Clock driver for MediaTek MT6765 mipi1bsys"
- depends on COMMON_CLK_MT6765
- help
- This driver supports MediaTek MT6765 mipi1bsys clocks.
-
-config COMMON_CLK_MT6765_MIPI2ASYS
- tristate "Clock driver for MediaTek MT6765 mipi2asys"
- depends on COMMON_CLK_MT6765
- help
- This driver supports MediaTek MT6765 mipi2asys clocks.
-
-config COMMON_CLK_MT6765_MIPI2BSYS
- tristate "Clock driver for MediaTek MT6765 mipi2bsys"
- depends on COMMON_CLK_MT6765
- help
- This driver supports MediaTek MT6765 mipi2bsys clocks.
-
config COMMON_CLK_MT6779
tristate "Clock driver for MediaTek MT6779"
depends on (ARCH_MEDIATEK && ARM64) || COMPILE_TEST
diff --git a/drivers/clk/sunxi/Kconfig b/drivers/clk/sunxi/Kconfig
index 5e2f92bfe..3ba500b9d 100644
--- a/drivers/clk/sunxi/Kconfig
+++ b/drivers/clk/sunxi/Kconfig
@@ -32,11 +32,4 @@ config CLK_SUNXI_PRCM_SUN8I
Those are usually needed for the PMIC communication,
mostly.

-config CLK_SUNXI_PRCM_SUN9I
- bool "Legacy A80 PRCM driver"
- default ARCH_SUNXI
- help
- Legacy clock driver for the A80 PRCM clocks. Those are
- usually needed for the PMIC communication, mostly.
-
endif
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
index a81bf51cb..082dc3f5c 100644
--- a/drivers/hid/Kconfig
+++ b/drivers/hid/Kconfig
@@ -1296,15 +1296,6 @@ config HID_TOPRE
Say Y for N-key rollover support on Topre REALFORCE R2 108/87 key and
Topre REALFORCE R3S 87 key keyboards.

-config HID_THINGM
- tristate "ThingM blink(1) USB RGB LED"
- depends on LEDS_CLASS
- select HID_LED
- help
- Support for the ThingM blink(1) USB RGB LED. This driver has been
- merged into the generic hid led driver. Config symbol HID_THINGM
- just selects HID_LED and will be removed soon.
-
config HID_THRUSTMASTER
tristate "ThrustMaster devices support"
depends on USB_HID
diff --git a/drivers/interconnect/mediatek/Kconfig b/drivers/interconnect/mediatek/Kconfig
index 9fd3f2170..a7aebfa1a 100644
--- a/drivers/interconnect/mediatek/Kconfig
+++ b/drivers/interconnect/mediatek/Kconfig
@@ -28,9 +28,3 @@ config INTERCONNECT_MTK_MT8195
This is a driver for the MediaTek bus interconnect on MT8195-based
platforms.

-config INTERCONNECT_MTK_MT8196
- tristate "MediaTek MT8196 interconnect driver"
- depends on INTERCONNECT_MTK_DVFSRC_EMI
- help
- This is a driver for the MediaTek bus interconnect on MT8196-based
- platforms.
diff --git a/drivers/media/dvb-core/Kconfig b/drivers/media/dvb-core/Kconfig
index 8b3f2d53c..c6a97add8 100644
--- a/drivers/media/dvb-core/Kconfig
+++ b/drivers/media/dvb-core/Kconfig
@@ -67,14 +67,3 @@ config DVB_DEMUX_SECTION_LOSS_LOG

If you are unsure about this, say N here.

-config DVB_ULE_DEBUG
- bool "Enable DVB net ULE packet debug messages"
- depends on DVB_CORE
- help
- Enable extra log messages meant to detect problems while
- handling DVB network ULE packet loss inside the Kernel.
-
- Should not be enabled on normal cases, as logs can
- be very verbose.
-
- If you are unsure about this, say N here.
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index 2c7699b66..dbef2275f 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -22,12 +22,6 @@ config SDR_PLATFORM_DRIVERS
help
Say Y here to enable support for platform-specific SDR Drivers.

-config DVB_PLATFORM_DRIVERS
- bool "DVB platform devices"
- depends on MEDIA_DIGITAL_TV_SUPPORT
- help
- Say Y here to enable support for platform-specific Digital TV drivers.
-
config V4L_MEM2MEM_DRIVERS
bool "Memory-to-memory multimedia devices"
depends on VIDEO_DEV
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index 7364931da..2e37b3e08 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -434,10 +434,6 @@ config XILINX_SDFEC

If unsure, say N.

-config MISC_RTSX
- tristate
- default MISC_RTSX_PCI || MISC_RTSX_USB
-
config OPEN_DICE
tristate "Open Profile for DICE driver"
depends on OF_RESERVED_MEM
diff --git a/drivers/pci/controller/dwc/Kconfig b/drivers/pci/controller/dwc/Kconfig
index dcfbe7e22..c43b3bde5 100644
--- a/drivers/pci/controller/dwc/Kconfig
+++ b/drivers/pci/controller/dwc/Kconfig
@@ -121,20 +121,6 @@ config PCI_IMX6_HOST
on DesignWare hardware and therefore the driver re-uses the
DesignWare core functions to implement the driver.

-config PCI_IMX6_EP
- bool "Freescale i.MX6/7/8 PCIe controller (endpoint mode)"
- depends on ARCH_MXC || COMPILE_TEST
- depends on PCI_ENDPOINT
- select PCIE_DW_EP
- select PCI_HOST_COMMON
- select PCI_IMX6
- select PCI_PWRCTRL_GENERIC
- help
- Enables support for the PCIe controller in the i.MX SoCs to
- work in endpoint mode. The PCI controller on i.MX is based
- on DesignWare hardware and therefore the driver re-uses the
- DesignWare core functions to implement the driver.
-
config PCI_LAYERSCAPE
tristate "Freescale Layerscape PCIe controller (host mode)"
depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
diff --git a/drivers/pci/pwrctrl/Kconfig b/drivers/pci/pwrctrl/Kconfig
index 9eec767cd..853dd16b0 100644
--- a/drivers/pci/pwrctrl/Kconfig
+++ b/drivers/pci/pwrctrl/Kconfig
@@ -39,12 +39,3 @@ config PCI_PWRCTRL_TC9563
MAC is connected as endpoint device. Other two downstream ports are
supposed to connect to external device.

-# deprecated
-config HAVE_PWRCTL
- bool
- select HAVE_PWRCTRL
-
-# deprecated
-config PCI_PWRCTL_PWRSEQ
- tristate
- select PCI_PWRCTRL_PWRSEQ
diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
index 89789ac7a..2c4d5b53e 100644
--- a/drivers/regulator/Kconfig
+++ b/drivers/regulator/Kconfig
@@ -22,7 +22,6 @@ menuconfig REGULATOR

If unsure, say no.

-
if REGULATOR

config REGULATOR_DEBUG
@@ -900,16 +899,6 @@ config REGULATOR_MT6315
This driver supports the control of different power rails of device
through regulator interface.

-config REGULATOR_MT6316
- tristate "MT6316 SPMI PMIC regulator driver"
- depends on SPMI
- select REGMAP_SPMI
- help
- Say Y here to enable support for 2+2, 3+1 and 4 phase regulators
- found in the MediaTek MT6316 BP, CP, DP, HP, VP and TP SPMI PMICs.
- This driver supports the control of different power rails of device
- through regulator interface.
-
config REGULATOR_MT6323
tristate "MediaTek MT6323 PMIC"
depends on MFD_MT6397
@@ -1726,7 +1715,6 @@ config REGULATOR_TPS65185
so it is found in E-Book readers.
If HWWON is enabled, it also provides temperature measurement.

-
config REGULATOR_TPS65217
tristate "TI TPS65217 Power regulators"
depends on MFD_TPS65217
diff --git a/drivers/staging/media/Kconfig b/drivers/staging/media/Kconfig
index 06cbc5c54..2d3e70b49 100644
--- a/drivers/staging/media/Kconfig
+++ b/drivers/staging/media/Kconfig
@@ -16,7 +16,6 @@ menuconfig STAGING_MEDIA

If in doubt, say N here.

-
if STAGING_MEDIA && MEDIA_SUPPORT

# Please keep them in alphabetic order
@@ -38,16 +37,4 @@ source "drivers/staging/media/sunxi/Kconfig"

source "drivers/staging/media/tegra-video/Kconfig"

-menuconfig STAGING_MEDIA_DEPRECATED
- bool "Media staging drivers (DEPRECATED)"
- default n
- help
- This option enables deprecated media drivers that are
- scheduled for future removal from the kernel.
-
- If you wish to work on these drivers to prevent their removal,
- then contact the linux-media@xxxxxxxxxxxxxxx mailing list.
-
- If in doubt, say N here.
-
endif
diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
index 76521555e..f05eb1bb7 100644
--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -492,20 +492,6 @@ config USB_CONFIGFS_F_PRINTER
For more information, see Documentation/usb/gadget_printer.rst
which includes sample code for accessing the device file.

-config USB_CONFIGFS_F_TCM
- bool "USB Gadget Target Fabric"
- depends on TARGET_CORE
- depends on USB_CONFIGFS
- select USB_LIBCOMPOSITE
- select USB_F_TCM
- help
- This fabric is a USB gadget component. Two USB protocols are
- supported that is BBB or BOT (Bulk Only Transport) and UAS
- (USB Attached SCSI). BOT is advertised on alternative
- interface 0 (primary) and UAS is on alternative interface 1.
- Both protocols can work on USB2.0 and USB3.0.
- UAS utilizes the USB 3.0 feature called streams support.
-
source "drivers/usb/gadget/legacy/Kconfig"

endif # USB_GADGET
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index 10cff12a3..06999ba3d 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -281,20 +281,6 @@ config USB_EHCI_HCD_AT91
Enables support for the on-chip EHCI controller on
Atmel chips.

-config USB_EHCI_TEGRA
- tristate "NVIDIA Tegra HCD support"
- depends on ARCH_TEGRA
- select USB_CHIPIDEA
- select USB_CHIPIDEA_HOST
- select USB_CHIPIDEA_TEGRA
- select USB_GADGET
- help
- This option is deprecated now and the driver was removed, use
- USB_CHIPIDEA_TEGRA instead.
-
- Enable support for the internal USB Host Controllers
- found in NVIDIA Tegra SoCs. The controllers are EHCI compliant.
-
config USB_EHCI_HCD_PPC_OF
bool "EHCI support for PPC USB controller on OF platform bus"
depends on PPC
@@ -530,23 +516,6 @@ config USB_OHCI_HCD_PCI
Enables support for PCI-bus plug-in USB controller cards.
If unsure, say Y.

-config USB_OHCI_HCD_SSB
- bool "OHCI support for Broadcom SSB OHCI core (DEPRECATED)"
- depends on (SSB = y || SSB = USB_OHCI_HCD)
- select USB_HCD_SSB
- select USB_OHCI_HCD_PLATFORM
- help
- This option is deprecated now and the driver was removed, use
- USB_HCD_SSB and USB_OHCI_HCD_PLATFORM instead.
-
- Support for the Sonics Silicon Backplane (SSB) attached
- Broadcom USB OHCI core.
-
- This device is present in some embedded devices with
- Broadcom based SSB bus.
-
- If unsure, say N.
-
config USB_OHCI_EXYNOS
tristate "OHCI support for Samsung S5P/Exynos SoC Series"
depends on ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
@@ -562,21 +531,6 @@ config USB_OHCI_HCD_PLATFORM

If unsure, say N.

-config USB_OCTEON_OHCI
- bool "Octeon on-chip OHCI support (DEPRECATED)"
- depends on CAVIUM_OCTEON_SOC
- default USB_OCTEON_EHCI
- select USB_OHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
- select USB_OHCI_LITTLE_ENDIAN
- select USB_OHCI_HCD_PLATFORM
- help
- This option is deprecated now and the driver was removed, use
- USB_OHCI_HCD_PLATFORM instead.
-
- Enable support for the Octeon II SOC's on-chip OHCI
- controller. It is needed for low-speed USB 1.0 device
- support. All CN6XXX based chips with USB are supported.
-
endif # USB_OHCI_HCD

config USB_UHCI_HCD
diff --git a/drivers/video/fbdev/core/Kconfig b/drivers/video/fbdev/core/Kconfig
index 8d1993e0b..14860a1ae 100644
--- a/drivers/video/fbdev/core/Kconfig
+++ b/drivers/video/fbdev/core/Kconfig
@@ -155,12 +155,6 @@ config FB_IOMEM_HELPERS
select FB_CFB_IMAGEBLIT
select FB_IOMEM_FOPS

-config FB_IOMEM_HELPERS_DEFERRED
- bool
- depends on FB_CORE
- select FB_DEFERRED_IO
- select FB_IOMEM_HELPERS
-
config FB_SYSMEM_HELPERS
bool
depends on FB_CORE
diff --git a/security/apparmor/Kconfig b/security/apparmor/Kconfig
index a1f3749bd..508fd7f02 100644
--- a/security/apparmor/Kconfig
+++ b/security/apparmor/Kconfig
@@ -35,15 +35,6 @@ config SECURITY_APPARMOR_DEBUG_ASSERTS
points. If the assert is triggered it will trigger a WARN
message.

-config SECURITY_APPARMOR_DEBUG_MESSAGES
- bool "Debug messages enabled by default"
- depends on SECURITY_APPARMOR_DEBUG
- default n
- help
- Set the default value of the apparmor.debug kernel parameter.
- When enabled, various debug messages will be logged to
- the kernel message buffer.
-
config SECURITY_APPARMOR_INTROSPECT_POLICY
bool "Allow loaded policy to be introspected"
depends on SECURITY_APPARMOR
diff --git a/sound/soc/tegra/Kconfig b/sound/soc/tegra/Kconfig
index fdc954028..e52f7cb9e 100644
--- a/sound/soc/tegra/Kconfig
+++ b/sound/soc/tegra/Kconfig
@@ -192,15 +192,6 @@ config SND_SOC_TEGRA_AUDIO_GRAPH_CARD
config SND_SOC_TEGRA_MACHINE_DRV
tristate

-config SND_SOC_TEGRA_RT5631
- tristate "SoC Audio support for Tegra boards using an RT5631 codec"
- depends on SND_SOC_TEGRA && I2C && GPIOLIB
- select SND_SOC_TEGRA_MACHINE_DRV
- select SND_SOC_RT5631
- help
- Say Y or M here if you want to add support for SoC audio on Tegra
- boards using the RT5631 codec, such as Transformer.
-
config SND_SOC_TEGRA_RT5640
tristate "SoC Audio support for Tegra boards using an RT5640 codec"
depends on I2C && GPIOLIB
@@ -276,24 +267,6 @@ config SND_SOC_TEGRA_MAX98090
Say Y or M here if you want to add support for SoC audio on Tegra
boards using the MAX98090 codec, such as Venice2.

-config SND_SOC_TEGRA_MAX98088
- tristate "SoC Audio support for Tegra boards using a MAX9808x codec"
- depends on I2C && GPIOLIB
- select SND_SOC_TEGRA_MACHINE_DRV
- select SND_SOC_MAX98088
- help
- Say Y or M here if you want to add support for SoC audio on Tegra
- boards using the MAX98088 codec, such as LG X3.
-
-config SND_SOC_TEGRA_RT5677
- tristate "SoC Audio support for Tegra boards using a RT5677 codec"
- depends on I2C && GPIOLIB
- select SND_SOC_TEGRA_MACHINE_DRV
- select SND_SOC_RT5677
- help
- Say Y or M here if you want to add support for SoC audio on Tegra
- boards using the RT5677 codec, such as Ryu.
-
config SND_SOC_TEGRA_SGTL5000
tristate "SoC Audio support for Tegra boards using a SGTL5000 codec"
depends on I2C && GPIOLIB
@@ -304,15 +277,6 @@ config SND_SOC_TEGRA_SGTL5000
boards using the SGTL5000 codec, such as Apalis T30, Apalis TK1 or
Colibri T30.

-config SND_SOC_TEGRA_CPCAP
- tristate "SoC Audio support for Tegra boards using a CPCAP codec"
- depends on I2C && GPIOLIB && MFD_CPCAP
- select SND_SOC_TEGRA_MACHINE_DRV
- select SND_SOC_CPCAP
- help
- Say Y or M here if you want to add support for SoC audio on Tegra
- boards using the CPCAP codec, such as Motorola Atrix 4G or Droid X2.
-
endif

endmenu
--
2.43.0