+ if (ccb->mii)
+ iounmap(ccb->mii);
+}
+--- a/include/linux/bcma/bcma_soc.h
++++ b/include/linux/bcma/bcma_soc.h
+@@ -10,6 +10,7 @@ struct bcma_soc {
+ };
+
+ int __init bcma_host_soc_register(struct bcma_soc *soc);
++int __init bcma_host_soc_init(struct bcma_soc *soc);
+
+ int bcma_bus_register(struct bcma_bus *bus);
+
+--- a/arch/mips/bcm47xx/setup.c
++++ b/arch/mips/bcm47xx/setup.c
+@@ -194,6 +194,10 @@ static void __init bcm47xx_register_bcma
+
+ err = bcma_host_soc_register(&bcm47xx_bus.bcma);
+ if (err)
++ panic("Failed to register BCMA bus (err %d)", err);
++
++ err = bcma_host_soc_init(&bcm47xx_bus.bcma);
++ if (err)
+ panic("Failed to initialize BCMA bus (err %d)", err);
+
+ bcm47xx_fill_bcma_boardinfo(&bcm47xx_bus.bcma.bus.boardinfo, NULL);
+void bcma_chipco_b_mii_write(struct bcma_drv_cc_b *ccb, u32 offset, u32 value);
+
#endif /* LINUX_BCMA_DRIVER_CC_H_ */
+--- a/arch/mips/bcm47xx/setup.c
++++ b/arch/mips/bcm47xx/setup.c
+@@ -202,6 +202,10 @@ static void __init bcm47xx_register_bcma
+
+ err = bcma_host_soc_register(&bcm47xx_bus.bcma);
+ if (err)
++ panic("Failed to register BCMA bus (err %d)", err);
++
++ err = bcma_host_soc_init(&bcm47xx_bus.bcma);
++ if (err)
+ panic("Failed to initialize BCMA bus (err %d)", err);
+
+ bcm47xx_fill_bcma_boardinfo(&bcm47xx_bus.bcma.bus.boardinfo, NULL);
+--- a/include/linux/bcma/bcma_soc.h
++++ b/include/linux/bcma/bcma_soc.h
+@@ -10,6 +10,7 @@ struct bcma_soc {
+ };
+
+ int __init bcma_host_soc_register(struct bcma_soc *soc);
++int __init bcma_host_soc_init(struct bcma_soc *soc);
+
+ int bcma_bus_register(struct bcma_bus *bus);
+