netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] b44-ssb: Fix the SSB dependency hell
@ 2007-08-11  0:08 Michael Buesch
  2007-08-11  0:43 ` Adrian Bunk
  0 siblings, 1 reply; 12+ messages in thread
From: Michael Buesch @ 2007-08-11  0:08 UTC (permalink / raw)
  To: John Linville; +Cc: Andrew Morton, Linux Netdev List

This fixes the SSB dependency hell and introduces some
fake-options that only give some advice on what to select.

We live with these fake options only until menuconfig is able
to tell more about needed dependencies and how to resolve them.

Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Michael Buesch <mb@bu3sch.de>

--

I think this should be merged into the ssb branch of
wireless-dev, unless you plan to maintain a seperate branch
for b44-ssb. But I think merging it with the ssb core is
probably OK.

Index: wireless-dev/drivers/net/Kconfig
===================================================================
--- wireless-dev.orig/drivers/net/Kconfig	2007-08-10 13:40:34.000000000 +0200
+++ wireless-dev/drivers/net/Kconfig	2007-08-10 13:42:18.000000000 +0200
@@ -1452,10 +1452,31 @@ config APRICOT
 	  <file:Documentation/networking/net-modules.txt>.  The module will be
 	  called apricot.
 
+config B44_DEP_HACK
+	bool
+	depends on SSB && SSB_PCIHOST && SSB_DRIVER_PCICORE
+	default y
+
+config B44_ADVICE_HACK
+	bool "B44 for PCI not available. Read the help text of this option!"
+	depends on !B44_DEP_HACK
+	---help---
+	  The Broadcom 440x/47xx driver for PCI devices can not be enabled,
+	  because the required dependencies are not selected.
+
+	  In order to be able to select the Broadcom 440x/47xx PCI driver, you
+	  need to enable the following options first:
+
+	  CONFIG_SSB found in menu:
+	  Device Drivers/Sonics Silicon Backplane/Sonics Silicon Backplane support
+	  CONFIG_SSB_PCIHOST found in menu:
+	  Device Drivers/Sonics Silicon Backplane/Support for SSB on PCI-bus host
+	  CONFIG_SSB_DRIVER_PCICORE found in menu:
+	  Device Drivers/Sonics Silicon Backplane/SSB PCI core driver
+
 config B44
 	tristate "Broadcom 440x/47xx ethernet support"
-	depends on HAS_IOMEM
-	select SSB
+	depends on SSB
 	select MII
 	help
 	  If you have a network (Ethernet) controller of this type, say Y
@@ -1473,9 +1494,7 @@ config B44
 
 config B44_PCI
 	bool "Broadcom 440x PCI device support"
-	depends on B44 && NET_PCI
-	select SSB_PCIHOST
-	select SSB_DRIVER_PCICORE
+	depends on B44 && SSB_PCIHOST && SSB_DRIVER_PCICORE && NET_PCI
 	default y
 	help
 	  Support for Broadcom 440x PCI devices.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] b44-ssb: Fix the SSB dependency hell
  2007-08-11  0:08 [PATCH] b44-ssb: Fix the SSB dependency hell Michael Buesch
@ 2007-08-11  0:43 ` Adrian Bunk
  2007-08-11  0:57   ` Johannes Berg
  0 siblings, 1 reply; 12+ messages in thread
From: Adrian Bunk @ 2007-08-11  0:43 UTC (permalink / raw)
  To: Michael Buesch; +Cc: John Linville, Andrew Morton, Linux Netdev List

On Sat, Aug 11, 2007 at 02:08:21AM +0200, Michael Buesch wrote:
> This fixes the SSB dependency hell and introduces some
> fake-options that only give some advice on what to select.
> 
> We live with these fake options only until menuconfig is able
> to tell more about needed dependencies and how to resolve them.
>...

-ENOMENUCONFIGPATCH

IOW: $t\rightarrow\infty$

> +config B44_ADVICE_HACK
> +	bool "B44 for PCI not available. Read the help text of this option!"
> +	depends on !B44_DEP_HACK
> +	---help---
> +	  The Broadcom 440x/47xx driver for PCI devices can not be enabled,
> +	  because the required dependencies are not selected.
> +
> +	  In order to be able to select the Broadcom 440x/47xx PCI driver, you
> +	  need to enable the following options first:
> +
> +	  CONFIG_SSB found in menu:
> +	  Device Drivers/Sonics Silicon Backplane/Sonics Silicon Backplane support
> +	  CONFIG_SSB_PCIHOST found in menu:
> +	  Device Drivers/Sonics Silicon Backplane/Support for SSB on PCI-bus host
> +	  CONFIG_SSB_DRIVER_PCICORE found in menu:
> +	  Device Drivers/Sonics Silicon Backplane/SSB PCI core driver
> +
>...


That's horrible - you shouldn't force the user to manually enable three 
options.

What is the problem you are trying to solve?
The dependencies of SSB?

There are less horrible solutions for this issue, e.g. [1]:


drivers/ssb/Kconfig:

config SSB_POSSIBLE
	bool
	depends on EXPERIMENTAL && HAS_IOMEM

config SSB
	tristate

config SSB_PCIHOST_POSSIBLE
	bool
	depends on SSB_POSSIBLE && PCI

config SSB_PCIHOST
	bool


drivers/net/Kconfig:

config B44
	tristate "Broadcom 440x/47xx ethernet support"
	depends on SSB_PCIHOST_POSSIBLE
	select SSB
	select SSB_PCIHOST


I can make a complete patch for the SSB options, but I need some
pieces of information before starting:

Is there any extremely good reason why options like SSB or SSB_PCIHOST 
have to be user visible? 

And according to the kconfig help text, we should remove the B44_PCI 
option and enable the code unconditionally?
(Or what was the person writing this help text smoking^Wthinking when
 writing it?)

cu
Adrian

[1] incomplete example for demonstrating an idea

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] b44-ssb: Fix the SSB dependency hell
  2007-08-11  0:43 ` Adrian Bunk
