[RFC][PATCH] Make entries in the "Device drivers" menu individuallyselectable

From: Robert P. J. Day
Date: Thu Dec 14 2006 - 03:36:02 EST



i've posted on this before so here's a slightly-updated patch that
uses the kbuild "menuconfig" feature to make numerous entries under
the Device drivers menu selectable on the spot. if folks think this
is a good idea, what's the best way to get it in?

i could officially submit the patch as is or, if that's too
wide-sweeping since it hits a lot of subsystems, leave it up to the
individual subsystem maintainers to decide for themselves and submit
their own patch.

(the patch below modifies those entries for which a "menuconfig"
entry was immediately obvious and shouldn't affect any of the
underlying logic. that's why some entries were deliberately left out
of the patch, at least for now.)


drivers/ata/Kconfig | 8 ++------
drivers/connector/Kconfig | 8 ++++----
drivers/dma/Kconfig | 10 +++++-----
drivers/edac/Kconfig | 8 ++++----
drivers/hwmon/Kconfig | 8 ++++----
drivers/i2c/Kconfig | 9 ++++-----
drivers/ide/Kconfig | 6 +-----
drivers/ieee1394/Kconfig | 7 ++++---
drivers/infiniband/Kconfig | 10 +++++-----
drivers/isdn/Kconfig | 9 ++++-----
drivers/leds/Kconfig | 9 +++------
drivers/md/Kconfig | 8 ++++----
drivers/message/i2o/Kconfig | 12 +++++-------
drivers/mmc/Kconfig | 8 ++++----
drivers/mtd/Kconfig | 8 ++++----
drivers/parport/Kconfig | 8 ++++----
drivers/pnp/Kconfig | 8 ++++----
drivers/spi/Kconfig | 8 ++++----
drivers/telephony/Kconfig | 9 ++++-----
drivers/w1/Kconfig | 8 ++++----
20 files changed, 77 insertions(+), 92 deletions(-)

diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index 984ab28..a3bdf04 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -2,10 +2,8 @@
# SATA/PATA driver configuration
#

-menu "Serial ATA (prod) and Parallel ATA (experimental) drivers"
-
-config ATA
- tristate "ATA device support"
+menuconfig ATA
+ tristate "Serial ATA (prod) and Parallel ATA (experimental) drivers"
depends on BLOCK
depends on !(M32R || M68K) || BROKEN
depends on !SUN4 || BROKEN
@@ -519,5 +517,3 @@ config PATA_IXP4XX_CF
If unsure, say N.

endif
-endmenu
-
diff --git a/drivers/connector/Kconfig b/drivers/connector/Kconfig
index e0bdc0d..9a5a061 100644
--- a/drivers/connector/Kconfig
+++ b/drivers/connector/Kconfig
@@ -1,6 +1,4 @@
-menu "Connector - unified userspace <-> kernelspace linker"
-
-config CONNECTOR
+menuconfig CONNECTOR
tristate "Connector - unified userspace <-> kernelspace linker"
depends on NET
---help---
@@ -10,6 +8,8 @@ config CONNECTOR
Connector support can also be built as a module. If so, the module
will be called cn.ko.

+if CONNECTOR
+
config PROC_EVENTS
boolean "Report process events to userspace"
depends on CONNECTOR=y
@@ -18,4 +18,4 @@ config PROC_EVENTS
Provide a connector that reports process events to userspace. Send
events such as fork, exec, id change (uid, gid, suid, etc), and exit.

-endmenu
+endif
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index 30d021d..b1fb8c0 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -2,14 +2,14 @@
# DMA engine configuration
#

-menu "DMA Engine support"
-
-config DMA_ENGINE
- bool "Support for DMA engines"
+menuconfig DMA_ENGINE
+ bool "DMA engine support"
---help---
DMA engines offload copy operations from the CPU to dedicated
hardware, allowing the copies to happen asynchronously.

+if DMA_ENGINE
+
comment "DMA Clients"

config NET_DMA
@@ -31,4 +31,4 @@ config INTEL_IOATDMA
---help---
Enable support for the Intel(R) I/OAT DMA engine.

-endmenu
+endif
diff --git a/drivers/edac/Kconfig b/drivers/edac/Kconfig
index 4f08984..e52e9b0 100644
--- a/drivers/edac/Kconfig
+++ b/drivers/edac/Kconfig
@@ -6,10 +6,9 @@
# $Id: Kconfig,v 1.4.2.7 2005/07/08 22:05:38 dsp_llnl Exp $
#

