drivers/net: Add module.h to drivers who were implicitly using it
[deliverable/linux.git] / drivers / net / wireless / rtlwifi / rtl8192ce / sw.c
index b7ecb9e44aa93de421dc4ba6e839c3c909a6908b..f2aa33dc4d7806d89c80ac5ac3471e753c626173 100644 (file)
@@ -28,6 +28,7 @@
  *****************************************************************************/
 
 #include <linux/vmalloc.h>
+#include <linux/module.h>
 
 #include "../wifi.h"
 #include "../core.h"
@@ -92,6 +93,8 @@ int rtl92c_init_sw_vars(struct ieee80211_hw *hw)
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
        const struct firmware *firmware;
+       struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
+       char *fw_name = NULL;
 
        rtl8192ce_bt_reg_init(hw);
 
@@ -129,6 +132,8 @@ int rtl92c_init_sw_vars(struct ieee80211_hw *hw)
 
        rtlpci->irq_mask[1] = (u32) (IMR_CPWM | IMR_C2HCMD | 0);
 
+       /* for debug level */
+       rtlpriv->dbg.global_debuglevel = rtlpriv->cfg->mod_params->debug;
        /* for LPS & IPS */
        rtlpriv->psc.inactiveps = rtlpriv->cfg->mod_params->inactiveps;
        rtlpriv->psc.swctrl_lps = rtlpriv->cfg->mod_params->swctrl_lps;
@@ -159,8 +164,14 @@ int rtl92c_init_sw_vars(struct ieee80211_hw *hw)
        }
 
        /* request fw */
-       err = request_firmware(&firmware, rtlpriv->cfg->fw_name,
-                       rtlpriv->io.dev);
+       if (IS_VENDOR_UMC_A_CUT(rtlhal->version) &&
+           !IS_92C_SERIAL(rtlhal->version))
+               fw_name = "rtlwifi/rtl8192cfwU.bin";
+       else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version))
+               fw_name = "rtlwifi/rtl8192cfwU_B.bin";
+       else
+               fw_name = rtlpriv->cfg->fw_name;
+       err = request_firmware(&firmware, fw_name, rtlpriv->io.dev);
        if (err) {
                RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
                         ("Failed to request firmware!\n"));
@@ -245,6 +256,7 @@ static struct rtl_mod_params rtl92ce_mod_params = {
        .inactiveps = true,
        .swctrl_lps = false,
        .fwctrl_lps = true,
+       .debug = DBG_EMERG,
 };
 
 static struct rtl_hal_cfg rtl92ce_hal_cfg = {
@@ -355,8 +367,11 @@ MODULE_AUTHOR("Larry Finger        <Larry.Finger@lwfinger.net>");
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Realtek 8192C/8188C 802.11n PCI wireless");
 MODULE_FIRMWARE("rtlwifi/rtl8192cfw.bin");
+MODULE_FIRMWARE("rtlwifi/rtl8192cfwU.bin");
+MODULE_FIRMWARE("rtlwifi/rtl8192cfwU_B.bin");
 
 module_param_named(swenc, rtl92ce_mod_params.sw_crypto, bool, 0444);
+module_param_named(debug, rtl92ce_mod_params.debug, int, 0444);
 module_param_named(ips, rtl92ce_mod_params.inactiveps, bool, 0444);
 module_param_named(swlps, rtl92ce_mod_params.swctrl_lps, bool, 0444);
 module_param_named(fwlps, rtl92ce_mod_params.fwctrl_lps, bool, 0444);
@@ -364,18 +379,23 @@ MODULE_PARM_DESC(swenc, "Set to 1 for software crypto (default 0)\n");
 MODULE_PARM_DESC(ips, "Set to 0 to not use link power save (default 1)\n");
 MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n");
 MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
+MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
+
+static const struct dev_pm_ops rtlwifi_pm_ops = {
+       .suspend = rtl_pci_suspend,
+       .resume = rtl_pci_resume,
+       .freeze = rtl_pci_suspend,
+       .thaw = rtl_pci_resume,
+       .poweroff = rtl_pci_suspend,
+       .restore = rtl_pci_resume,
+};
 
 static struct pci_driver rtl92ce_driver = {
        .name = KBUILD_MODNAME,
        .id_table = rtl92ce_pci_ids,
        .probe = rtl_pci_probe,
        .remove = rtl_pci_disconnect,
-
-#ifdef CONFIG_PM
-       .suspend = rtl_pci_suspend,
-       .resume = rtl_pci_resume,
-#endif
-
+       .driver.pm = &rtlwifi_pm_ops,
 };
 
 static int __init rtl92ce_module_init(void)
This page took 0.038501 seconds and 5 git commands to generate.