@ 2007-08-11  0:57   ` Johannes Berg
  2007-08-11  1:41     ` Adrian Bunk
  0 siblings, 1 reply; 12+ messages in thread
From: Johannes Berg @ 2007-08-11  0:57 UTC (permalink / raw)
  To: Adrian Bunk
  Cc: Michael Buesch, John Linville, Andrew Morton, Linux Netdev List

[-- Attachment #1: Type: text/plain, Size: 1127 bytes --]

On Sat, 2007-08-11 at 02:43 +0200, Adrian Bunk wrote:

> -ENOMENUCONFIGPATCH

Has anybody decided how it could possibly even look like anyhow? It
should be fixed, but nobody has a plan.

> That's horrible - you shouldn't force the user to manually enable three 
> options.

Well, akpm says: "select is broken. do not ever use it"


> config SSB_PCIHOST_POSSIBLE
[...]

> 	depends on SSB_PCIHOST_POSSIBLE
> 	select SSB
> 	select SSB_PCIHOST

That would, indeed, be possible. But it's ... ugly ... you've now
effectively pushed the information on what *SSB* depends on into each
SSB *user* instead of SSB itself...

> Is there any extremely good reason why options like SSB or SSB_PCIHOST 
> have to be user visible? 

Yes. Embedded systems like the small Linksys routers come with SSB as
the system bus. No PCI/PCIHOST.

> And according to the kconfig help text, we should remove the B44_PCI 
> option and enable the code unconditionally?
> (Or what was the person writing this help text smoking^Wthinking when
>  writing it?)

Same reason. They have a b44 core there but no pci.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 190 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] b44-ssb: Fix the SSB dependency hell
  2007-08-11  0:57   ` Johannes Berg
@ 2007-08-11  1:41     ` Adrian Bunk
  2007-08-11  9:36       ` Michael Buesch
  0 siblings, 1 reply; 12+ messages in thread
From: Adrian Bunk @ 2007-08-11  1:41 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Michael Buesch, John Linville, Andrew Morton, Linux Netdev List

On Sat, Aug 11, 2007 at 02:57:36AM +0200, Johannes Berg wrote:
> On Sat, 2007-08-11 at 02:43 +0200, Adrian Bunk wrote:
> 
> > -ENOMENUCONFIGPATCH
> 
> Has anybody decided how it could possibly even look like anyhow? It
> should be fixed, but nobody has a plan.

The simplest idea would be that an option select'ing some other option 
inherits the dependencies of the latter. That should fix all problems 
select currently has.

There are for sure some problems hidden that will show up during 
implementation, but since noone is implementing it we'll never know...

> > That's horrible - you shouldn't force the user to manually enable three 
> > options.
> 
> Well, akpm says: "select is broken. do not ever use it"

select works fine if you understand the pitfalls.

Kconfig is a _user interface_, and making using it easy for the user 
is therefore important.

Whenever there's a mistake in a help text or something confusing
users will run into problems with the kernel they compiled.

> > config SSB_PCIHOST_POSSIBLE
> [...]
> 
> > 	depends on SSB_PCIHOST_POSSIBLE
> > 	select SSB
> > 	select SSB_PCIHOST
> 
> That would, indeed, be possible. But it's ... ugly ... you've now
> effectively pushed the information on what *SSB* depends on into each
> SSB *user* instead of SSB itself...

No, this information is still in drivers/ssb/Kconfig.

This would replace:

config B44
	depends on SSB_PCIHOST

with:

config B44
	depends on SSB_PCIHOST_POSSIBLE
	select SSB_PCIHOST

That's an easily understandable pattern without redundant information
about the required dependencies of SSB_PCIHOST.

> > Is there any extremely good reason why options like SSB or SSB_PCIHOST 
> > have to be user visible? 
> 
> Yes. Embedded systems like the small Linksys routers come with SSB as
> the system bus. No PCI/PCIHOST.

OK.

> > And according to the kconfig help text, we should remove the B44_PCI 
> > option and enable the code unconditionally?
> > (Or what was the person writing this help text smoking^Wthinking when
> >  writing it?)
> 
> Same reason. They have a b44 core there but no pci.

OK, that's understandable.

But the kconfig user currently only gets:

config B44_PCI
        bool "Broadcom 440x PCI device support"
	...
	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!

An example how to make it better:

config USB_OHCI_HCD_SSB
        bool "OHCI support for the Broadcom SSB OHCI core (embedded systems only)"
	...
        help
          Support for the Sonics Silicon Backplane (SSB) attached
          Broadcom USB OHCI core.

          This device is only present in some embedded devices with
          Broadcom based SSB bus.

          If unsure, say N.

That's the difference between a silly sounding help text ("I will _not_ 
listen to your bugreports!") and a help text that gives the kconfig user 
all required information ("only present in some embedded devices").


And I'm not yet convinced B44_PCI is really worth bothering the user 
with - what about automatically enabling PCI support in the driver if 
PCI support is enabled in the kernel?


> johannes

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] b44-ssb: Fix the SSB dependency hell
  2007-08-11  1:41     ` Adrian Bunk
