On Sat, Aug 11, 2007 at 04:42:39PM +0200, Michael Buesch wrote:
> On Saturday 11 August 2007 16:30:02 Adrian Bunk wrote:
> > And offering more options than required or manually sending users into 
> > other menus are bad thing for your users.
> 
> Breaking compilations are as bad.
> So, does your example actually work in practice and not only
> in theory, too? My select stuff should have worked in theory, too.
> But it broke, for whatever reasons on whatever weird setups.
> 
> We somehow are in an endless loop here:
> 
> loop:
>       implement it with select
>       people complain select it bad and suggest to implement it with depends 
> on
>       implement it with depends on
>       either
>               users don't find it anymore
>               users complain
>       or
>               it needs way to tell the user what to select first
>               developers complain
>       goto loop
> 
> ;)

It's your fault that you base your work on an algorithm lacking the 
essential steps
        fix it properly
        goto out
;-)

More seriously, below is a patch doing what I have in mind.

> Greetings Michael.

cu
Adrian


<--  snip  -->


This patch adds *_POSSIBLE helper variables for all SSB* variables that 
get select'ed. They indicate whether this variable can be select'ed, 
IOW: whether it's dependencies are fulfilled.


Usage in drivers:


If you need SSB support:

config FOO
        tristate "foo"
        depends on SSB_POSSIBLE
        select SSB


If you need SSB_BAZ support:

config BAR
        tristate "bar"
        depends on SSB_BAZ_POSSIBLE
        select SSB
        select SSB_BAZ


If your driver needs SSB and has optional functionality requiring SSB_BAZ:

config FOOBAR
        tristate "foobar
        depends on SSB_POSSIBLE
        select SSB

# due to being "bool" this suboption shouldn't directly select SSB
# SSB is already select'ed by FOOBAR
config FOOBAR_BAZ
        bool "baz support in foobar"
        depends on FOOBAR && SSB_BAZ_POSSIBLE
        select SSB_BAZ


After this patch, SSB_BAZ can be one of:
- SSB_PCIHOST
- SSB_DRIVER_PCICORE
- SSB_PCMCIAHOST
- SSB_DEBUG


