aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArend van Spriel <arend@broadcom.com>2012-03-02 16:55:48 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-03-05 15:53:57 -0500
commit549040abbc03e87bdee2964fea5e4c827471d4df (patch)
treebd05d9ba08355151637d79e180d95fc260fcf95f
parent1d9c1796bc448d76429e0937ef69e4f29cd1adad (diff)
brcm80211: fmac: initialize host interface drivers regardless result
The module init function of brcmfmac calls init functions for SDIO and USB doing driver registration. This patch removes terminating the module init when a driver registration for one host interface fails. Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c4
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h4
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c14
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/usb.c4
4 files changed, 8 insertions, 18 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
index 83ca3cc2cccb..4688904908ec 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
@@ -604,7 +604,7 @@ void brcmf_sdio_exit(void)
604 sdio_unregister_driver(&brcmf_sdmmc_driver); 604 sdio_unregister_driver(&brcmf_sdmmc_driver);
605} 605}
606 606
607int brcmf_sdio_init(void) 607void brcmf_sdio_init(void)
608{ 608{
609 int ret; 609 int ret;
610 610
@@ -614,6 +614,4 @@ int brcmf_sdio_init(void)
614 614
615 if (ret) 615 if (ret)
616 brcmf_dbg(ERROR, "sdio_register_driver failed: %d\n", ret); 616 brcmf_dbg(ERROR, "sdio_register_driver failed: %d\n", ret);
617
618 return ret;
619} 617}
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h b/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
index b7671b30692f..366916494be4 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_bus.h
@@ -108,11 +108,11 @@ extern int brcmf_add_if(struct device *dev, int ifidx,
108 108
109#ifdef CONFIG_BRCMFMAC_SDIO 109#ifdef CONFIG_BRCMFMAC_SDIO
110extern void brcmf_sdio_exit(void); 110extern void brcmf_sdio_exit(void);
111extern int brcmf_sdio_init(void); 111extern void brcmf_sdio_init(void);
112#endif 112#endif
113#ifdef CONFIG_BRCMFMAC_USB 113#ifdef CONFIG_BRCMFMAC_USB
114extern void brcmf_usb_exit(void); 114extern void brcmf_usb_exit(void);
115extern int brcmf_usb_init(void); 115extern void brcmf_usb_init(void);
116#endif 116#endif
117 117
118#endif /* _BRCMF_BUS_H_ */ 118#endif /* _BRCMF_BUS_H_ */
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
index c4da05817443..e7345569e9de 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
@@ -1183,21 +1183,13 @@ exit:
1183 1183
1184static int __init brcmfmac_init(void) 1184static int __init brcmfmac_init(void)
1185{ 1185{
1186 int ret = 0;
1187
1188#ifdef CONFIG_BRCMFMAC_SDIO 1186#ifdef CONFIG_BRCMFMAC_SDIO
1189 ret = brcmf_sdio_init(); 1187 brcmf_sdio_init();
1190 if (ret)
1191 goto fail;
1192#endif 1188#endif
1193#ifdef CONFIG_BRCMFMAC_USB 1189#ifdef CONFIG_BRCMFMAC_USB
1194 ret = brcmf_usb_init(); 1190 brcmf_usb_init();
1195 if (ret)
1196 goto fail;
1197#endif 1191#endif
1198 1192 return 0;
1199fail:
1200 return ret;
1201} 1193}
1202 1194
1203static void __exit brcmfmac_exit(void) 1195static void __exit brcmfmac_exit(void)
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/brcm80211/brcmfmac/usb.c
index a2a0c45201ac..82364223e817 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/usb.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/usb.c
@@ -1615,7 +1615,7 @@ void brcmf_usb_exit(void)
1615 g_image.len = 0; 1615 g_image.len = 0;
1616} 1616}
1617 1617
1618int brcmf_usb_init(void) 1618void brcmf_usb_init(void)
1619{ 1619{
1620 return usb_register(&brcmf_usbdrvr); 1620 usb_register(&brcmf_usbdrvr);
1621} 1621}