-menu 'EDAC - error detection and reporting (RAS) (EXPERIMENTAL)'

-config EDAC
- tristate "EDAC core system error reporting (EXPERIMENTAL)"
+menuconfig EDAC
+ tristate 'EDAC - error detection and reporting (RAS) (EXPERIMENTAL)'
depends on X86 && EXPERIMENTAL
help
EDAC is designed to report errors in the core system.
@@ -29,6 +28,7 @@ config EDAC
There is also a mailing list for the EDAC project, which can
be found via the sourceforge page.

+if EDAC

comment "Reporting subsystems"
depends on EDAC
@@ -110,4 +110,4 @@ config EDAC_POLL

endchoice

-endmenu
+endif
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 891ef6d..7a8afaa 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -2,9 +2,7 @@
# Hardware monitoring chip drivers configuration
#

-menu "Hardware Monitoring support"
-
-config HWMON
+menuconfig HWMON
tristate "Hardware Monitoring support"
default y
help
@@ -23,6 +21,8 @@ config HWMON
This support can also be built as a module. If so, the module
will be called hwmon.

+if HWMON
+
config HWMON_VID
tristate
default n
@@ -592,4 +592,4 @@ config HWMON_DEBUG_CHIP
a problem with I2C support and want to see more of what is going
on.

-endmenu
+endif
diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
index 11935f6..af35094 100644
--- a/drivers/i2c/Kconfig
+++ b/drivers/i2c/Kconfig
@@ -2,9 +2,7 @@
# I2C subsystem configuration
#

-menu "I2C support"
-
-config I2C
+menuconfig I2C
tristate "I2C support"
---help---
I2C (pronounce: I-square-C) is a slow serial bus protocol used in
@@ -22,6 +20,8 @@ config I2C
This I2C support can also be built as a module. If so, the module
will be called i2c-core.

+if I2C
+
config I2C_CHARDEV
tristate "I2C device interface"
depends on I2C
@@ -73,5 +73,4 @@ config I2C_DEBUG_CHIP
a problem with I2C support and want to see more of what is going
on.

-endmenu
-
+endif
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig
index 3f82805..cef34d3 100644
--- a/drivers/ide/Kconfig
+++ b/drivers/ide/Kconfig
@@ -6,9 +6,7 @@

if BLOCK

-menu "ATA/ATAPI/MFM/RLL support"
-
-config IDE
+menuconfig IDE
tristate "ATA/ATAPI/MFM/RLL support"
---help---
If you say Y here, your kernel will be able to manage low cost mass
@@ -1080,6 +1078,4 @@ config BLK_DEV_HD

endif

-endmenu
-
endif
diff --git a/drivers/ieee1394/Kconfig b/drivers/ieee1394/Kconfig
index e7d5657..75d07e5 100644
--- a/drivers/ieee1394/Kconfig
+++ b/drivers/ieee1394/Kconfig
@@ -1,8 +1,7 @@
# -*- shell-script -*-

-menu "IEEE 1394 (FireWire) support"

-config IEEE1394
+menuconfig IEEE1394
tristate "IEEE 1394 (FireWire) support"
depends on PCI || BROKEN
select NET
@@ -19,6 +18,8 @@ config IEEE1394
To compile this driver as a module, say M here: the
module will be called ieee1394.

+if IEEE1394
+
comment "Subsystem Options"
depends on IEEE1394

@@ -175,4 +176,4 @@ config IEEE1394_RAWIO
To compile this driver as a module, say M here: the
module will be called raw1394.

-endmenu
+endif
diff --git a/drivers/infiniband/Kconfig b/drivers/infiniband/Kconfig
index 9edface..6582f51 100644
--- a/drivers/infiniband/Kconfig
+++ b/drivers/infiniband/Kconfig
@@ -1,13 +1,13 @@
-menu "InfiniBand support"
-
-config INFINIBAND
- depends on PCI || BROKEN
+menuconfig INFINIBAND
tristate "InfiniBand support"
+ depends on PCI || BROKEN
---help---
Core support for InfiniBand (IB). Make sure to also select
any protocols you wish to use as well as drivers for your
InfiniBand hardware.

+if INFINIBAND
+
config INFINIBAND_USER_MAD
tristate "InfiniBand userspace MAD support"
depends on INFINIBAND
@@ -45,4 +45,4 @@ source "drivers/infiniband/ulp/srp/Kconfig"

