rtlwifi: rtl8188ee: Enable recognition of RTL8188EE
authorLarry Finger <Larry.Finger@lwfinger.net>
Mon, 25 Mar 2013 03:06:56 +0000 (22:06 -0500)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 1 Apr 2013 20:20:54 +0000 (16:20 -0400)
These patches modify the common probe routine to recognize the RTL8188EE
chip and implement asynchronous firmware reading in the callback routine
to initialize the sw variables.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: jcheung@suse.com
Cc: machen@suse.com
Cc: mmarek@suse.cz
Cc: zhiyuan_yang@realsil.com.cn
Cc: page_he@realsil.com.cn
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rtlwifi/efuse.c
drivers/net/wireless/rtlwifi/pci.c
drivers/net/wireless/rtlwifi/pci.h
drivers/net/wireless/rtlwifi/wifi.h

index 41a03b12463b579ba7ccdccff62df44dc4ff7e4b..9e3894178e7773b3d6aca8a4cca70fc518fd6a96 100644 (file)
@@ -1124,8 +1124,11 @@ static void efuse_power_switch(struct ieee80211_hw *hw, u8 write, u8 pwrstate)
        u8 tempval;
        u16 tmpV16;
 
-       if (pwrstate && (rtlhal->hw_type !=
-               HARDWARE_TYPE_RTL8192SE)) {
+       if (pwrstate && (rtlhal->hw_type != HARDWARE_TYPE_RTL8192SE)) {
+               if (rtlhal->hw_type == HARDWARE_TYPE_RTL8188EE)
+                       rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_ACCESS],
+                                      0x69);
+
                tmpV16 = rtl_read_word(rtlpriv,
                                       rtlpriv->cfg->maps[SYS_ISO_CTRL]);
                if (!(tmpV16 & rtlpriv->cfg->maps[EFUSE_PWC_EV12V])) {
@@ -1175,6 +1178,10 @@ static void efuse_power_switch(struct ieee80211_hw *hw, u8 write, u8 pwrstate)
                }
 
        } else {
+               if (rtlhal->hw_type == HARDWARE_TYPE_RTL8188EE)
+                       rtl_write_byte(rtlpriv,
+                                      rtlpriv->cfg->maps[EFUSE_ACCESS], 0);
+
                if (write) {
                        tempval = rtl_read_byte(rtlpriv,
                                                rtlpriv->cfg->maps[EFUSE_TEST] +
index eab449222ce01fe9e2e1e104782201923a846f66..999ffc12578be27fb9b07259e69c723eb0efdbd3 100644 (file)
@@ -1750,6 +1750,10 @@ static bool _rtl_pci_find_adapter(struct pci_dev *pdev,
                RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG,
                         "8192D PCI-E is found - vid/did=%x/%x\n",
                         venderid, deviceid);
+       } else if (deviceid == RTL_PCI_8188EE_DID) {
+               rtlhal->hw_type = HARDWARE_TYPE_RTL8188EE;
+               RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD,
+                        "Find adapter, Hardware type is 8188EE\n");
        } else {
                RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING,
                         "Err: Unknown device - vid/did=%x/%x\n",
index bd368d9c67fc83035bbe23bf48a58d0f667c88b7..d3262ec45d230f0f8abd1744501a004006c48198 100644 (file)
@@ -94,6 +94,7 @@
 #define RTL_PCI_8192CU_DID     0x8191  /*8192ce */
 #define RTL_PCI_8192DE_DID     0x8193  /*8192de */
 #define RTL_PCI_8192DE_DID2    0x002B  /*92DE*/
+#define RTL_PCI_8188EE_DID     0x8179  /*8188ee*/
 
 /*8192 support 16 pages of IO registers*/
 #define RTL_MEM_MAPPED_IO_RANGE_8190PCI                0x1000
index c796b01bfcad51fc1c9ed37dbcc4442e356fd82b..44328baa63898750ac957a6275de09ed7290f0f7 100644 (file)
@@ -162,6 +162,7 @@ enum hardware_type {
        HARDWARE_TYPE_RTL8192DU,
        HARDWARE_TYPE_RTL8723AE,
        HARDWARE_TYPE_RTL8723U,
+       HARDWARE_TYPE_RTL8188EE,
 
        /* keep it last */
        HARDWARE_TYPE_NUM