net: wireless: rockchip: add rtl8822be pcie wifi driver
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8822be / hal / phydm / phydm_interface.h
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8822be/hal/phydm/phydm_interface.h b/drivers/net/wireless/rockchip_wlan/rtl8822be/hal/phydm/phydm_interface.h
new file mode 100644 (file)
index 0000000..fb68142
--- /dev/null
@@ -0,0 +1,428 @@
+/******************************************************************************\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
+\r
+#ifndef        __ODM_INTERFACE_H__\r
+#define __ODM_INTERFACE_H__\r
+\r
+#define INTERFACE_VERSION      "1.1"           /*2015.07.29  YuChen*/\r
+\r
+//\r
+// =========== Constant/Structure/Enum/... Define\r
+//\r
+\r
+\r
+\r
+//\r
+// =========== Macro Define\r
+//\r
+\r
+#define _reg_all(_name)                        ODM_##_name\r
+#define _reg_ic(_name, _ic)            ODM_##_name##_ic\r
+#define _bit_all(_name)                        BIT_##_name\r
+#define _bit_ic(_name, _ic)            BIT_##_name##_ic\r
+\r
+// _cat: implemented by Token-Pasting Operator.\r
+#if 0\r
+#define _cat(_name, _ic_type, _func)                                                           \\r
+       (                                                                                                                       \\r
+               _func##_all(_name)                                                                              \\r
+       )\r
+#endif\r
+\r
+/*===================================\r
+\r
+#define ODM_REG_DIG_11N                0xC50\r
+#define ODM_REG_DIG_11AC       0xDDD\r
+\r
+ODM_REG(DIG,_pDM_Odm)\r
+=====================================*/\r
+\r
+#define _reg_11N(_name)                        ODM_REG_##_name##_11N \r
+#define _reg_11AC(_name)               ODM_REG_##_name##_11AC\r
+#define _bit_11N(_name)                        ODM_BIT_##_name##_11N \r
+#define _bit_11AC(_name)               ODM_BIT_##_name##_11AC\r
+\r
+#ifdef __ECOS\r
+#define _rtk_cat(_name, _ic_type, _func)               \\r
+       (                                       \\r
+               ((_ic_type) & ODM_IC_11N_SERIES)? _func##_11N(_name):           \\r
+               _func##_11AC(_name)     \\r
+       )\r
+#else\r
+\r
+#define _cat(_name, _ic_type, _func)                                                                   \\r
+       (                                                                                                                       \\r
+               ((_ic_type) & ODM_IC_11N_SERIES)? _func##_11N(_name):           \\r
+               _func##_11AC(_name)                                                                     \\r
+       )\r
+#endif\r
+/* \r
+// only sample code\r
+//#define _cat(_name, _ic_type, _func)                                                                 \\r
+//     (                                                                                                                       \\r
+//             ((_ic_type) & ODM_RTL8188E)? _func##_ic(_name, _8188E):         \\r
+//             _func##_ic(_name, _8195)                                                                        \\r
+//     )\r
+*/\r
+\r
+// _name: name of register or bit.\r
+// Example: "ODM_REG(R_A_AGC_CORE1, pDM_Odm)" \r
+//        gets "ODM_R_A_AGC_CORE1" or "ODM_R_A_AGC_CORE1_8192C", depends on SupportICType.\r
+#ifdef __ECOS\r
+#define ODM_REG(_name, _pDM_Odm)       _rtk_cat(_name, _pDM_Odm->SupportICType, _reg)\r
+#define ODM_BIT(_name, _pDM_Odm)       _rtk_cat(_name, _pDM_Odm->SupportICType, _bit)\r
+#else\r
+#define ODM_REG(_name, _pDM_Odm)       _cat(_name, _pDM_Odm->SupportICType, _reg)\r
+#define ODM_BIT(_name, _pDM_Odm)       _cat(_name, _pDM_Odm->SupportICType, _bit)\r
+#endif\r
+typedef enum _PHYDM_H2C_CMD {\r
+       ODM_H2C_RSSI_REPORT = 0,\r
+       ODM_H2C_PSD_RESULT = 1, \r
+       ODM_H2C_PathDiv = 2,\r
+       ODM_H2C_WIFI_CALIBRATION = 3,\r
+       ODM_H2C_IQ_CALIBRATION = 4,\r
+       ODM_H2C_RA_PARA_ADJUST = 5,\r
+       PHYDM_H2C_DYNAMIC_TX_PATH = 6,\r
+       PHYDM_H2C_FW_TRACE_EN = 7,\r
+       PHYDM_H2C_TXBF = 8,\r
+       PHYDM_H2C_MU = 9,\r
+       ODM_MAX_H2CCMD\r
+}PHYDM_H2C_CMD;\r
+\r
+typedef enum _PHYDM_C2H_EVT {\r
+       PHYDM_C2H_DBG = 0,\r
+       PHYDM_C2H_LB = 1,\r
+       PHYDM_C2H_XBF = 2,\r
+       PHYDM_C2H_TX_REPORT = 3,\r
+       PHYDM_C2H_INFO = 9,\r
+       PHYDM_C2H_BT_MP = 11,\r
+       PHYDM_C2H_RA_RPT = 12,\r
+       PHYDM_C2H_RA_PARA_RPT=14,\r
+       PHYDM_C2H_DYNAMIC_TX_PATH_RPT = 15,\r
+       PHYDM_C2H_IQK_FINISH = 17, /*0x11*/\r
+       PHYDM_C2H_DBG_CODE = 0xFE,\r
+       PHYDM_C2H_EXTEND = 0xFF,\r
+}PHYDM_C2H_EVT;\r
+\r
+typedef enum _PHYDM_EXTEND_C2H_EVT {\r
+       PHYDM_EXTEND_C2H_DBG_PRINT = 0\r
+\r
+}PHYDM_EXTEND_C2H_EVT;\r
+\r
+\r
+//\r
+// 2012/02/17 MH For non-MP compile pass only. Linux does not support workitem.\r
+// Suggest HW team to use thread instead of workitem. Windows also support the feature.\r
+//\r
+#if (DM_ODM_SUPPORT_TYPE != ODM_WIN)\r
+typedef  void *PRT_WORK_ITEM ;\r
+typedef  void RT_WORKITEM_HANDLE,*PRT_WORKITEM_HANDLE;\r
+typedef VOID (*RT_WORKITEM_CALL_BACK)(PVOID pContext);\r
+\r
+#if 0\r
+typedef struct tasklet_struct RT_WORKITEM_HANDLE, *PRT_WORKITEM_HANDLE;\r
+\r
+typedef struct _RT_WORK_ITEM\r
+{\r
+       \r
+       RT_WORKITEM_HANDLE                      Handle;                 // Platform-dependent handle for this workitem, e.g. Ndis Workitem object.\r
+       PVOID                                           Adapter;                // Pointer to Adapter object.\r
+       PVOID                                           pContext;               // Parameter to passed to CallBackFunc(). \r
+       RT_WORKITEM_CALL_BACK           CallbackFunc;   // Callback function of the workitem.\r
+       u1Byte                                          RefCount;               // 0: driver is going to unload, 1: No such workitem scheduled, 2: one workitem is schedueled. \r
+       PVOID                                           pPlatformExt;   // Pointer to platform-dependent extension.     \r
+       BOOLEAN                                         bFree;\r
+       char                                            szID[36];               // An identity string of this workitem.\r
+}RT_WORK_ITEM, *PRT_WORK_ITEM;\r
+\r
+#endif\r
+\r
+\r
+#endif\r
+\r
+//\r
+// =========== Extern Variable ??? It should be forbidden.\r
+//\r
+\r
+\r
+//\r
+// =========== EXtern Function Prototype\r
+//\r
+\r
+\r
+u1Byte\r
+ODM_Read1Byte(\r
+       IN      PDM_ODM_T               pDM_Odm,\r
+       IN      u4Byte                  RegAddr\r
+       );\r
+\r
+u2Byte\r
+ODM_Read2Byte(\r
+       IN      PDM_ODM_T               pDM_Odm,\r
+       IN      u4Byte                  RegAddr\r
+       );\r
+\r
+u4Byte\r
+ODM_Read4Byte(\r
+       IN      PDM_ODM_T               pDM_Odm,\r
+       IN      u4Byte                  RegAddr\r
+       );\r
+\r
+VOID\r
+ODM_Write1Byte(\r
+       IN      PDM_ODM_T               pDM_Odm,\r
+       IN      u4Byte                  RegAddr,\r
+       IN      u1Byte                  Data\r
+       );\r
+\r
+VOID\r
+ODM_Write2Byte(\r
+       IN      PDM_ODM_T               pDM_Odm,\r
+       IN      u4Byte                  RegAddr,\r
+       IN      u2Byte                  Data\r
+       );\r
+\r
+VOID\r
+ODM_Write4Byte(\r
+       IN      PDM_ODM_T               pDM_Odm,\r
+       IN      u4Byte                  RegAddr,\r
+       IN      u4Byte                  Data\r
+       );\r
+\r
+VOID\r
+ODM_SetMACReg( \r
+       IN      PDM_ODM_T       pDM_Odm,\r
+       IN      u4Byte          RegAddr,\r
+       IN      u4Byte          BitMask,\r
+       IN      u4Byte          Data\r
+       );\r
+\r
+u4Byte \r
+ODM_GetMACReg( \r
+       IN      PDM_ODM_T       pDM_Odm,\r
+       IN      u4Byte          RegAddr,\r
+       IN      u4Byte          BitMask\r
+       );\r
+\r
+VOID\r
+ODM_SetBBReg(  \r
+       IN      PDM_ODM_T       pDM_Odm,\r
+       IN      u4Byte          RegAddr,\r
+       IN      u4Byte          BitMask,\r
+       IN      u4Byte          Data\r
+       );\r
+\r
+u4Byte \r
+ODM_GetBBReg(  \r
+       IN      PDM_ODM_T       pDM_Odm,\r
+       IN      u4Byte          RegAddr,\r
+       IN      u4Byte          BitMask\r
+       );\r
+\r
+VOID\r
+ODM_SetRFReg(  \r
+       IN      PDM_ODM_T                       pDM_Odm,\r
+       IN      ODM_RF_RADIO_PATH_E     eRFPath,\r
+       IN      u4Byte                          RegAddr,\r
+       IN      u4Byte                          BitMask,\r
+       IN      u4Byte                          Data\r
+       );\r
+\r
+u4Byte \r
+ODM_GetRFReg(  \r
+       IN      PDM_ODM_T                       pDM_Odm,\r
+       IN      ODM_RF_RADIO_PATH_E     eRFPath,\r
+       IN      u4Byte                          RegAddr,\r
+       IN      u4Byte                          BitMask\r
+       );\r
+\r
+\r
+//\r
+// Memory Relative Function.\r
+//\r
+VOID\r
+ODM_AllocateMemory(    \r
+       IN      PDM_ODM_T       pDM_Odm,\r
+       OUT     PVOID           *pPtr,\r
+       IN      u4Byte          length\r
+       );\r
+VOID\r
+ODM_FreeMemory(        \r
+       IN      PDM_ODM_T       pDM_Odm,\r
+       OUT     PVOID           pPtr,\r
+       IN      u4Byte          length\r
+       );\r
+\r
+VOID\r
+ODM_MoveMemory(        \r
+       IN      PDM_ODM_T       pDM_Odm,\r
+       OUT PVOID               pDest,\r
+       IN  PVOID               pSrc,\r
+       IN  u4Byte              Length\r
+       );\r
+\r
+s4Byte ODM_CompareMemory(\r
+       IN      PDM_ODM_T       pDM_Odm,\r
+       IN      PVOID           pBuf1,\r
+      IN       PVOID           pBuf2,\r
+      IN       u4Byte          length\r
+       );\r
+\r
+void ODM_Memory_Set\r
+       (IN     PDM_ODM_T       pDM_Odm,\r
+               IN  PVOID       pbuf,\r
+               IN  s1Byte      value,\r
+               IN  u4Byte      length);\r
+       \r
+//\r
+// ODM MISC-spin lock relative API.\r
+//\r
+VOID\r
+ODM_AcquireSpinLock(   \r
+       IN      PDM_ODM_T                       pDM_Odm,\r
+       IN      RT_SPINLOCK_TYPE        type\r
+       );\r
+\r
+VOID\r
+ODM_ReleaseSpinLock(   \r
+       IN      PDM_ODM_T                       pDM_Odm,\r
+       IN      RT_SPINLOCK_TYPE        type\r
+       );\r
+\r
+\r
+//\r
+// ODM MISC-workitem relative API.\r
+//\r
+VOID\r
+ODM_InitializeWorkItem(        \r
+       IN      PDM_ODM_T                                       pDM_Odm,\r
+       IN      PRT_WORK_ITEM                           pRtWorkItem,\r
+       IN      RT_WORKITEM_CALL_BACK           RtWorkItemCallback,\r
+       IN      PVOID                                           pContext,\r
+       IN      const char*                                     szID\r
+       );\r
+\r
+VOID\r
+ODM_StartWorkItem(     \r
+       IN      PRT_WORK_ITEM   pRtWorkItem\r
+       );\r
+\r
+VOID\r
+ODM_StopWorkItem(      \r
+       IN      PRT_WORK_ITEM   pRtWorkItem\r
+       );\r
+\r
+VOID\r
+ODM_FreeWorkItem(      \r
+       IN      PRT_WORK_ITEM   pRtWorkItem\r
+       );\r
+\r
+VOID\r
+ODM_ScheduleWorkItem(  \r
+       IN      PRT_WORK_ITEM   pRtWorkItem\r
+       );\r
+\r
+VOID\r
+ODM_IsWorkItemScheduled(       \r
+       IN      PRT_WORK_ITEM   pRtWorkItem\r
+       );\r
+\r
+//\r
+// ODM Timer relative API.\r
+//\r
+VOID\r
+ODM_StallExecution(    \r
+       IN      u4Byte  usDelay\r
+       );\r
+\r
+VOID\r
+ODM_delay_ms(IN u4Byte ms);\r
+\r
+\r
+\r
+VOID\r
+ODM_delay_us(IN u4Byte us);\r
+\r
+VOID\r
+ODM_sleep_ms(IN u4Byte ms);\r
+\r
+VOID\r
+ODM_sleep_us(IN u4Byte us);\r
+\r
+VOID\r
+ODM_SetTimer(  \r
+       IN      PDM_ODM_T               pDM_Odm,\r
+       IN      PRT_TIMER               pTimer, \r
+       IN      u4Byte                  msDelay\r
+       );\r
+\r
+VOID\r
+ODM_InitializeTimer(\r
+       IN      PDM_ODM_T                       pDM_Odm,\r
+       IN      PRT_TIMER                       pTimer, \r
+       IN      RT_TIMER_CALL_BACK      CallBackFunc, \r
+       IN      PVOID                           pContext,\r
+       IN      const char*                     szID\r
+       );\r
+\r
+VOID\r
+ODM_CancelTimer(\r
+       IN      PDM_ODM_T               pDM_Odm,\r
+       IN      PRT_TIMER               pTimer\r
+       );\r
+\r
+VOID\r
+ODM_ReleaseTimer(\r
+       IN      PDM_ODM_T               pDM_Odm,\r
+       IN      PRT_TIMER               pTimer\r
+       );\r
+\r
+//\r
+// ODM FW relative API.\r
+//\r
+VOID\r
+ODM_FillH2CCmd(\r
+       IN      PDM_ODM_T               pDM_Odm,\r
+       IN      u1Byte                  ElementID,\r
+       IN      u4Byte                  CmdLen,\r
+       IN      pu1Byte                 pCmdBuffer\r
+);\r
+\r
+u1Byte\r
+phydm_c2H_content_parsing(\r
+       IN      PVOID                   pDM_VOID,\r
+       IN      u1Byte                  c2hCmdId,\r
+       IN      u1Byte                  c2hCmdLen,\r
+       IN      pu1Byte                 tmpBuf\r
+);\r
+\r
+u8Byte\r
+ODM_GetCurrentTime(    \r
+       IN      PDM_ODM_T               pDM_Odm\r
+       );\r
+u8Byte\r
+ODM_GetProgressingTime(        \r
+       IN      PDM_ODM_T               pDM_Odm,\r
+       IN      u8Byte                  Start_Time\r
+       );\r
+\r
+#endif // __ODM_INTERFACE_H__\r
+\r