net: wireless: rockchip_wlan: add rtl8188fu support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8188fu / hal / btc / HalBtc8723b1Ant.h
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8188fu/hal/btc/HalBtc8723b1Ant.h b/drivers/net/wireless/rockchip_wlan/rtl8188fu/hal/btc/HalBtc8723b1Ant.h
new file mode 100644 (file)
index 0000000..8e70ac6
--- /dev/null
@@ -0,0 +1,337 @@
+//===========================================\r
+// The following is for 8723B 1ANT BT Co-exist definition\r
+//===========================================\r
+#define        BT_AUTO_REPORT_ONLY_8723B_1ANT                          1\r
+\r
+#define        BT_INFO_8723B_1ANT_B_FTP                                                BIT7\r
+#define        BT_INFO_8723B_1ANT_B_A2DP                                       BIT6\r
+#define        BT_INFO_8723B_1ANT_B_HID                                                BIT5\r
+#define        BT_INFO_8723B_1ANT_B_SCO_BUSY                           BIT4\r
+#define        BT_INFO_8723B_1ANT_B_ACL_BUSY                           BIT3\r
+#define        BT_INFO_8723B_1ANT_B_INQ_PAGE                           BIT2\r
+#define        BT_INFO_8723B_1ANT_B_SCO_ESCO                           BIT1\r
+#define        BT_INFO_8723B_1ANT_B_CONNECTION                         BIT0\r
+\r
+#define        BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_)       \\r
+               (((_BT_INFO_EXT_&BIT0))? TRUE:FALSE)\r
+\r
+#define        BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT             2\r
+\r
+#define  BT_8723B_1ANT_WIFI_NOISY_THRESH                                                               50 //30   //max: 255                                                            \r
+\r
+//for Antenna detection\r
+#define        BT_8723B_1ANT_ANTDET_PSDTHRES_BACKGROUND                                        50\r
+#define        BT_8723B_1ANT_ANTDET_PSDTHRES_2ANT_BADISOLATION                         70\r
+#define        BT_8723B_1ANT_ANTDET_PSDTHRES_2ANT_GOODISOLATION                        55\r
+#define        BT_8723B_1ANT_ANTDET_PSDTHRES_1ANT                                                      35\r
+#define        BT_8723B_1ANT_ANTDET_RETRY_INTERVAL                                                     10      //retry timer if ant det is fail, unit: second\r
+#define        BT_8723B_1ANT_ANTDET_ENABLE                                                                     0\r
+#define        BT_8723B_1ANT_ANTDET_COEXMECHANISMSWITCH_ENABLE                         0\r
+\r
+typedef enum _BT_INFO_SRC_8723B_1ANT{\r
+       BT_INFO_SRC_8723B_1ANT_WIFI_FW                  = 0x0,\r
+       BT_INFO_SRC_8723B_1ANT_BT_RSP                           = 0x1,\r
+       BT_INFO_SRC_8723B_1ANT_BT_ACTIVE_SEND           = 0x2,\r
+       BT_INFO_SRC_8723B_1ANT_MAX\r
+}BT_INFO_SRC_8723B_1ANT,*PBT_INFO_SRC_8723B_1ANT;\r
+\r
+typedef enum _BT_8723B_1ANT_BT_STATUS{\r
+       BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE      = 0x0,\r
+       BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE          = 0x1,\r
+       BT_8723B_1ANT_BT_STATUS_INQ_PAGE                                = 0x2,\r
+       BT_8723B_1ANT_BT_STATUS_ACL_BUSY                                = 0x3,\r
+       BT_8723B_1ANT_BT_STATUS_SCO_BUSY                                = 0x4,\r
+       BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY                    = 0x5,\r
+       BT_8723B_1ANT_BT_STATUS_MAX\r
+}BT_8723B_1ANT_BT_STATUS,*PBT_8723B_1ANT_BT_STATUS;\r
+\r
+typedef enum _BT_8723B_1ANT_WIFI_STATUS{\r
+       BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_IDLE                            = 0x0,\r
+       BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN          = 0x1,\r
+       BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN                                        = 0x2,\r
+       BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT                         = 0x3,\r
+       BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE                                        = 0x4,\r
+       BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY                                        = 0x5,\r
+       BT_8723B_1ANT_WIFI_STATUS_MAX\r
+}BT_8723B_1ANT_WIFI_STATUS,*PBT_8723B_1ANT_WIFI_STATUS;\r
+\r
+typedef enum _BT_8723B_1ANT_COEX_ALGO{\r
+       BT_8723B_1ANT_COEX_ALGO_UNDEFINED                       = 0x0,\r
+       BT_8723B_1ANT_COEX_ALGO_SCO                             = 0x1,\r
+       BT_8723B_1ANT_COEX_ALGO_HID                             = 0x2,\r
+       BT_8723B_1ANT_COEX_ALGO_A2DP                            = 0x3,\r
+       BT_8723B_1ANT_COEX_ALGO_A2DP_PANHS              = 0x4,\r
+       BT_8723B_1ANT_COEX_ALGO_PANEDR                  = 0x5,\r
+       BT_8723B_1ANT_COEX_ALGO_PANHS                   = 0x6,\r
+       BT_8723B_1ANT_COEX_ALGO_PANEDR_A2DP             = 0x7,\r
+       BT_8723B_1ANT_COEX_ALGO_PANEDR_HID              = 0x8,\r
+       BT_8723B_1ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x9,\r
+       BT_8723B_1ANT_COEX_ALGO_HID_A2DP                        = 0xa,\r
+       BT_8723B_1ANT_COEX_ALGO_MAX                             = 0xb,\r
+}BT_8723B_1ANT_COEX_ALGO,*PBT_8723B_1ANT_COEX_ALGO;\r
+\r
+typedef struct _COEX_DM_8723B_1ANT{\r
+       // hw setting\r
+       u1Byte          preAntPosType;\r
+       u1Byte          curAntPosType;\r
+       // fw mechanism\r
+       BOOLEAN         bCurIgnoreWlanAct;\r
+       BOOLEAN         bPreIgnoreWlanAct;\r
+       u1Byte          prePsTdma;\r
+       u1Byte          curPsTdma;\r
+       u1Byte          psTdmaPara[5];\r
+       u1Byte          psTdmaDuAdjType;\r
+       BOOLEAN         bAutoTdmaAdjust;\r
+       BOOLEAN         bPrePsTdmaOn;\r
+       BOOLEAN         bCurPsTdmaOn;\r
+       BOOLEAN         bPreBtAutoReport;\r
+       BOOLEAN         bCurBtAutoReport;\r
+       u1Byte          preLps;\r
+       u1Byte          curLps;\r
+       u1Byte          preRpwm;\r
+       u1Byte          curRpwm;\r
+\r
+       // sw mechanism\r
+       BOOLEAN         bPreLowPenaltyRa;\r
+       BOOLEAN         bCurLowPenaltyRa;\r
+       u4Byte          preVal0x6c0;\r
+       u4Byte          curVal0x6c0;\r
+       u4Byte          preVal0x6c4;\r
+       u4Byte          curVal0x6c4;\r
+       u4Byte          preVal0x6c8;\r
+       u4Byte          curVal0x6c8;\r
+       u1Byte          preVal0x6cc;\r
+       u1Byte          curVal0x6cc;\r
+       BOOLEAN         bLimitedDig;\r
+\r
+       u4Byte          backupArfrCnt1; // Auto Rate Fallback Retry cnt\r
+       u4Byte          backupArfrCnt2; // Auto Rate Fallback Retry cnt\r
+       u2Byte          backupRetryLimit;\r
+       u1Byte          backupAmpduMaxTime;\r
+\r
+       // algorithm related\r
+       u1Byte          preAlgorithm;\r
+       u1Byte          curAlgorithm;\r
+       u1Byte          btStatus;\r
+       u1Byte          wifiChnlInfo[3];\r
+\r
+       u4Byte          preRaMask;\r
+       u4Byte          curRaMask;\r
+       u1Byte          preArfrType;\r
+       u1Byte          curArfrType;\r
+       u1Byte          preRetryLimitType;\r
+       u1Byte          curRetryLimitType;\r
+       u1Byte          preAmpduTimeType;\r
+       u1Byte          curAmpduTimeType;\r
+       u4Byte          nArpCnt;\r
+\r
+       u1Byte          errorCondition;\r
+} COEX_DM_8723B_1ANT, *PCOEX_DM_8723B_1ANT;\r
+\r
+typedef struct _COEX_STA_8723B_1ANT{\r
+       BOOLEAN                                 bBtLinkExist;\r
+       BOOLEAN                                 bScoExist;\r
+       BOOLEAN                                 bA2dpExist;\r
+       BOOLEAN                                 bHidExist;\r
+       BOOLEAN                                 bPanExist;\r
+       BOOLEAN                                 bBtHiPriLinkExist;\r
+       u1Byte                                  nNumOfProfile;\r
+\r
+       BOOLEAN                                 bUnderLps;\r
+       BOOLEAN                                 bUnderIps;\r
+       u4Byte                                  specialPktPeriodCnt;\r
+       u4Byte                                  highPriorityTx;\r
+       u4Byte                                  highPriorityRx;\r
+       u4Byte                                  lowPriorityTx;\r
+       u4Byte                                  lowPriorityRx;\r
+       s1Byte                                  btRssi;\r
+       BOOLEAN                                 bBtTxRxMask;\r
+       u1Byte                                  preBtRssiState;\r
+       u1Byte                                  preWifiRssiState[4];\r
+       BOOLEAN                                 bC2hBtInfoReqSent;\r
+       u1Byte                                  btInfoC2h[BT_INFO_SRC_8723B_1ANT_MAX][10];\r
+       u4Byte                                  btInfoC2hCnt[BT_INFO_SRC_8723B_1ANT_MAX];\r
+       BOOLEAN                                 bBtWhckTest;\r
+       BOOLEAN                                 bC2hBtInquiryPage;\r
+       BOOLEAN                                 bC2hBtRemoteNameReq;                            \r
+       BOOLEAN                                 bWiFiIsHighPriTask;             //Add for win8.1 page out issue\r
+       u1Byte                                  btRetryCnt;\r
+       u1Byte                                  btInfoExt;\r
+       u4Byte                                  popEventCnt;\r
+       u1Byte                                  nScanAPNum;\r
+\r
+       u4Byte                                  nCRCOK_CCK;\r
+       u4Byte                                  nCRCOK_11g;\r
+       u4Byte                                  nCRCOK_11n;\r
+       u4Byte                                  nCRCOK_11nAgg;\r
+       \r
+       u4Byte                                  nCRCErr_CCK;\r
+       u4Byte                                  nCRCErr_11g;\r
+       u4Byte                                  nCRCErr_11n;\r
+       u4Byte                                  nCRCErr_11nAgg; \r
+\r
+       BOOLEAN                                 bCCKLock;\r
+       BOOLEAN                                 bPreCCKLock;\r
+       BOOLEAN                                 bCCKEverLock;\r
+       u1Byte                                  nCoexTableType;\r
+\r
+       BOOLEAN                                 bForceLpsOn;\r
+       u4Byte                                  wrongProfileNotification;\r
+\r
+       u1Byte                                  nA2DPBitPool;\r
+       u1Byte                                  nCutVersion;\r
+}COEX_STA_8723B_1ANT, *PCOEX_STA_8723B_1ANT;\r
+\r
+#define  BT_8723B_1ANT_ANTDET_PSD_POINTS                       256     //MAX:1024\r
+#define  BT_8723B_1ANT_ANTDET_PSD_AVGNUM                       1       //MAX:3\r
+#define        BT_8723B_1ANT_ANTDET_BUF_LEN                            16\r
+\r
+typedef struct _PSDSCAN_STA_8723B_1ANT{\r
+\r
+u4Byte                 nAntDet_BTLEChannel;  //BT LE Channel ex:2412\r
+u4Byte                 nAntDet_BTTxTime;\r
+u4Byte                 nAntDet_PrePSDScanPeakVal;\r
+BOOLEAN                        nAntDet_IsAntDetAvailable;\r
+u4Byte                 nAntDet_PSDScanPeakVal;\r
+BOOLEAN                        nAntDet_IsBTReplyAvailable;\r
+u4Byte                 nAntDet_PSDScanPeakFreq;\r
+\r
+u1Byte                 nAntDet_Result;\r
+u1Byte                 nAntDet_PeakVal[BT_8723B_1ANT_ANTDET_BUF_LEN];\r
+u1Byte                 nAntDet_PeakFreq[BT_8723B_1ANT_ANTDET_BUF_LEN];\r
+u4Byte                 bAntDet_TryCount;\r
+u4Byte                 bAntDet_FailCount;\r
+u4Byte                 nAntDet_IntevalCount;\r
+u4Byte                 nAntDet_ThresOffset;\r
+\r
+u4Byte                 nRealCentFreq;\r
+s4Byte                 nRealOffset;\r
+u4Byte                 nRealSpan;\r
+       \r
+u4Byte                 nPSDBandWidth;  //unit: Hz\r
+u4Byte                 nPSDPoint;              //128/256/512/1024\r
+u4Byte                 nPSDReport[1024];  //unit:dB (20logx), 0~255\r
+u4Byte                 nPSDReport_MaxHold[1024];  //unit:dB (20logx), 0~255\r
+u4Byte                 nPSDStartPoint;\r
+u4Byte                 nPSDStopPoint;\r
+u4Byte                 nPSDMaxValuePoint;\r
+u4Byte                 nPSDMaxValue;\r
+u4Byte                 nPSDStartBase;\r
+u4Byte                 nPSDAvgNum;     // 1/8/16/32\r
+u4Byte                 nPSDGenCount;\r
+BOOLEAN                        bIsPSDRunning;\r
+BOOLEAN                        bIsPSDShowMaxOnly;\r
+} PSDSCAN_STA_8723B_1ANT, *PPSDSCAN_STA_8723B_1ANT;\r
+\r
+//===========================================\r
+// The following is interface which will notify coex module.\r
+//===========================================\r
+VOID\r
+EXhalbtc8723b1ant_PowerOnSetting(\r
+       IN      PBTC_COEXIST            pBtCoexist\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_PreLoadFirmware(\r
+       IN      PBTC_COEXIST            pBtCoexist\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_InitHwConfig(\r
+       IN      PBTC_COEXIST            pBtCoexist,\r
+       IN      BOOLEAN                         bWifiOnly\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_InitCoexDm(\r
+       IN      PBTC_COEXIST            pBtCoexist\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_IpsNotify(\r
+       IN      PBTC_COEXIST            pBtCoexist,\r
+       IN      u1Byte                  type\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_LpsNotify(\r
+       IN      PBTC_COEXIST            pBtCoexist,\r
+       IN      u1Byte                  type\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_ScanNotify(\r
+       IN      PBTC_COEXIST            pBtCoexist,\r
+       IN      u1Byte                  type\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_ConnectNotify(\r
+       IN      PBTC_COEXIST            pBtCoexist,\r
+       IN      u1Byte                  type\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_MediaStatusNotify(\r
+       IN      PBTC_COEXIST                    pBtCoexist,\r
+       IN      u1Byte                          type\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_SpecialPacketNotify(\r
+       IN      PBTC_COEXIST                    pBtCoexist,\r
+       IN      u1Byte                          type\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_BtInfoNotify(\r
+       IN      PBTC_COEXIST            pBtCoexist,\r
+       IN      pu1Byte                 tmpBuf,\r
+       IN      u1Byte                  length\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_RfStatusNotify(\r
+       IN      PBTC_COEXIST                    pBtCoexist,\r
+       IN      u1Byte                                  type\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_HaltNotify(\r
+       IN      PBTC_COEXIST                    pBtCoexist\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_PnpNotify(\r
+       IN      PBTC_COEXIST                    pBtCoexist,\r
+       IN      u1Byte                          pnpState\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_CoexDmReset(\r
+       IN      PBTC_COEXIST                    pBtCoexist\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_Periodical(\r
+       IN      PBTC_COEXIST                    pBtCoexist\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_DisplayCoexInfo(\r
+       IN      PBTC_COEXIST            pBtCoexist\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_AntennaDetection(\r
+       IN      PBTC_COEXIST                    pBtCoexist,\r
+       IN      u4Byte                                  centFreq,\r
+       IN      u4Byte                                  offset,\r
+       IN      u4Byte                                  span,\r
+       IN      u4Byte                                  seconds\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_AntennaIsolation(\r
+       IN      PBTC_COEXIST                    pBtCoexist,\r
+       IN      u4Byte                                  centFreq,\r
+       IN      u4Byte                                  offset,\r
+       IN      u4Byte                                  span,\r
+       IN      u4Byte                                  seconds\r
+       );\r
+\r
+VOID\r
+EXhalbtc8723b1ant_PSDScan(\r
+       IN      PBTC_COEXIST                    pBtCoexist,\r
+       IN      u4Byte                                  centFreq,\r
+       IN      u4Byte                                  offset,\r
+       IN      u4Byte                                  span,\r
+       IN      u4Byte                                  seconds\r
+       );\r
+VOID\r
+EXhalbtc8723b1ant_DisplayAntDetection(\r
+       IN      PBTC_COEXIST                    pBtCoexist\r
+       );\r
+\r