source "drivers/infiniband/ulp/iser/Kconfig"

-endmenu
+endif
diff --git a/drivers/isdn/Kconfig b/drivers/isdn/Kconfig
index c90afee..f7bf323 100644
--- a/drivers/isdn/Kconfig
+++ b/drivers/isdn/Kconfig
@@ -2,9 +2,7 @@
# ISDN device configuration
#

-menu "ISDN subsystem"
-
-config ISDN
+menuconfig ISDN
tristate "ISDN support"
depends on NET
---help---
@@ -20,6 +18,8 @@ config ISDN

Select this option if you want your kernel to support ISDN.

+if ISDN
+

menu "Old ISDN4Linux"
depends on NET && ISDN
@@ -63,5 +63,4 @@ source "drivers/isdn/capi/Kconfig"

source "drivers/isdn/hardware/Kconfig"

-endmenu
-
+endif
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index 7399ba7..94ebdf5 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -1,7 +1,4 @@
-
-menu "LED devices"
-
-config NEW_LEDS
+menuconfig NEW_LEDS
bool "LED Support"
help
Say Y to enable Linux LED support. This allows control of supported
@@ -9,6 +6,7 @@ config NEW_LEDS

This is not related to standard keyboard LEDs which are controlled
via the input system.
+if NEW_LEDS

config LEDS_CLASS
tristate "LED Class Support"
@@ -115,5 +113,4 @@ config LEDS_TRIGGER_HEARTBEAT
load average.
If unsure, say Y.

-endmenu
-
+endif
diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig
index 4540ade..b12b33b 100644
--- a/drivers/md/Kconfig
+++ b/drivers/md/Kconfig
@@ -4,14 +4,14 @@

if BLOCK

-menu "Multi-device support (RAID and LVM)"
-
-config MD
+menuconfig MD
bool "Multiple devices driver support (RAID and LVM)"
help
Support multiple physical spindles through a single logical device.
Required for RAID and logical volume management.

+if MD
+
config BLK_DEV_MD
tristate "RAID support"
depends on MD
@@ -262,6 +262,6 @@ config DM_MULTIPATH_EMC
---help---
Multipath support for EMC CX/AX series hardware.

-endmenu
+endif

endif
diff --git a/drivers/message/i2o/Kconfig b/drivers/message/i2o/Kconfig
index 6443392..6177faa 100644
--- a/drivers/message/i2o/Kconfig
+++ b/drivers/message/i2o/Kconfig
@@ -1,8 +1,5 @@
-
-menu "I2O device support"
-
-config I2O
- tristate "I2O support"
+menuconfig I2O
+ tristate "I2O device support"
depends on PCI
---help---
The Intelligent Input/Output (I2O) architecture allows hardware
@@ -24,6 +21,8 @@ config I2O

If unsure, say N.

+if I2O
+
config I2O_LCT_NOTIFY_ON_CHANGES
bool "Enable LCT notification"
depends on I2O
@@ -122,5 +121,4 @@ config I2O_PROC
To compile this support as a module, choose M here: the
module will be called i2o_proc.

-endmenu
-
+endif
diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
index 4224686..841524a 100644
--- a/drivers/mmc/Kconfig
+++ b/drivers/mmc/Kconfig
@@ -2,15 +2,15 @@
# MMC subsystem configuration
#

-menu "MMC/SD Card support"

-config MMC
- tristate "MMC support"
+menuconfig MMC
+ tristate "MMC/SD Card support"
help
MMC is the "multi-media card" bus protocol.

If you want MMC support, you should say Y here and also
to the specific driver for your MMC interface.
+if MMC

config MMC_DEBUG
bool "MMC debugging"
@@ -125,4 +125,4 @@ config MMC_TIFM_SD
To compile this driver as a module, choose M here: the
module will be called tifm_sd.

-endmenu
+endif
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
index a304b34..3c9ae5b 100644
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
@@ -1,8 +1,6 @@
# $Id: Kconfig,v 1.11 2005/11/07 11:14:19 gleixner Exp $

-menu "Memory Technology Devices (MTD)"
-
-config MTD
+menuconfig MTD
tristate "Memory Technology Device (MTD) support"
help
Memory Technology Devices are flash, RAM and similar chips, often
@@ -13,6 +11,8 @@ config MTD
them. It will also allow you to select individual drivers for
particular hardware and users of MTD devices. If unsure, say N.

