Re: Build failures with the brcmfmac driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/23/2010 04:35 PM, Greg KH wrote:
On Thu, Sep 23, 2010 at 04:18:47PM -0700, Greg KH wrote:
Are you all crazy to enable "treat warnings like errors"?

Yes. :-)

Ok, I've removed that, and the other -W options from the makefiles and
now at least it builds the .o files.

But now I've duplicated the big issue with the way the code is
structured:
	ERROR: "si_pmu_regcontrol" [drivers/staging/brcm80211/brcm80211.ko] undefined!
	ERROR: "bcmsdh_reg_read" [drivers/staging/brcm80211/brcm80211.ko] undefined!
	ERROR: "sb_iscoreup" [drivers/staging/brcm80211/brcm80211.ko] undefined!
	ERROR: "bcmsdh_intr_enable" [drivers/staging/brcm80211/brcm80211.ko] undefined!
	ERROR: "bcmsdh_cfg_write" [drivers/staging/brcm80211/brcm80211.ko] undefined!
	ERROR: "si_pci_down" [drivers/staging/brcm80211/brcm80211.ko] undefined!
	ERROR: "si_pci_fixcfg" [drivers/staging/brcm80211/brcm80211.ko] undefined!

and so on.

It turns out, you are linking .o files that are built with different -D
options, into two different .ko objects right?

Right.

Bad things happen as the code isn't really set up to do this properly.

Absolutely.

So, for now, you should change the Kconfig file to only allow the
selection of one of the kernel drivers at once.  Not the "real" fix, but
it should be good enough for the moment.

I was just working on that. See below for rough cut at new Kconfig. One issue I'm seeing: make oldconfig just blows through the choices. Is there any way to get it to stop for user input? Or is the choice only available when doing make menuconfig? Other approaches to make the two exclusive?

Unless you have a better idea?

Longer term, cleanout utils and anything that's left becomes a separate module that's only compiled once? Other suggestions?

Oh, ideally we will just get rid of the #define mess, but as you have 2
drivers depending on two different set of options, it's not going to be
a simple task unwinding it...

Nohee is working on cleaning out lots of the #ifdefs, and removing the duplicate files.

- Henry


diff --git a/drivers/staging/brcm80211/Kconfig b/drivers/staging/brcm80211/Kconfig
index ee321bd..57d2d1b 100644
--- a/drivers/staging/brcm80211/Kconfig
+++ b/drivers/staging/brcm80211/Kconfig
@@ -1,15 +1,33 @@
 menuconfig BRCM80211
-       tristate "Broadcom 802.11 WLAN driver for bcm43xx chips"
-       depends on PCI && WLAN
-       select WIRELESS_EXT
-       select WEXT_PRIV
-       default N
+       tristate "Broadcom IEEE802.11n WLAN drivers"
+       depends on WLAN
+
+choice
+       prompt "Broadcom IEEE802.11n driver style"
+       depends on BRCM80211
        help
-         If built as a module, it will be called brcm80211.ko.
+       Select the appropriate driver style from the list below.

 config BRCM80211_PCI
-       bool "Broadcom 802.11 WLAN NIC driver"
-       depends on BRCM80211
-       default y
+       bool "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver"
+       depends on PCI
+       depends on BRCM80211 && MAC80211
+       select FW_LOADER
+       ---help---
+ This module adds support for PCIe wireless adapters based on Broadcom + IEEE802.11n SoftMAC chipsets. If you choose to build a module, it'll
+         be called brcm80211.ko.

-source "drivers/staging/brcm80211/brcmfmac/Kconfig"
+config BRCMFMAC
+       bool "Broadcom IEEE802.11n embedded FullMAC WLAN driver"
+       depends on MMC
+       depends on BRCM80211 && CFG80211
+       select FW_LOADER
+       select WIRELESS_EXT
+       select WEXT_PRIV
+       ---help---
+         This module adds support for embedded wireless adapters based on
+ Broadcom IEEE802.11n FullMAC chipsets. This driver uses the kernel's
+         wireless extensions subsystem.  If you choose to build a module,
+         it'll be called brcmfmac.ko.
+endchoice

_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux