OSDN Git Service

rtl8812au: support both RTL8812A and RTL8821A android-x86-8.1-r1
authorChih-Wei Huang <cwhuang@linux.org.tw>
Thu, 20 Dec 2018 07:08:19 +0000 (15:08 +0800)
committerChih-Wei Huang <cwhuang@linux.org.tw>
Thu, 20 Dec 2018 07:08:19 +0000 (15:08 +0800)
Change some build-time checking to runtime detection so both
configurations could coexist.

rtl8812au/Makefile
rtl8812au/core/rtw_mp.c
rtl8812au/core/rtw_recv.c
rtl8812au/hal/hal_btcoex.c
rtl8812au/hal/hal_com.c
rtl8812au/hal/phydm/phydm_debug.c
rtl8812au/hal/phydm/phydm_dynamictxpower.c
rtl8812au/hal/phydm/rtl8812a/halhwimg8812a_fw.h [new file with mode: 0644]
rtl8812au/hal/rtl8812a/hal8812a_fw.c
rtl8812au/hal/rtl8812a/rtl8812a_hal_init.c

index f9cc1f0..b61f198 100644 (file)
@@ -13,9 +13,13 @@ EXTRA_CFLAGS += -Wno-unused-label
 EXTRA_CFLAGS += -Wno-unused-parameter
 EXTRA_CFLAGS += -Wno-unused-function
 EXTRA_CFLAGS += -Wno-unused
-EXTRA_CFLAGS += -Wno-date-time
 #EXTRA_CFLAGS += -Wno-uninitialized
 
+GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc )
+ifeq ($(GCC_VER_49),1)
+EXTRA_CFLAGS += -Wno-date-time # Fix compile error && warning on gcc 4.9 and later
+endif
+
 EXTRA_CFLAGS += -I$(src)/include
 EXTRA_CFLAGS += -I$(src)/hal/phydm
 
@@ -26,7 +30,7 @@ CONFIG_AUTOCFG_CP = n
 ########################## WIFI IC ############################
 CONFIG_MULTIDRV = n
 CONFIG_RTL8188E = n
-CONFIG_RTL8812A = n
+CONFIG_RTL8812A = y
 CONFIG_RTL8821A = y
 CONFIG_RTL8192E = n
 CONFIG_RTL8723B = n
index 63c8f16..184e509 100644 (file)
@@ -977,7 +977,8 @@ s32 mp_start_test(PADAPTER padapter)
        rtl8821c_phy_init_haldm(padapter);
 #endif /* CONFIG_RTL8821C */
 #ifdef CONFIG_RTL8812A
-       rtl8812_InitHalDm(padapter);
+       if (IS_HARDWARE_TYPE_8812(padapter))
+               rtl8812_InitHalDm(padapter);
 #endif /* CONFIG_RTL8812A */
 #ifdef CONFIG_RTL8723B
        rtl8723b_InitHalDm(padapter);
@@ -1070,7 +1071,8 @@ end_of_mp_stop_test:
                _exit_critical_bh(&pmlmepriv->lock, &irqL);
 
 #ifdef CONFIG_RTL8812A
-               rtl8812_InitHalDm(padapter);
+               if (IS_HARDWARE_TYPE_8812(padapter))
+                       rtl8812_InitHalDm(padapter);
 #endif
 #ifdef CONFIG_RTL8723B
                rtl8723b_InitHalDm(padapter);
index 4419078..a462779 100644 (file)
@@ -4297,4 +4297,3 @@ exit:
        thread_exit();
 }
 #endif /* CONFIG_RECV_THREAD_MODE */
-
index c0596b4..dd790b4 100644 (file)
@@ -1891,7 +1891,8 @@ u32 halbtcoutsrc_GetPhydmVersion(void *pBtcContext)
 #endif
 
 #ifdef CONFIG_RTL8821A
-       return RELEASE_VERSION_8821A;
+       if (IS_HARDWARE_TYPE_8821(Adapter))
+               return RELEASE_VERSION_8821A;
 #endif
 
 #ifdef CONFIG_RTL8723B
index 32fe9a1..629eadb 100644 (file)
@@ -11212,4 +11212,3 @@ void rtw_dump_phy_cap(void *sel, _adapter *adapter)
        rtw_dump_phy_cap_by_hal(sel, adapter);
 #endif
 }
