diff --git a/drivers/staging/brcm80211/brcmfmac/dhd_linux.c b/drivers/staging/brcm80211/brcmfmac/dhd_linux.c index d09706b98aad..386955e30814 100644 --- a/drivers/staging/brcm80211/brcmfmac/dhd_linux.c +++ b/drivers/staging/brcm80211/brcmfmac/dhd_linux.c @@ -262,6 +262,10 @@ char nvram_path[MOD_PARAM_PATHLEN]; module_param_string(firmware_path, firmware_path, MOD_PARAM_PATHLEN, 0); module_param_string(nvram_path, nvram_path, MOD_PARAM_PATHLEN, 0); +/* No firmware required */ +bool dhd_no_fw_req; +module_param(dhd_no_fw_req, bool, 0); + /* Error bits */ module_param(dhd_msg_level, int, 0); @@ -339,10 +343,6 @@ module_param(dhd_idletime, int, 0); uint dhd_poll; module_param(dhd_poll, uint, 0); -/* Use cfg80211 */ -uint dhd_cfg80211 = true; -module_param(dhd_cfg80211, uint, 0); - /* Use interrupts */ uint dhd_intr = true; module_param(dhd_intr, uint, 0); @@ -371,11 +371,6 @@ uint dhd_pktgen_len; module_param(dhd_pktgen_len, uint, 0); #endif -#define FAVORITE_WIFI_CP (!!dhd_cfg80211) -#define IS_CFG80211_FAVORITE() FAVORITE_WIFI_CP -#define DBG_CFG80211_GET() ((dhd_cfg80211 & WL_DBG_MASK) >> 1) -#define NO_FW_REQ() (dhd_cfg80211 & 0x80) - /* Version string to report */ #ifdef DHD_DEBUG #define DHD_COMPILED "\nCompiled in " SRCBASE @@ -398,32 +393,6 @@ static int dhd_toe_set(dhd_info_t *dhd, int idx, u32 toe_ol); static int dhd_wl_host_event(dhd_info_t *dhd, int *ifidx, void *pktdata, wl_event_msg_t *event_ptr, void **data_ptr); -#if defined(CONFIG_PM_SLEEP) -static int dhd_sleep_pm_callback(struct notifier_block *nfb, - unsigned long action, void *ignored) -{ - switch (action) { - case PM_HIBERNATION_PREPARE: - case PM_SUSPEND_PREPARE: - atomic_set(&dhd_mmc_suspend, true); - return NOTIFY_OK; - case PM_POST_HIBERNATION: - case PM_POST_SUSPEND: - atomic_set(&dhd_mmc_suspend, false); - return NOTIFY_OK; - } - return 0; -} - -static struct notifier_block dhd_sleep_pm_notifier = { - .notifier_call = dhd_sleep_pm_callback, - .priority = 0 -}; - -extern int register_pm_notifier(struct notifier_block *nb); -extern int unregister_pm_notifier(struct notifier_block *nb); -#endif /* defined(CONFIG_PM_SLEEP) */ - /* && defined(DHD_GPL) */ static void dhd_set_packet_filter(int value, dhd_pub_t *dhd) { #ifdef PKT_FILTER_SUPPORT @@ -1740,9 +1709,7 @@ static int dhd_stop(struct net_device *net) dhd_info_t *dhd = *(dhd_info_t **) netdev_priv(net); DHD_TRACE(("%s: Enter\n", __func__)); - if (IS_CFG80211_FAVORITE()) { - wl_cfg80211_down(); - } + wl_cfg80211_down(); if (dhd->pub.up == 0) return 0; @@ -1792,12 +1759,10 @@ static int dhd_open(struct net_device *net) /* Allow transmit calls */ netif_start_queue(net); dhd->pub.up = 1; - if (IS_CFG80211_FAVORITE()) { - if (unlikely(wl_cfg80211_up())) { - DHD_ERROR(("%s: failed to bring up cfg80211\n", - __func__)); - return -1; - } + if (unlikely(wl_cfg80211_up())) { + DHD_ERROR(("%s: failed to bring up cfg80211\n", + __func__)); + return -1; } return ret; @@ -1937,15 +1902,13 @@ dhd_pub_t *dhd_attach(struct dhd_bus *bus, uint bus_hdrlen) #endif /* defined(CONFIG_WIRELESS_EXT) */ /* Attach and link in the cfg80211 */ - if (IS_CFG80211_FAVORITE()) { - if (unlikely(wl_cfg80211_attach(net, &dhd->pub))) { - DHD_ERROR(("wl_cfg80211_attach failed\n")); - goto fail; - } - if (!NO_FW_REQ()) { - strcpy(fw_path, wl_cfg80211_get_fwname()); - strcpy(nv_path, wl_cfg80211_get_nvramname()); - } + if (unlikely(wl_cfg80211_attach(net, &dhd->pub))) { + DHD_ERROR(("wl_cfg80211_attach failed\n")); + goto fail; + } + if (!dhd_no_fw_req) { + strcpy(fw_path, wl_cfg80211_get_fwname()); + strcpy(nv_path, wl_cfg80211_get_nvramname()); } /* Set up the watchdog timer */ @@ -2011,8 +1974,6 @@ dhd_pub_t *dhd_attach(struct dhd_bus *bus, uint bus_hdrlen) #endif #if defined(CONFIG_PM_SLEEP) atomic_set(&dhd_mmc_suspend, false); - if (!IS_CFG80211_FAVORITE()) - register_pm_notifier(&dhd_sleep_pm_notifier); #endif /* defined(CONFIG_PM_SLEEP) */ /* && defined(DHD_GPL) */ /* Init lock suspend to prevent kernel going to suspend */ @@ -2302,13 +2263,8 @@ void dhd_detach(dhd_pub_t *dhdp) wl_iw_detach(); #endif /* (CONFIG_WIRELESS_EXT) */ - if (IS_CFG80211_FAVORITE()) - wl_cfg80211_detach(); + wl_cfg80211_detach(); -#if defined(CONFIG_PM_SLEEP) - if (!IS_CFG80211_FAVORITE()) - unregister_pm_notifier(&dhd_sleep_pm_notifier); -#endif /* defined(CONFIG_PM_SLEEP) */ /* && defined(DHD_GPL) */ free_netdev(ifp->net); kfree(ifp); @@ -2509,7 +2465,7 @@ void *dhd_os_open_image(char *filename) { struct file *fp; - if (IS_CFG80211_FAVORITE() && !NO_FW_REQ()) + if (!dhd_no_fw_req) return wl_cfg80211_request_fw(filename); fp = filp_open(filename, O_RDONLY, 0); @@ -2530,7 +2486,7 @@ int dhd_os_get_image_block(char *buf, int len, void *image) struct file *fp = (struct file *)image; int rdlen; - if (IS_CFG80211_FAVORITE() && !NO_FW_REQ()) + if (!dhd_no_fw_req) return wl_cfg80211_read_fw(buf, len); if (!image) @@ -2545,7 +2501,7 @@ int dhd_os_get_image_block(char *buf, int len, void *image) void dhd_os_close_image(void *image) { - if (IS_CFG80211_FAVORITE() && !NO_FW_REQ()) + if (!dhd_no_fw_req) return wl_cfg80211_release_fw(); if (image) filp_close((struct file *)image, NULL); @@ -2587,26 +2543,10 @@ dhd_wl_host_event(dhd_info_t *dhd, int *ifidx, void *pktdata, if (bcmerror != 0) return bcmerror; -#if defined(CONFIG_WIRELESS_EXT) - if (!IS_CFG80211_FAVORITE()) { - if ((dhd->iflist[*ifidx] == NULL) - || (dhd->iflist[*ifidx]->net == NULL)) { - DHD_ERROR(("%s Exit null pointer\n", __func__)); - return bcmerror; - } - - if (dhd->iflist[*ifidx]->net) - wl_iw_event(dhd->iflist[*ifidx]->net, event, *data); - } -#endif /* defined(CONFIG_WIRELESS_EXT) */ - - if (IS_CFG80211_FAVORITE()) { - ASSERT(dhd->iflist[*ifidx] != NULL); - ASSERT(dhd->iflist[*ifidx]->net != NULL); - if (dhd->iflist[*ifidx]->net) - wl_cfg80211_event(dhd->iflist[*ifidx]->net, event, - *data); - } + ASSERT(dhd->iflist[*ifidx] != NULL); + ASSERT(dhd->iflist[*ifidx]->net != NULL); + if (dhd->iflist[*ifidx]->net) + wl_cfg80211_event(dhd->iflist[*ifidx]->net, event, *data); return bcmerror; }