@ 2007-08-11  9:36       ` Michael Buesch
  2007-08-11 14:30         ` Adrian Bunk
  0 siblings, 1 reply; 12+ messages in thread
From: Michael Buesch @ 2007-08-11  9:36 UTC (permalink / raw)
  To: Adrian Bunk
  Cc: Johannes Berg, John Linville, Andrew Morton, Linux Netdev List

On Saturday 11 August 2007 03:41:11 Adrian Bunk wrote:
> On Sat, Aug 11, 2007 at 02:57:36AM +0200, Johannes Berg wrote:
> > On Sat, 2007-08-11 at 02:43 +0200, Adrian Bunk wrote:
> > 
> > > -ENOMENUCONFIGPATCH
> > 
> > Has anybody decided how it could possibly even look like anyhow? It
> > should be fixed, but nobody has a plan.
> 
> The simplest idea would be that an option select'ing some other option 
> inherits the dependencies of the latter. That should fix all problems 
> select currently has.
> 
> There are for sure some problems hidden that will show up during 
> implementation, but since noone is implementing it we'll never know...
> 
> > > That's horrible - you shouldn't force the user to manually enable three 
> > > options.
> > 
> > Well, akpm says: "select is broken. do not ever use it"
> 
> select works fine if you understand the pitfalls.
> 
> Kconfig is a _user interface_, and making using it easy for the user 
> is therefore important.
> 
> Whenever there's a mistake in a help text or something confusing
> users will run into problems with the kernel they compiled.
> 
> > > config SSB_PCIHOST_POSSIBLE
> > [...]
> > 
> > > 	depends on SSB_PCIHOST_POSSIBLE
> > > 	select SSB
> > > 	select SSB_PCIHOST
> > 
> > That would, indeed, be possible. But it's ... ugly ... you've now
> > effectively pushed the information on what *SSB* depends on into each
> > SSB *user* instead of SSB itself...
> 
> No, this information is still in drivers/ssb/Kconfig.
> 
> This would replace:
> 
> config B44
> 	depends on SSB_PCIHOST
> 
> with:
> 
> config B44
> 	depends on SSB_PCIHOST_POSSIBLE
> 	select SSB_PCIHOST
> 
> That's an easily understandable pattern without redundant information
> about the required dependencies of SSB_PCIHOST.
> 
> > > Is there any extremely good reason why options like SSB or SSB_PCIHOST 
> > > have to be user visible? 
> > 
> > Yes. Embedded systems like the small Linksys routers come with SSB as
> > the system bus. No PCI/PCIHOST.
> 
> OK.
> 
> > > And according to the kconfig help text, we should remove the B44_PCI 
> > > option and enable the code unconditionally?
> > > (Or what was the person writing this help text smoking^Wthinking when
> > >  writing it?)
> > 
> > Same reason. They have a b44 core there but no pci.
> 
> OK, that's understandable.
> 
> But the kconfig user currently only gets:
> 
> config B44_PCI
>         bool "Broadcom 440x PCI device support"
> 	...
> 	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!
> 
> An example how to make it better:
> 
> config USB_OHCI_HCD_SSB
>         bool "OHCI support for the Broadcom SSB OHCI core (embedded systems only)"
> 	...
>         help
>           Support for the Sonics Silicon Backplane (SSB) attached
>           Broadcom USB OHCI core.
> 
>           This device is only present in some embedded devices with
>           Broadcom based SSB bus.
> 
>           If unsure, say N.
> 
> That's the difference between a silly sounding help text ("I will _not_ 
> listen to your bugreports!") and a help text that gives the kconfig user 
> all required information ("only present in some embedded devices").
> 
> 
> And I'm not yet convinced B44_PCI is really worth bothering the user 
> with - what about automatically enabling PCI support in the driver if 
> PCI support is enabled in the kernel?