-
index 9750e16..38ae83b 100644 (file)
@@ -2782,9 +2782,10 @@ phydm_cmd_parser(
                if (input_idx >= 1) {
 
 #if (RTL8821A_SUPPORT == 1)
-                       phydm_set_ext_switch(p_dm_odm, (u32 *)var1, &used, output, &out_len);
-#else
-                       PHYDM_SNPRINTF((output + used, out_len - used, "Not Support IC"));
+                       if (p_dm_odm->support_ic_type == ODM_RTL8821)
+                               phydm_set_ext_switch(p_dm_odm, (u32 *)var1, &used, output, &out_len);
+                       else
+                               PHYDM_SNPRINTF((output + used, out_len - used, "Not Support IC"));
 #endif
                }
 
index 4cd8dd7..8cac2d4 100644 (file)
@@ -137,6 +137,8 @@ odm_dynamic_tx_power_nic_ce(
        u8                      val;
        u8                      rssi_tmp = p_dm_odm->rssi_min;
 
+       if (!(p_dm_odm->support_ic_type & (ODM_RTL8821)))
+               return;
        if (!(p_dm_odm->support_ability & ODM_BB_DYNAMIC_TXPWR))
                return;
 
diff --git a/rtl8812au/hal/phydm/rtl8812a/halhwimg8812a_fw.h b/rtl8812au/hal/phydm/rtl8812a/halhwimg8812a_fw.h
new file mode 100644 (file)
index 0000000..fb78898
--- /dev/null
@@ -0,0 +1,72 @@
+/******************************************************************************
+*
+* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+*
+* This program is free software; you can redistribute it and/or modify it
+* under the terms of version 2 of the GNU General Public License as
+* published by the Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+* more details.
+*
+* You should have received a copy of the GNU General Public License along with
+* this program; if not, write to the Free Software Foundation, Inc.,
+* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+*
+*
+******************************************************************************/
+
+/*Image2HeaderVersion: 2.16*/
+#if (RTL8812A_SUPPORT == 1)
+#ifndef __INC_MP_FW_HW_IMG_8812A_H
+#define __INC_MP_FW_HW_IMG_8812A_H
+
+
+/******************************************************************************
+*                           FW_AP.TXT
+******************************************************************************/
+
+void
+odm_read_firmware_mp_8812a_fw_ap(
+       struct PHY_DM_STRUCT    *p_dm_odm,
+       u8       *p_firmware,
+       u32       *p_firmware_size
+);
+
+/******************************************************************************
+*                           FW_NIC.TXT
+******************************************************************************/
+
+void
+odm_read_firmware_mp_8812a_fw_nic(
+       struct PHY_DM_STRUCT    *p_dm_odm,
+       u8       *p_firmware,
+       u32       *p_firmware_size
+);
+
+/******************************************************************************
+*                           FW_NIC_BT.TXT
+******************************************************************************/
+
+void
+odm_read_firmware_mp_8812a_fw_nic_bt(
+       struct PHY_DM_STRUCT    *p_dm_odm,
+       u8       *p_firmware,
+       u32       *p_firmware_size
+);
+
+/******************************************************************************
+*                           FW_WoWLAN.TXT
+******************************************************************************/
+
+void
+odm_read_firmware_mp_8812a_fw_wowlan(
+       struct PHY_DM_STRUCT    *p_dm_odm,
+       u8       *p_firmware,
+       u32       *p_firmware_size
+);
+
+#endif
+#endif /* end of HWIMG_SUPPORT*/
index 2ba9bbc..bcb694f 100644 (file)
@@ -14501,4 +14501,3 @@ u32 array_length_mp_8812a_fw_wowlan = 29956;
 #endif /* end of LOAD_FW_HEADER_FROM_DRIVER*/
 
 #endif /* end of HWIMG_SUPPORT*/
-
index 0238c72..f6645a6 100644 (file)
 
 /* #include <drv_types.h> */
 #include <rtl8812a_hal.h>
-#ifdef CONFIG_RTL8812A
 #include "hal8812a_fw.h"
-#else
 #include "hal8821a_fw.h"
-#endif
 /* -------------------------------------------------------------------------
  *
  * LLT R/W/Init function
@@ -546,13 +543,13 @@ FirmwareDownload8812(
                if (bUsedWoWLANFw) {
                #ifdef CONFIG_WOWLAN
                        if (pwrpriv->wowlan_mode) {
-#ifdef CONFIG_RTL8812A
-                               pFirmware->szFwBuffer = array_mp_8812a_fw_wowlan;
-                               pFirmware->ulFwLength = array_length_mp_8812a_fw_wowlan;
-#else
-                               pFirmware->szFwBuffer = array_mp_8821a_fw_wowlan;
-                               pFirmware->ulFwLength = array_length_mp_8821a_fw_wowlan;
-#endif
+                               if (IS_HARDWARE_TYPE_8812(Adapter)) {
+                                       pFirmware->szFwBuffer = array_mp_8812a_fw_wowlan;
+                                       pFirmware->ulFwLength = array_length_mp_8812a_fw_wowlan;
+                               } else {
+                                       pFirmware->szFwBuffer = array_mp_8821a_fw_wowlan;
+                                       pFirmware->ulFwLength = array_length_mp_8821a_fw_wowlan;
+                               }
                                RTW_INFO("%s fw:%s, size: %d\n", __func__, "WoWLAN", pFirmware->ulFwLength);
 
                        }
@@ -560,13 +557,13 @@ FirmwareDownload8812(
 
                #ifdef CONFIG_AP_WOWLAN
                        if (pwrpriv->wowlan_ap_mode) {
-#ifdef CONFIG_RTL8812A
-                               pFirmware->szFwBuffer = array_mp_8812a_fw_ap;
-                               pFirmware->ulFwLength = array_length_mp_8812a_fw_ap;
-#else
-                               pFirmware->szFwBuffer = array_mp_8821a_fw_ap;
-                               pFirmware->ulFwLength = array_length_mp_8821a_fw_ap;
-#endif
+                               if (IS_HARDWARE_TYPE_8812(Adapter)) {
+                                       pFirmware->szFwBuffer = array_mp_8812a_fw_ap;
+                                       pFirmware->ulFwLength = array_length_mp_8812a_fw_ap;
+                               } else {
+                                       pFirmware->szFwBuffer = array_mp_8821a_fw_ap;
+                                       pFirmware->ulFwLength = array_length_mp_8821a_fw_ap;
+                               }
 
                                RTW_INFO("%s fw: %s, size: %d\n", __func__, "AP_WoWLAN", pFirmware->ulFwLength);
                        }
@@ -575,26 +572,26 @@ FirmwareDownload8812(
 #ifdef CONFIG_BT_COEXIST
                        if (pHalData->EEPROMBluetoothCoexist == _TRUE) {
 
-#ifdef CONFIG_RTL8812A
-                               pFirmware->szFwBuffer = array_mp_8812a_fw_nic_bt;
-                               pFirmware->ulFwLength = array_length_mp_8812a_fw_nic_bt;
-#else
-                               pFirmware->szFwBuffer = array_mp_8821a_fw_nic_bt;
-                               pFirmware->ulFwLength = array_length_mp_8821a_fw_nic_bt;
-#endif
+                               if (IS_HARDWARE_TYPE_8812(Adapter)) {
+                                       pFirmware->szFwBuffer = array_mp_8812a_fw_nic_bt;
+                                       pFirmware->ulFwLength = array_length_mp_8812a_fw_nic_bt;
+                               } else {
+                                       pFirmware->szFwBuffer = array_mp_8821a_fw_nic_bt;
+                                       pFirmware->ulFwLength = array_length_mp_8821a_fw_nic_bt;
+                               }
 
                                RTW_INFO("%s fw:%s, size: %d\n", __FUNCTION__, "NIC-BTCOEX", pFirmware->ulFwLength);
                        } else
 #endif /* CONFIG_BT_COEXIST */
                        {
 
-#ifdef CONFIG_RTL8812A
-                               pFirmware->szFwBuffer = array_mp_8812a_fw_nic;
-                               pFirmware->ulFwLength = array_length_mp_8812a_fw_nic;
-#else
-                               pFirmware->szFwBuffer = array_mp_8821a_fw_nic;
-                               pFirmware->ulFwLength = array_length_mp_8821a_fw_nic;
-#endif
+                               if (IS_HARDWARE_TYPE_8812(Adapter)) {
+                                       pFirmware->szFwBuffer = array_mp_8812a_fw_nic;
+                                       pFirmware->ulFwLength = array_length_mp_8812a_fw_nic;
+                               } else {
+                                       pFirmware->szFwBuffer = array_mp_8821a_fw_nic;
+                                       pFirmware->ulFwLength = array_length_mp_8821a_fw_nic;
+                               }
 
                                RTW_INFO("%s fw:%s, size: %d\n", __FUNCTION__, "NIC", pFirmware->ulFwLength);
                        }