+if MTD
+
config MTD_DEBUG
bool "Debugging"
depends on MTD
@@ -281,5 +281,5 @@ source "drivers/mtd/nand/Kconfig"

source "drivers/mtd/onenand/Kconfig"

-endmenu
+endif

diff --git a/drivers/parport/Kconfig b/drivers/parport/Kconfig
index 36c6a1b..7a3ed1c 100644
--- a/drivers/parport/Kconfig
+++ b/drivers/parport/Kconfig
@@ -5,9 +5,7 @@
# Parport configuration.
#

-menu "Parallel port support"
-
-config PARPORT
+menuconfig PARPORT
tristate "Parallel port support"
---help---
If you want to use devices connected to your machine's parallel port
@@ -32,6 +30,8 @@ config PARPORT

If unsure, say Y.

+if PARPORT
+
config PARPORT_PC
tristate "PC-style hardware"
depends on PARPORT && (!SPARC64 || PCI) && !SPARC32 && !M32R && !FRV
@@ -158,5 +158,5 @@ config PARPORT_1284
config PARPORT_NOT_PC
bool

-endmenu
+endif

diff --git a/drivers/pnp/Kconfig b/drivers/pnp/Kconfig
index c514320..ec7ab40 100644
--- a/drivers/pnp/Kconfig
+++ b/drivers/pnp/Kconfig
@@ -2,9 +2,7 @@
# Plug and Play configuration
#

-menu "Plug and Play support"
-
-config PNP
+menuconfig PNP
bool "Plug and Play support"
depends on ISA || ACPI
---help---
@@ -21,6 +19,8 @@ config PNP

If unsure, say Y.

+if PNP
+
config PNP_DEBUG
bool "PnP Debug Messages"
depends on PNP
@@ -37,5 +37,5 @@ source "drivers/pnp/pnpbios/Kconfig"

source "drivers/pnp/pnpacpi/Kconfig"

-endmenu
+endif

diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index d895a1a..1b44244 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -5,9 +5,7 @@
# nobody's needed a slave side API yet. The master-role API is not
# fully appropriate there, so it'd need some thought to do well.
#
-menu "SPI support"
-
-config SPI
+menuconfig SPI
bool "SPI support"
help
The "Serial Peripheral Interface" is a low level synchronous
@@ -27,6 +25,8 @@ config SPI
(half duplex), SSP, SSI, and PSP. This driver framework should
work with most such devices and controllers.

+if SPI
+
config SPI_DEBUG
boolean "Debug support for SPI drivers"
depends on SPI && DEBUG_KERNEL
@@ -129,5 +129,5 @@ comment "SPI Protocol Masters"

# (slave support would go here)

-endmenu # "SPI support"
+endif

diff --git a/drivers/telephony/Kconfig b/drivers/telephony/Kconfig
index 7625b18..d123fa1 100644
--- a/drivers/telephony/Kconfig
+++ b/drivers/telephony/Kconfig
@@ -2,9 +2,7 @@
# Telephony device configuration
#

-menu "Telephony Support"
-
-config PHONE
+menuconfig PHONE
tristate "Linux telephony support"
---help---
Say Y here if you have a telephony card, which for example allows
@@ -16,6 +14,8 @@ config PHONE
To compile this driver as a module, choose M here: the
module will be called phonedev.

+if PHONE
+
config PHONE_IXJ
tristate "QuickNet Internet LineJack/PhoneJack support"
depends on PHONE
@@ -43,5 +43,4 @@ config PHONE_IXJ_PCMCIA
cards manufactured by Quicknet Technologies, Inc. This changes the
card initialization code to work with the card manager daemon.

-endmenu
-
+endif
diff --git a/drivers/w1/Kconfig b/drivers/w1/Kconfig
index c287a9a..63c9c82 100644
--- a/drivers/w1/Kconfig
+++ b/drivers/w1/Kconfig
@@ -1,6 +1,4 @@
-menu "Dallas's 1-wire bus"
-
-config W1
+menuconfig W1
tristate "Dallas's 1-wire support"
---help---
Dallas' 1-wire bus is useful to connect slow 1-pin devices
@@ -11,6 +9,8 @@ config W1
This W1 support can also be built as a module. If so, the module
will be called wire.ko.

+if W1
+
config W1_CON
depends on CONNECTOR && W1
bool "Userspace communication over connector"
@@ -26,4 +26,4 @@ config W1_CON
source drivers/w1/masters/Kconfig
source drivers/w1/slaves/Kconfig

-endmenu
+endif
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/