Additional changes in this patch:
- small help text changes
- B44_PCI is no longer usr visible (automatically enabled when possible)
- let SSB_SILENT depend on EMBEDDED (unless you are in a very
  space restricted environment you don't need to enable it)
- make the following options no longer user visible
  (they are select'ed when required):
  - SSB_PCIHOST
  - SSB_DRIVER_PCICORE
  - SSB_PCMCIAHOST


Signed-off-by: Adrian Bunk <[EMAIL PROTECTED]>

---

 drivers/net/Kconfig                           |   12 ---
 drivers/net/wireless/bcm43xx-mac80211/Kconfig |   10 +-
 drivers/ssb/Kconfig                           |   72 ++++++++++--------
 drivers/usb/host/Kconfig                      |    4 -
 4 files changed, 51 insertions(+), 47 deletions(-)

6ed573214282b96e7714b33b89a7221c01efbb86 
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index cea1979..a4f0c2f 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -1435,6 +1435,7 @@ config APRICOT
 config B44
        tristate "Broadcom 440x/47xx ethernet support"
        depends on HAS_IOMEM
+       depends on SSB_POSSIBLE
        select SSB
        select MII
        help
@@ -1452,17 +1453,10 @@ config B44
          called b44.
 
 config B44_PCI
-       bool "Broadcom 440x PCI device support"
-       depends on B44 && NET_PCI
-       select SSB_PCIHOST
+       bool
+       depends on B44 && SSB_DRIVER_PCICORE_POSSIBLE
        select SSB_DRIVER_PCICORE
        default y
-       help
-         Support for Broadcom 440x PCI devices.
-
-         Say Y, unless you know what you are doing.
-         If you say N here I will _not_ listen to your
-         bugreports!
 
 config FORCEDETH
        tristate "nForce Ethernet support"
diff --git a/drivers/net/wireless/bcm43xx-mac80211/Kconfig 
b/drivers/net/wireless/bcm43xx-mac80211/Kconfig
index 8f9df0e..8af8535 100644
--- a/drivers/net/wireless/bcm43xx-mac80211/Kconfig
+++ b/drivers/net/wireless/bcm43xx-mac80211/Kconfig
@@ -1,6 +1,6 @@
 config BCM43XX_MAC80211
        tristate "Broadcom BCM43xx wireless support (mac80211 stack)"
-       depends on MAC80211 && WLAN_80211 && EXPERIMENTAL
+       depends on MAC80211 && WLAN_80211 && SSB_POSSIBLE && EXPERIMENTAL
        select FW_LOADER
        select SSB
        select HW_RANDOM
@@ -10,8 +10,8 @@ config BCM43XX_MAC80211
 
 config BCM43XX_MAC80211_PCI
        bool "BCM43xx PCI device support"
-       depends on BCM43XX_MAC80211 && PCI
-       select SSB_PCIHOST
+       depends on BCM43XX_MAC80211
+       depends on SSB_DRIVER_PCICORE_POSSIBLE
        select SSB_DRIVER_PCICORE
        default y
        ---help---
@@ -24,7 +24,7 @@ config BCM43XX_MAC80211_PCI
 
 config BCM43XX_MAC80211_PCMCIA
        bool "BCM43xx PCMCIA device support"
-       depends on BCM43XX_MAC80211 && PCMCIA
+       depends on BCM43XX_MAC80211 && SSB_PCMCIAHOST_POSSIBLE
        select SSB_PCMCIAHOST
        ---help---
          Broadcom 43xx PCMCIA device support.
@@ -45,7 +45,7 @@ config BCM43XX_MAC80211_PCMCIA
 config BCM43XX_MAC80211_DEBUG
        bool "Broadcom BCM43xx debugging (RECOMMENDED)"
        depends on BCM43XX_MAC80211
-       select SSB_DEBUG if !SSB_SILENT
+       select SSB_DEBUG if SSB_DEBUG_POSSIBLE
        default y
        ---help---
          Broadcom 43xx debugging messages.
diff --git a/drivers/ssb/Kconfig b/drivers/ssb/Kconfig
index 094703c..366c888 100644
--- a/drivers/ssb/Kconfig
+++ b/drivers/ssb/Kconfig
@@ -1,37 +1,42 @@
 menu "Sonics Silicon Backplane"
 
+config SSB_POSSIBLE
+       bool
+       depends on EXPERIMENTAL && HAS_IOMEM
+       default y
+
 config SSB
        tristate "Sonics Silicon Backplane support"
-       depends on EXPERIMENTAL && HAS_IOMEM
+       depends on SSB_POSSIBLE
        help
-         Support for the Sonics Silicon Backplane bus
+         Support for the Sonics Silicon Backplane bus.
+         You only need to enable this option if you are
+         configuring a kernel for an embedded system with
+         this bus.
 
-         The module will be called ssb
+         The module will be called ssb.
 
-         If unsure, say M
+         If unsure, say N.
 
-config SSB_PCIHOST
-       bool "Support for SSB on PCI-bus host"
-       depends on SSB && PCI
+config SSB_PCIHOST_POSSIBLE
+       bool
+       depends on SSB_POSSIBLE && PCI
        default y
-       help
-         Support for a Sonics Silicon Backplane on top
-         of a PCI device.
 
-         If unsure, say Y
+config SSB_PCIHOST
+       bool
 
-config SSB_PCMCIAHOST
-       bool "Support for SSB on PCMCIA-bus host"
-       depends on SSB && PCMCIA
-       help
-         Support for a Sonics Silicon Backplane on top
-         of a PCMCIA device.
+config SSB_PCMCIAHOST_POSSIBLE
+       bool
+       depends on SSB_POSSIBLE && PCMCIA
+       default y
 
-         If unsure, say N
+config SSB_PCMCIAHOST
+       bool
 
 config SSB_SILENT
        bool "No SSB kernel messages"
-       depends on SSB
+       depends on SSB && EMBEDDED
        help
          This option turns off all Sonics Silicon Backplane printks.
          Note that you won't be able to identify problems, once
@@ -39,30 +44,35 @@ config SSB_SILENT
          This might only be desired for production kernels on
          embedded devices to reduce the kernel size.
 
-         Say N
+         If unsure, say N.
+
+config SSB_DEBUG_POSSIBLE
+       bool
+       depends on SSB && !SSB_SILENT
+       default y
 
 config SSB_DEBUG
        bool "SSB debugging"
-       depends on SSB && !SSB_SILENT
+       depends on SSB_DEBUG_POSSIBLE
        help
          This turns on additional runtime checks and debugging
          messages. Turn this on for SSB troubleshooting.
 
-         If unsure, say N
+         If unsure, say N.
 
 config SSB_SERIAL
        bool
        depends on SSB
        # ChipCommon and ExtIf serial support routines.
 
-config SSB_DRIVER_PCICORE
-       bool "SSB PCI core driver"
-       depends on SSB && SSB_PCIHOST
-       help
-         Driver for the Sonics Silicon Backplane attached
-         Broadcom PCI core.
+config SSB_DRIVER_PCICORE_POSSIBLE
+       bool
+       depends on SSB_PCIHOST_POSSIBLE
+       default y
 
-         If unsure, say Y
+config SSB_DRIVER_PCICORE
+       bool
+       select SSB_PCIHOST
 
 config SSB_PCICORE_HOSTMODE
        bool "Hostmode support for SSB PCI core"
@@ -78,7 +88,7 @@ config SSB_DRIVER_MIPS
          Driver for the Sonics Silicon Backplane attached
          Broadcom MIPS core.
 
-         If unsure, say N
+         If unsure, say N.
 
 config SSB_DRIVER_EXTIF
        bool "SSB Broadcom EXTIF core driver"
@@ -87,6 +97,6 @@ config SSB_DRIVER_EXTIF
          Driver for the Sonics Silicon Backplane attached
          Broadcom EXTIF core.
 
-         If unsure, say N
+         If unsure, say N.
 
 endmenu
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index dc3b7fe..d7f5328 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -101,6 +101,7 @@ config USB_OHCI_HCD
        depends on USB && USB_ARCH_HAS_OHCI
        select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3
        select I2C if ARCH_PNX4008
+       select SSB if USB_OHCI_HCD_SSB
        ---help---
          The Open Host Controller Interface (OHCI) is a standard for accessing
          USB 1.1 host controller hardware.  It does more in hardware than 
Intel's
@@ -156,8 +157,7 @@ config USB_OHCI_HCD_PCI
 
 config USB_OHCI_HCD_SSB
        bool "OHCI support for the Broadcom SSB OHCI core (embedded systems 
only)"
-       depends on USB_OHCI_HCD && ((USB_OHCI_HCD=m && SSB) || (USB_OHCI_HCD=y 
&& SSB=y)) && EXPERIMENTAL
-       default n
+       depends on USB_OHCI_HCD && SSB_POSSIBLE && EXPERIMENTAL
        ---help---
          Support for the Sonics Silicon Backplane (SSB) attached
          Broadcom USB OHCI core.

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to