diff options
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c index c4da05817443..2a1e5ae0c402 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c | |||
@@ -1181,27 +1181,29 @@ exit: | |||
1181 | } | 1181 | } |
1182 | #endif /* DEBUG */ | 1182 | #endif /* DEBUG */ |
1183 | 1183 | ||
1184 | static int __init brcmfmac_init(void) | 1184 | static void brcmf_driver_init(struct work_struct *work) |
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 |
1192 | } | ||
1193 | static DECLARE_WORK(brcmf_driver_work, brcmf_driver_init); | ||
1198 | 1194 | ||
1199 | fail: | 1195 | static int __init brcmfmac_module_init(void) |
1200 | return ret; | 1196 | { |
1197 | if (!schedule_work(&brcmf_driver_work)) | ||
1198 | return -EBUSY; | ||
1199 | |||
1200 | return 0; | ||
1201 | } | 1201 | } |
1202 | 1202 | ||
1203 | static void __exit brcmfmac_exit(void) | 1203 | static void __exit brcmfmac_module_exit(void) |
1204 | { | 1204 | { |
1205 | cancel_work_sync(&brcmf_driver_work); | ||
1206 | |||
1205 | #ifdef CONFIG_BRCMFMAC_SDIO | 1207 | #ifdef CONFIG_BRCMFMAC_SDIO |
1206 | brcmf_sdio_exit(); | 1208 | brcmf_sdio_exit(); |
1207 | #endif | 1209 | #endif |
@@ -1210,5 +1212,5 @@ static void __exit brcmfmac_exit(void) | |||
1210 | #endif | 1212 | #endif |
1211 | } | 1213 | } |
1212 | 1214 | ||
1213 | module_init(brcmfmac_init); | 1215 | module_init(brcmfmac_module_init); |
1214 | module_exit(brcmfmac_exit); | 1216 | module_exit(brcmfmac_module_exit); |