net: wireless: rockchip_wlan: add rtl8188fu support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8188fu / hal / phydm / phydm_powertracking_win.h
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8188fu/hal/phydm/phydm_powertracking_win.h b/drivers/net/wireless/rockchip_wlan/rtl8188fu/hal/phydm/phydm_powertracking_win.h
new file mode 100644 (file)
index 0000000..be43875
--- /dev/null
@@ -0,0 +1,265 @@
+/******************************************************************************\r
+ *\r
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.\r
+ *                                        \r
+ * This program is free software; you can redistribute it and/or modify it\r
+ * under the terms of version 2 of the GNU General Public License as\r
+ * published by the Free Software Foundation.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but WITHOUT\r
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
+ * more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License along with\r
+ * this program; if not, write to the Free Software Foundation, Inc.,\r
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA\r
+ *\r
+ *\r
+ ******************************************************************************/\r
\r
+#ifndef        __PHYDMPOWERTRACKING_H__\r
+#define    __PHYDMPOWERTRACKING_H__\r
+\r
+#define POWRTRACKING_VERSION   "1.1"\r
+\r
+#define        DPK_DELTA_MAPPING_NUM   13\r
+#define        index_mapping_HP_NUM    15      \r
+#define        TXSCALE_TABLE_SIZE              37\r
+#define        TXPWR_TRACK_TABLE_SIZE  30\r
+#define        DELTA_SWINGIDX_SIZE     30\r
+#define        BAND_NUM                                3\r
+#define        MAX_RF_PATH     4\r
+#define        CCK_TABLE_SIZE_88F      21\r
+\r
+\r
+#define        dm_CheckTXPowerTracking         ODM_TXPowerTrackingCheck\r
+\r
+#define IQK_Matrix_Settings_NUM        14+24+21 // Channels_2_4G_NUM + Channels_5G_20M_NUM + Channels_5G\r
+#define        AVG_THERMAL_NUM         8\r
+#define        HP_THERMAL_NUM          8\r
+#define        IQK_Matrix_REG_NUM      8\r
+#define        IQK_MAC_REG_NUM         4\r
+#define        IQK_ADDA_REG_NUM                16\r
+\r
+#define        IQK_BB_REG_NUM          9\r
+\r
+\r
+extern u4Byte OFDMSwingTable[OFDM_TABLE_SIZE];\r
+extern u1Byte CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8];\r
+extern u1Byte CCKSwingTable_Ch14 [CCK_TABLE_SIZE][8];\r
+\r
+extern u4Byte OFDMSwingTable_New[OFDM_TABLE_SIZE];\r
+extern u1Byte CCKSwingTable_Ch1_Ch13_New[CCK_TABLE_SIZE][8];\r
+extern u1Byte CCKSwingTable_Ch14_New [CCK_TABLE_SIZE][8];\r
+extern u1Byte CCKSwingTable_Ch1_Ch14_88F[CCK_TABLE_SIZE_88F][16];\r
+\r
+extern  u4Byte TxScalingTable_Jaguar[TXSCALE_TABLE_SIZE];\r
+\r
+// <20121018, Kordan> In case fail to read TxPowerTrack.txt, we use the table of 88E as the default table.\r
+static u1Byte DeltaSwingTableIdx_2GA_P_8188E[] = {0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4,  4,  4,  4,  4,  4,  5,  5,  7,  7,  8,  8,  8,  9,  9,  9,  9,  9};\r
+static u1Byte DeltaSwingTableIdx_2GA_N_8188E[] = {0, 0, 0, 2, 2, 3, 3, 4, 4, 4, 4, 5, 5,  6,  6,  7,  7,  7,  7,  8,  8,  9,  9, 10, 10, 10, 11, 11, 11, 11}; \r
+\r
+VOID\r
+ODM_TXPowerTrackingCheck(\r
+       IN      PVOID           pDM_VOID\r
+       );\r
+\r
+VOID\r
+odm_TXPowerTrackingCheckAP(\r
+       IN      PVOID           pDM_VOID\r
+       );\r
+\r
+VOID\r
+odm_TXPowerTrackingThermalMeterInit(\r
+       IN      PVOID           pDM_VOID\r
+       );\r
+\r
+VOID\r
+odm_TXPowerTrackingInit(\r
+       IN      PVOID           pDM_VOID\r
+       );\r
+\r
+VOID\r
+odm_TXPowerTrackingCheckMP(\r
+       IN      PVOID           pDM_VOID\r
+       );\r
+\r
+\r
+VOID\r
+odm_TXPowerTrackingCheckCE(\r
+       IN      PVOID           pDM_VOID\r
+       );\r
+\r
+#if(DM_ODM_SUPPORT_TYPE & (ODM_WIN)) \r
+\r
+\r
+VOID\r
+odm_TXPowerTrackingThermalMeterCheck(\r
+       IN      PADAPTER                Adapter\r
+       );\r
+\r
+#endif\r
+\r
+typedef struct _IQK_MATRIX_REGS_SETTING{\r
+       BOOLEAN         bIQKDone;\r
+       s4Byte          Value[3][IQK_Matrix_REG_NUM];\r
+       BOOLEAN         bBWIqkResultSaved[3];   \r
+}IQK_MATRIX_REGS_SETTING,*PIQK_MATRIX_REGS_SETTING;\r
+\r
+typedef struct ODM_RF_Calibration_Structure\r
+{\r
+       //for tx power tracking\r
+       \r
+       u4Byte  RegA24; // for TempCCK\r
+       s4Byte  RegE94;\r
+       s4Byte  RegE9C;\r
+       s4Byte  RegEB4;\r
+       s4Byte  RegEBC; \r
+       //u1Byte bTXPowerTracking;\r
+       u1Byte          TXPowercount;\r
+       BOOLEAN bTXPowerTrackingInit; \r
+       BOOLEAN bTXPowerTracking;\r
+       u1Byte          TxPowerTrackControl; //for mp mode, turn off txpwrtracking as default\r
+       u1Byte          TM_Trigger;\r
+       u1Byte          InternalPA5G[2];        //pathA / pathB\r
+       \r
+       u1Byte          ThermalMeter[2];    // ThermalMeter, index 0 for RFIC0, and 1 for RFIC1\r
+       u1Byte          ThermalValue;\r
+       u1Byte          ThermalValue_LCK;\r
+       u1Byte          ThermalValue_IQK;\r
+       u1Byte  ThermalValue_AVG[AVG_THERMAL_NUM];\r
+       u1Byte  ThermalValue_AVG_index;         \r
+       u1Byte  ThermalValue_RxGain;\r
+       \r
+       BOOLEAN bReloadtxpowerindex;    \r
+       u1Byte  bRfPiEnable;\r
+       u4Byte  TXPowerTrackingCallbackCnt; //cosa add for debug\r
+\r
+\r
+       //------------------------- Tx power Tracking -------------------------//\r
+       u1Byte  bCCKinCH14;\r
+       u1Byte  CCK_index;\r
+       u1Byte  OFDM_index[MAX_RF_PATH];\r
+       s1Byte  PowerIndexOffset[MAX_RF_PATH];\r
+       s1Byte  DeltaPowerIndex[MAX_RF_PATH];\r
+       s1Byte  DeltaPowerIndexLast[MAX_RF_PATH];       \r
+       BOOLEAN bTxPowerChanged;\r
+               \r
+       u1Byte  ThermalValue_HP[HP_THERMAL_NUM];\r
+       u1Byte  ThermalValue_HP_index;\r
+       IQK_MATRIX_REGS_SETTING IQKMatrixRegSetting[IQK_Matrix_Settings_NUM];\r
+       u1Byte  Delta_LCK;\r
+       s1Byte  BBSwingDiff2G, BBSwingDiff5G; // Unit: dB\r
+       u1Byte  DeltaSwingTableIdx_2GCCKA_P[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GCCKA_N[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GCCKB_P[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GCCKB_N[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GCCKC_P[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GCCKC_N[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GCCKD_P[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GCCKD_N[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GA_P[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GA_N[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GB_P[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GB_N[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GC_P[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GC_N[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GD_P[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GD_N[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_5GA_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_5GA_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_5GB_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_5GB_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_5GC_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_5GC_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_5GD_P[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_5GD_N[BAND_NUM][DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GA_P_8188E[DELTA_SWINGIDX_SIZE];\r
+       u1Byte  DeltaSwingTableIdx_2GA_N_8188E[DELTA_SWINGIDX_SIZE];\r
+       \r
+       u1Byte                  BbSwingIdxOfdm[MAX_RF_PATH];\r
+       u1Byte                  BbSwingIdxOfdmCurrent;\r
+#if (DM_ODM_SUPPORT_TYPE &  (ODM_WIN|ODM_CE))  \r
+       u1Byte                  BbSwingIdxOfdmBase[MAX_RF_PATH];\r
+#else\r
+       u1Byte                  BbSwingIdxOfdmBase;\r
+#endif\r
+       BOOLEAN                 BbSwingFlagOfdm;\r
+       u1Byte                  BbSwingIdxCck;\r
+       u1Byte                  BbSwingIdxCckCurrent;\r
+       u1Byte                  BbSwingIdxCckBase;\r
+       u1Byte                  DefaultOfdmIndex;\r
+       u1Byte                  DefaultCckIndex;        \r
+       BOOLEAN                 BbSwingFlagCck;\r
+       \r
+       s1Byte                  Absolute_OFDMSwingIdx[MAX_RF_PATH];   \r
+       s1Byte                  Remnant_OFDMSwingIdx[MAX_RF_PATH];   \r
+       s1Byte                  Remnant_CCKSwingIdx;\r
+       s1Byte                  Modify_TxAGC_Value;       /*Remnat compensate value at TxAGC */\r
+       BOOLEAN                 Modify_TxAGC_Flag_PathA;\r
+       BOOLEAN                 Modify_TxAGC_Flag_PathB;\r
+       BOOLEAN                 Modify_TxAGC_Flag_PathC;\r
+       BOOLEAN                 Modify_TxAGC_Flag_PathD;\r
+       BOOLEAN                 Modify_TxAGC_Flag_PathA_CCK;\r
+       \r
+       s1Byte                  KfreeOffset[MAX_RF_PATH];\r
+    \r
+       //--------------------------------------------------------------------//        \r
+       \r
+       //for IQK       \r
+       u4Byte  RegC04;\r
+       u4Byte  Reg874;\r
+       u4Byte  RegC08;\r
+       u4Byte  RegB68;\r
+       u4Byte  RegB6C;\r
+       u4Byte  Reg870;\r
+       u4Byte  Reg860;\r
+       u4Byte  Reg864;\r
+       \r
+       BOOLEAN bIQKInitialized;\r
+       BOOLEAN bLCKInProgress;\r
+       BOOLEAN bAntennaDetected;\r
+       BOOLEAN bNeedIQK;\r
+       BOOLEAN bIQKInProgress; \r
+       u1Byte  Delta_IQK;\r
+       u4Byte  ADDA_backup[IQK_ADDA_REG_NUM];\r
+       u4Byte  IQK_MAC_backup[IQK_MAC_REG_NUM];\r
+       u4Byte  IQK_BB_backup_recover[9];\r
+       u4Byte  IQK_BB_backup[IQK_BB_REG_NUM];  \r
+       u4Byte  TxIQC_8723B[2][3][2]; /* { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}} */\r
+       u4Byte  RxIQC_8723B[2][2][2]; /* { {S1: 0xc14, 0xca0} ,           {S0: 0xc14, 0xca0}} */\r
+       u4Byte  TxIQC_8703B[3][2];      /* { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}}*/\r
+       u4Byte  RxIQC_8703B[2][2];      /* { {S1: 0xc14, 0xca0} ,           {S0: 0xc14, 0xca0}}*/\r
+       \r
+       \r
+\r
+       // <James> IQK time measurement \r
+       u8Byte  IQK_StartTime;\r
+       u8Byte  IQK_ProgressingTime;\r
+       u4Byte  LOK_Result;\r
+\r
+       //for APK\r
+       u4Byte  APKoutput[2][2]; //path A/B; output1_1a/output1_2a\r
+       u1Byte  bAPKdone;\r
+       u1Byte  bAPKThermalMeterIgnore;\r
+       \r
+       // DPK\r
+       BOOLEAN bDPKFail;       \r
+       u1Byte  bDPdone;\r
+       u1Byte  bDPPathAOK;\r
+       u1Byte  bDPPathBOK;\r
+\r
+       u4Byte  TxLOK[2];\r
+       u4Byte  DpkTxAGC;\r
+       s4Byte  DpkGain;\r
+       u4Byte  DpkThermal[4];  \r
+\r
+       s1Byte Modify_TxAGC_Value_OFDM;\r
+       s1Byte Modify_TxAGC_Value_CCK;\r
+}ODM_RF_CAL_T,*PODM_RF_CAL_T;\r
+\r
+\r
+\r
+\r
+#endif\r