diff -urN ssb/Kconfig ssb.patch/Kconfig
--- ssb/Kconfig	2007-10-14 10:56:06.000000000 +0400
+++ ssb.patch/Kconfig	2007-10-19 14:12:48.000000000 +0400
@@ -80,6 +80,13 @@
 	depends on SSB_PCIHOST
 	default y
 
+config SSB_B43
+	tristate "SSB B43 Bridge"
+	depends on SSB_PCIHOST
+	default y
+	help
+	    SSB B43 Bridge
+
 config SSB_DRIVER_PCICORE
 	bool "SSB PCI core driver"
 	depends on SSB_DRIVER_PCICORE_POSSIBLE
diff -urN ssb/Makefile ssb.patch/Makefile
--- ssb/Makefile	2007-10-14 10:56:06.000000000 +0400
+++ ssb.patch/Makefile	2007-10-19 06:57:28.000000000 +0400
@@ -13,6 +13,6 @@
 
 # b43 pci-ssb-bridge driver
 # Not strictly a part of SSB, but kept here for convenience
-ssb-$(CONFIG_SSB_PCIHOST)		+= b43_pci_bridge.o
+obj-$(CONFIG_SSB_B43)			+= b43_pci_bridge.o
 
 obj-$(CONFIG_SSB)			+= ssb.o
diff -urN ssb/b43_pci_bridge.c ssb.patch/b43_pci_bridge.c
--- ssb/b43_pci_bridge.c	2007-10-14 10:56:06.000000000 +0400
+++ ssb.patch/b43_pci_bridge.c	2007-10-19 14:13:23.000000000 +0400
@@ -12,9 +12,10 @@
 
 #include <linux/pci.h>
 #include <linux/ssb/ssb.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
 
-#include "ssb_private.h"
-
+#define DRV_MODULE_NAME "b43bridge"
 
 static const struct pci_device_id b43_pci_bridge_tbl[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4301) },
@@ -46,3 +47,6 @@
 {
 	ssb_pcihost_unregister(&b43_pci_bridge_driver);
 }
+
+module_init(b43_pci_ssb_bridge_init);
+module_exit(b43_pci_ssb_bridge_exit);
diff -urN ssb/main.c ssb.patch/main.c
--- ssb/main.c	2007-10-14 10:56:06.000000000 +0400
+++ ssb.patch/main.c	2007-10-19 14:14:07.000000000 +0400
@@ -1142,21 +1142,12 @@
 	if (err)
 		bus_unregister(&ssb_bustype);
 
-	err = b43_pci_ssb_bridge_init();
-	if (err) {
-		ssb_printk(KERN_ERR "Broadcom 43xx PCI-SSB-bridge "
-			   "initialization failed");
-		/* don't fail SSB init because of this */
-		err = 0;
-	}
-
 	return err;
 }
 subsys_initcall(ssb_modinit);
 
 static void __exit ssb_modexit(void)
 {
-	b43_pci_ssb_bridge_exit();
 	bus_unregister(&ssb_bustype);
 }
 module_exit(ssb_modexit)
diff -urN ssb/ssb_private.h ssb.patch/ssb_private.h
--- ssb/ssb_private.h	2007-10-14 10:56:06.000000000 +0400
+++ ssb.patch/ssb_private.h	2007-10-19 14:14:31.000000000 +0400
@@ -119,18 +119,4 @@
 extern int ssb_devices_thaw(struct ssb_bus *bus);
 extern struct ssb_bus *ssb_pci_dev_to_bus(struct pci_dev *pdev);
 
-/* b43_pci_bridge.c */
-#ifdef CONFIG_SSB_PCIHOST
-extern int __init b43_pci_ssb_bridge_init(void);
-extern void __exit b43_pci_ssb_bridge_exit(void);
-#else /* CONFIG_SSB_PCIHOST */
-static inline int b43_pci_ssb_bridge_init(void)
-{
-	return 0;
-}
-static inline void b43_pci_ssb_bridge_exit(void)
-{
-}
-#endif /* CONFIG_SSB_PCIHOST */
-
 #endif /* LINUX_SSB_PRIVATE_H_ */
