2009-01-03 02:50:55

by Jan Engelhardt

[permalink] [raw]
Subject: b43 depends on lots of modules

Hi,

I noticed that the b43 module has a lot of dependencies, among:

depends: pcmcia,mac80211,ssb,input-polldev,pcmcia_core,led-class,rfkill,rng-core,firmware_class

Why does it depend on PCMCIA when I hear that b43 devices are also
available in PCI variants? Similarly, is SSB needed on x86en which
usually don't have such?


2009-01-03 03:03:37

by Larry Finger

[permalink] [raw]
Subject: Re: b43 depends on lots of modules

Jan Engelhardt wrote:
> Hi,
>
> I noticed that the b43 module has a lot of dependencies, among:
>
> depends: pcmcia,mac80211,ssb,input-polldev,pcmcia_core,led-class,rfkill,rng-core,firmware_class
>
> Why does it depend on PCMCIA when I hear that b43 devices are also
> available in PCI variants? Similarly, is SSB needed on x86en which
> usually don't have such?

B43 only depends on PCMCIA if that option is selected in the
configuration. Mine doesn't, but most distros will. Ssb is the PCI
driver for b43. If you have a PCI device, then you need it. Ssb was
split out because it is shared among b43, b43legacy and b44.

Larry

2009-01-03 11:13:10

by Michael Büsch

[permalink] [raw]
Subject: Re: b43 depends on lots of modules

On Saturday 03 January 2009 05:20:05 Larry Finger wrote:
> Jan Engelhardt wrote:
> >
> > It's because the Kconfig description says SSB is for embedded systems,
> > come thinking WRT54, so I wondered what exactly requires SSB.
> > Is it some bus within the wireless chip itself?
>
> That isn't quite what Kconfig says, which is
>
> config SSB
> tristate "Sonics Silicon Backplane support"
> depends on SSB_POSSIBLE
> help
> 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.
> It will be auto-selected if needed in other
> environments.
>
> The module will be called ssb.
>
> If unsure, say N.
>
>
> The text says that it will be auto-selected if needed for other
> environments, and it will be for PCI-based BCM43XX devices.
>
> Most, if not all, Broadcom devices consist of several cores of
> different types that are interconnected by a Sonics Silicon Backplane
> (ssb). On a BCM43XX device, two of these will be an IEEE 802.11 core
> plus at least one bus interface. For example, in the BCM4312 now in my
> machine I get
>
> ssb: Core 0 found: ChipCommon (cc 0x800, rev 0x16, vendor 0x4243)
> ssb: Core 1 found: IEEE 802.11 (cc 0x812, rev 0x0F, vendor 0x4243)
> ssb: Core 2 found: PCMCIA (cc 0x80D, rev 0x0A, vendor 0x4243)
> ssb: Core 3 found: PCI-E (cc 0x820, rev 0x09, vendor 0x4243)
>
> As my device does not have a PCMCIA interface, that core is presumably
> not attached, but the other 3 are active.
>
> Before b43 was developed, all communications between the 802.11 core
> and the PCI bus were handled by bcm43xx; however, that scheme meant
> that code had to be duplicated for 3 different drivers. By splitting
> out that part of the code, b43, b43legacy and b44 can share
> considerable code. That is the module named ssb.

It also meant that bcm43xx wouldn't run on embedded systems, where the
SSB bus is exposed to the other parts of the system.
On a PCI card the SSB bus is inside of the wireless chip only.
On embedded the SSB bus is used as the main system bus.
That's the reason we split it out.

So b43 requires SSB, because b43 is a SSB-device driver. Not a PCI-device driver.
So if you look into the code, you won't find a PCI-id-table, for example.

So yeah, all these dependencies are just normal for a configuration that
enables all options. You can reduce the deps by disabling PCMCMA, LEDS
and/or RFKILL, but I don't see why anybody would really want that anyway.

--
Greetings, Michael.

2009-01-03 03:20:32

by Jan Engelhardt

[permalink] [raw]
Subject: Re: b43 depends on lots of modules


On Saturday 2009-01-03 04:03, Larry Finger wrote:

>Jan Engelhardt wrote:
>> Hi,
>>
>> I noticed that the b43 module has a lot of dependencies, among:
>>
>> depends: pcmcia,mac80211,ssb,input-polldev,pcmcia_core,led-class,rfkill,rng-core,firmware_class
>>
>> Why does it depend on PCMCIA when I hear that b43 devices are also
>> available in PCI variants? Similarly, is SSB needed on x86en which
>> usually don't have such?
>
>B43 only depends on PCMCIA if that option is selected in the
>configuration. Mine doesn't, but most distros will. Ssb is the PCI
>driver for b43. If you have a PCI device, then you need it. Ssb was
>split out because it is shared among b43, b43legacy and b44.

It's because the Kconfig description says SSB is for embedded systems,
come thinking WRT54, so I wondered what exactly requires SSB.
Is it some bus within the wireless chip itself?


2009-01-03 04:20:17

by Larry Finger

[permalink] [raw]
Subject: Re: b43 depends on lots of modules

Jan Engelhardt wrote:
>
> It's because the Kconfig description says SSB is for embedded systems,
> come thinking WRT54, so I wondered what exactly requires SSB.
> Is it some bus within the wireless chip itself?

That isn't quite what Kconfig says, which is

config SSB
tristate "Sonics Silicon Backplane support"
depends on SSB_POSSIBLE
help
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.
It will be auto-selected if needed in other
environments.

The module will be called ssb.

If unsure, say N.


The text says that it will be auto-selected if needed for other
environments, and it will be for PCI-based BCM43XX devices.

Most, if not all, Broadcom devices consist of several cores of
different types that are interconnected by a Sonics Silicon Backplane
(ssb). On a BCM43XX device, two of these will be an IEEE 802.11 core
plus at least one bus interface. For example, in the BCM4312 now in my
machine I get

ssb: Core 0 found: ChipCommon (cc 0x800, rev 0x16, vendor 0x4243)
ssb: Core 1 found: IEEE 802.11 (cc 0x812, rev 0x0F, vendor 0x4243)
ssb: Core 2 found: PCMCIA (cc 0x80D, rev 0x0A, vendor 0x4243)
ssb: Core 3 found: PCI-E (cc 0x820, rev 0x09, vendor 0x4243)

As my device does not have a PCMCIA interface, that core is presumably
not attached, but the other 3 are active.

Before b43 was developed, all communications between the 802.11 core
and the PCI bus were handled by bcm43xx; however, that scheme meant
that code had to be duplicated for 3 different drivers. By splitting
out that part of the code, b43, b43legacy and b44 can share
considerable code. That is the module named ssb.

Larry