That's all a silly discussion, guys.
I personally do _not_ care which way we do this.
BUT: My users do care. There is currently no way telling them to first enable
SSB, when they want to select b44 (for example).
Select _does_ introduce breakage. I did use select and I am pretty sure
I got the dependencies right. And it _still_ broken on weird architectures.

So, I do not care how this is implemented. I do care however, that users
do get an advice (at least) on what to do. And that's what my patch does.
If someone has a better idea, please provide a patch.

-- 
Greetings Michael.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] b44-ssb: Fix the SSB dependency hell
  2007-08-11  9:36       ` Michael Buesch
@ 2007-08-11 14:30         ` Adrian Bunk
  2007-08-11 14:42           ` Michael Buesch
  0 siblings, 1 reply; 12+ messages in thread
From: Adrian Bunk @ 2007-08-11 14:30 UTC (permalink / raw)
  To: Michael Buesch
  Cc: Johannes Berg, John Linville, Andrew Morton, Linux Netdev List

On Sat, Aug 11, 2007 at 11:36:46AM +0200, Michael Buesch wrote:
> 
> That's all a silly discussion, guys.
> I personally do _not_ care which way we do this.
> BUT: My users do care. There is currently no way telling them to first enable
> SSB, when they want to select b44 (for example).

The current status quo is that select handles it.

You want to send the users into menus to manually enable options.
That's worse for your users.

> Select _does_ introduce breakage. I did use select and I am pretty sure
> I got the dependencies right. And it _still_ broken on weird architectures.

Have you looked at how I proposed to handle the SSB dependencies?

If yes, why is this broken?

> So, I do not care how this is implemented. I do care however, that users
> do get an advice (at least) on what to do. And that's what my patch does.
> If someone has a better idea, please provide a patch.

I do care about your users.

And offering more options than required or manually sending users into 
other menus are bad thing for your users.

> Greetings Michael.

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] b44-ssb: Fix the SSB dependency hell
  2007-08-11 14:30         ` Adrian Bunk
@ 2007-08-11 14:42           ` Michael Buesch
  2007-08-11 23:08             ` [RFC: -mm patch] improve the SSB dependencies Adrian Bunk
  0 siblings, 1 reply; 12+ messages in thread
From: Michael Buesch @ 2007-08-11 14:42 UTC (permalink / raw)
  To: Adrian Bunk
  Cc: Johannes Berg, John Linville, Andrew Morton, Linux Netdev List

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

;)

-- 
Greetings Michael.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [RFC: -mm patch] improve the SSB dependencies
  2007-08-11 14:42           ` Michael Buesch
@ 2007-08-11 23:08             ` Adrian Bunk
  2007-08-12 12:00               ` Michael Buesch
  0 siblings, 1 reply; 12+ messages in thread
From: Adrian Bunk @ 2007-08-11 23:08 UTC (permalink / raw)
  To: Michael Buesch
  Cc: Adrian Bunk, Johannes Berg, John Linville, Andrew Morton,
	Linux Netdev List

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 <bunk@kernel.org>

---

 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.


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [RFC: -mm patch] improve the SSB dependencies
  2007-08-11 23:08             ` [RFC: -mm patch] improve the SSB dependencies Adrian Bunk
@ 2007-08-12 12:00               ` Michael Buesch
  2007-08-12 22:44                 ` Adrian Bunk
  0 siblings, 1 reply; 12+ messages in thread
From: Michael Buesch @ 2007-08-12 12:00 UTC (permalink / raw)
  To: Adrian Bunk
  Cc: Adrian Bunk, Johannes Berg, John Linville, Andrew Morton,
	Linux Netdev List

Ok, I'll give it a try, with small modifications.

On Sunday 12 August 2007, Adrian Bunk wrote:
> Additional changes in this patch:
> - small help text changes
> - B44_PCI is no longer usr visible (automatically enabled when possible)

I think we want that to be selectable, as it's not needed
on some embedded devices. And we need to save memory there.

> - let SSB_SILENT depend on EMBEDDED (unless you are in a very
>   space restricted environment you don't need to enable it)

Good idea.

> - make the following options no longer user visible
>   (they are select'ed when required):
>   - SSB_PCIHOST

>   - SSB_DRIVER_PCICORE

No, we need that to be selectable.

>   - SSB_PCMCIAHOST
> 
> 
> Signed-off-by: Adrian Bunk <bunk@kernel.org>
> 
> ---
> 
>  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.
> 
> 
> 



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RFC: -mm patch] improve the SSB dependencies
  2007-08-12 12:00               ` Michael Buesch
@ 2007-08-12 22:44                 ` Adrian Bunk
  2007-08-15  0:40                   ` John W. Linville
  0 siblings, 1 reply; 12+ messages in thread
From: Adrian Bunk @ 2007-08-12 22:44 UTC (permalink / raw)
  To: Michael Buesch
  Cc: Johannes Berg, John Linville, Andrew Morton, Linux Netdev List

On Sun, Aug 12, 2007 at 02:00:26PM +0200, Michael Buesch wrote:
> Ok, I'll give it a try, with small modifications.

Thanks.

> On Sunday 12 August 2007, Adrian Bunk wrote:
> > Additional changes in this patch:
> > - small help text changes
> > - B44_PCI is no longer usr visible (automatically enabled when possible)
> 
> I think we want that to be selectable, as it's not needed
> on some embedded devices. And we need to save memory there.
>...

Makes sense, but then:

config B44_PCI
	bool "Broadcom 440x PCI device support" if EMBEDDED
	...
	default y
	...

I don't care about how many options we present if CONFIG_EMBEDDED=y, but 
for the normal CONFIG_EMBEDDED=n case we should not bother the user with 
this option.

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RFC: -mm patch] improve the SSB dependencies
  2007-08-12 22:44                 ` Adrian Bunk
@ 2007-08-15  0:40                   ` John W. Linville
  2007-08-15 12:47                     ` Michael Buesch
  0 siblings, 1 reply; 12+ messages in thread
From: John W. Linville @ 2007-08-15  0:40 UTC (permalink / raw)
  To: Adrian Bunk
  Cc: Michael Buesch, Johannes Berg, Andrew Morton, Linux Netdev List

On Mon, Aug 13, 2007 at 12:44:02AM +0200, Adrian Bunk wrote:
> On Sun, Aug 12, 2007 at 02:00:26PM +0200, Michael Buesch wrote:
> > Ok, I'll give it a try, with small modifications.
> 
> Thanks.
> 
> > On Sunday 12 August 2007, Adrian Bunk wrote:
> > > Additional changes in this patch:
> > > - small help text changes
> > > - B44_PCI is no longer usr visible (automatically enabled when possible)
> > 
> > I think we want that to be selectable, as it's not needed
> > on some embedded devices. And we need to save memory there.
> >...
> 
> Makes sense, but then:
> 
> config B44_PCI
> 	bool "Broadcom 440x PCI device support" if EMBEDDED
> 	...
> 	default y
> 	...
> 
> I don't care about how many options we present if CONFIG_EMBEDDED=y, but 
> for the normal CONFIG_EMBEDDED=n case we should not bother the user with 
> this option.

Was all this resolved?  Was there another patch?  If so, I missed it...

John
-- 
John W. Linville
linville@tuxdriver.com

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [RFC: -mm patch] improve the SSB dependencies
  2007-08-15  0:40                   ` John W. Linville
@ 2007-08-15 12:47                     ` Michael Buesch
  0 siblings, 0 replies; 12+ messages in thread
From: Michael Buesch @ 2007-08-15 12:47 UTC (permalink / raw)
  To: John W. Linville
  Cc: Adrian Bunk, Johannes Berg, Andrew Morton, Linux Netdev List

On Wednesday 15 August 2007 02:40:35 John W. Linville wrote:
> On Mon, Aug 13, 2007 at 12:44:02AM +0200, Adrian Bunk wrote:
> > On Sun, Aug 12, 2007 at 02:00:26PM +0200, Michael Buesch wrote:
> > > Ok, I'll give it a try, with small modifications.
> > 
> > Thanks.
> > 
> > > On Sunday 12 August 2007, Adrian Bunk wrote:
> > > > Additional changes in this patch:
> > > > - small help text changes
> > > > - B44_PCI is no longer usr visible (automatically enabled when possible)
> > > 
> > > I think we want that to be selectable, as it's not needed
> > > on some embedded devices. And we need to save memory there.
> > >...
> > 
> > Makes sense, but then:
> > 
> > config B44_PCI
> > 	bool "Broadcom 440x PCI device support" if EMBEDDED
> > 	...
> > 	default y
> > 	...
> > 
> > I don't care about how many options we present if CONFIG_EMBEDDED=y, but 
> > for the normal CONFIG_EMBEDDED=n case we should not bother the user with 
> > this option.
> 
> Was all this resolved?  Was there another patch?  If so, I missed it...

I am going to send one, soon.

-- 
Greetings Michael.

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2007-08-15 12:48 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-11  0:08 [PATCH] b44-ssb: Fix the SSB dependency hell Michael Buesch
2007-08-11  0:43 ` Adrian Bunk
2007-08-11  0:57   ` Johannes Berg
2007-08-11  1:41     ` Adrian Bunk
2007-08-11  9:36       ` Michael Buesch
2007-08-11 14:30         ` Adrian Bunk
2007-08-11 14:42           ` Michael Buesch
2007-08-11 23:08             ` [RFC: -mm patch] improve the SSB dependencies Adrian Bunk
2007-08-12 12:00               ` Michael Buesch
2007-08-12 22:44                 ` Adrian Bunk
2007-08-15  0:40                   ` John W. Linville
2007-08-15 12:47                     ` Michael Buesch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).