4f2df7a6033d662217ec23e934c384f777aa1d5b
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bu / hal / OUTSRC-BTCoexist / HalBtc8812a1Ant.h
1 //===========================================\r
2 // The following is for 8812A_1ANT BT Co-exist definition\r
3 //===========================================\r
4 #define BT_INFO_8812A_1ANT_B_FTP                                                BIT7\r
5 #define BT_INFO_8812A_1ANT_B_A2DP                                       BIT6\r
6 #define BT_INFO_8812A_1ANT_B_HID                                                BIT5\r
7 #define BT_INFO_8812A_1ANT_B_SCO_BUSY                           BIT4\r
8 #define BT_INFO_8812A_1ANT_B_ACL_BUSY                           BIT3\r
9 #define BT_INFO_8812A_1ANT_B_INQ_PAGE                           BIT2\r
10 #define BT_INFO_8812A_1ANT_B_SCO_ESCO                           BIT1\r
11 #define BT_INFO_8812A_1ANT_B_CONNECTION                         BIT0\r
12 \r
13 #define BT_INFO_8812A_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_)       \\r
14                 (((_BT_INFO_EXT_&BIT0))? TRUE:FALSE)\r
15 \r
16 #define BTC_RSSI_COEX_THRESH_TOL_8812A_1ANT             2\r
17 \r
18 #define BTC_8812A_1ANT_SWITCH_TO_WIFI                           0\r
19 #define BTC_8812A_1ANT_SWITCH_TO_BT                                     1\r
20 \r
21 typedef enum _BT_INFO_SRC_8812A_1ANT{\r
22         BT_INFO_SRC_8812A_1ANT_WIFI_FW                  = 0x0,\r
23         BT_INFO_SRC_8812A_1ANT_BT_RSP                           = 0x1,\r
24         BT_INFO_SRC_8812A_1ANT_BT_ACTIVE_SEND           = 0x2,\r
25         BT_INFO_SRC_8812A_1ANT_MAX\r
26 }BT_INFO_SRC_8812A_1ANT,*PBT_INFO_SRC_8812A_1ANT;\r
27 \r
28 typedef enum _BT_8812A_1ANT_BT_STATUS{\r
29         BT_8812A_1ANT_BT_STATUS_NON_CONNECTED_IDLE      = 0x0,\r
30         BT_8812A_1ANT_BT_STATUS_CONNECTED_IDLE          = 0x1,\r
31         BT_8812A_1ANT_BT_STATUS_INQ_PAGE                                = 0x2,\r
32         BT_8812A_1ANT_BT_STATUS_ACL_BUSY                                = 0x3,\r
33         BT_8812A_1ANT_BT_STATUS_SCO_BUSY                                = 0x4,\r
34         BT_8812A_1ANT_BT_STATUS_ACL_SCO_BUSY                    = 0x5,\r
35         BT_8812A_1ANT_BT_STATUS_MAX\r
36 }BT_8812A_1ANT_BT_STATUS,*PBT_8812A_1ANT_BT_STATUS;\r
37 \r
38 typedef enum _BT_8812A_1ANT_WIFI_STATUS{\r
39         BT_8812A_1ANT_WIFI_STATUS_NON_CONNECTED_IDLE                            = 0x0,\r
40         BT_8812A_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN          = 0x1,\r
41         BT_8812A_1ANT_WIFI_STATUS_CONNECTED_SCAN                                        = 0x2,\r
42         BT_8812A_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT                         = 0x3,\r
43         BT_8812A_1ANT_WIFI_STATUS_CONNECTED_IDLE                                        = 0x4,\r
44         BT_8812A_1ANT_WIFI_STATUS_CONNECTED_BUSY                                        = 0x5,\r
45         BT_8812A_1ANT_WIFI_STATUS_MAX\r
46 }BT_8812A_1ANT_WIFI_STATUS,*PBT_8812A_1ANT_WIFI_STATUS;\r
47 \r
48 typedef enum _BT_8812A_1ANT_COEX_ALGO{\r
49         BT_8812A_1ANT_COEX_ALGO_UNDEFINED                       = 0x0,\r
50         BT_8812A_1ANT_COEX_ALGO_SCO                             = 0x1,\r
51         BT_8812A_1ANT_COEX_ALGO_HID                             = 0x2,\r
52         BT_8812A_1ANT_COEX_ALGO_A2DP                            = 0x3,\r
53         BT_8812A_1ANT_COEX_ALGO_A2DP_PANHS              = 0x4,\r
54         BT_8812A_1ANT_COEX_ALGO_PANEDR                  = 0x5,\r
55         BT_8812A_1ANT_COEX_ALGO_PANHS                   = 0x6,\r
56         BT_8812A_1ANT_COEX_ALGO_PANEDR_A2DP             = 0x7,\r
57         BT_8812A_1ANT_COEX_ALGO_PANEDR_HID              = 0x8,\r
58         BT_8812A_1ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x9,\r
59         BT_8812A_1ANT_COEX_ALGO_HID_A2DP                        = 0xa,\r
60         BT_8812A_1ANT_COEX_ALGO_MAX                             = 0xb,\r
61 }BT_8812A_1ANT_COEX_ALGO,*PBT_8812A_1ANT_COEX_ALGO;\r
62 \r
63 typedef struct _COEX_DM_8812A_1ANT{\r
64         // fw mechanism\r
65         BOOLEAN         bCurIgnoreWlanAct;\r
66         BOOLEAN         bPreIgnoreWlanAct;\r
67         u1Byte          prePsTdma;\r
68         u1Byte          curPsTdma;\r
69         u1Byte          psTdmaPara[5];\r
70         u1Byte          psTdmaDuAdjType;\r
71         BOOLEAN         bResetTdmaAdjust;\r
72         BOOLEAN         bPrePsTdmaOn;\r
73         BOOLEAN         bCurPsTdmaOn;\r
74         BOOLEAN         bPreBtAutoReport;\r
75         BOOLEAN         bCurBtAutoReport;\r
76         u1Byte          preLps;\r
77         u1Byte          curLps;\r
78         u1Byte          preRpwm;\r
79         u1Byte          curRpwm;\r
80 \r
81         // sw mechanism\r
82         BOOLEAN         bPreLowPenaltyRa;\r
83         BOOLEAN         bCurLowPenaltyRa;\r
84         BOOLEAN         bPreDacSwingOn;\r
85         u4Byte          preVal0x6c0;\r
86         u4Byte          curVal0x6c0;\r
87         u4Byte          preVal0x6c4;\r
88         u4Byte          curVal0x6c4;\r
89         u4Byte          preVal0x6c8;\r
90         u4Byte          curVal0x6c8;\r
91         u1Byte          preVal0x6cc;\r
92         u1Byte          curVal0x6cc;\r
93 \r
94         // algorithm related\r
95         u1Byte          preAlgorithm;\r
96         u1Byte          curAlgorithm;\r
97         u1Byte          btStatus;\r
98         u1Byte          wifiChnlInfo[3];\r
99 \r
100         u4Byte          preRaMask;\r
101         u4Byte          curRaMask;\r
102 \r
103         u1Byte          errorCondition;\r
104 } COEX_DM_8812A_1ANT, *PCOEX_DM_8812A_1ANT;\r
105 \r
106 typedef struct _COEX_STA_8812A_1ANT{\r
107         BOOLEAN                                 bBtLinkExist;\r
108         BOOLEAN                                 bScoExist;\r
109         BOOLEAN                                 bA2dpExist;\r
110         BOOLEAN                                 bHidExist;\r
111         BOOLEAN                                 bPanExist;\r
112 \r
113         BOOLEAN                                 bUnderLps;\r
114         BOOLEAN                                 bUnderIps;\r
115         u4Byte                                  highPriorityTx;\r
116         u4Byte                                  highPriorityRx;\r
117         u4Byte                                  lowPriorityTx;\r
118         u4Byte                                  lowPriorityRx;\r
119         u1Byte                                  btRssi;\r
120         u1Byte                                  preBtRssiState;\r
121         u1Byte                                  preWifiRssiState[4];\r
122         BOOLEAN                                 bC2hBtInfoReqSent;\r
123         u1Byte                                  btInfoC2h[BT_INFO_SRC_8812A_1ANT_MAX][10];\r
124         u4Byte                                  btInfoC2hCnt[BT_INFO_SRC_8812A_1ANT_MAX];\r
125         u4Byte                                  btInfoQueryCnt;\r
126         BOOLEAN                                 bC2hBtInquiryPage;\r
127         u1Byte                                  btRetryCnt;\r
128         u1Byte                                  btInfoExt;\r
129 }COEX_STA_8812A_1ANT, *PCOEX_STA_8812A_1ANT;\r
130 \r
131 //===========================================\r
132 // The following is interface which will notify coex module.\r
133 //===========================================\r
134 VOID\r
135 EXhalbtc8812a1ant_PowerOnSetting(\r
136         IN      PBTC_COEXIST            pBtCoexist\r
137         );\r
138 VOID\r
139 EXhalbtc8812a1ant_InitHwConfig(\r
140         IN      PBTC_COEXIST            pBtCoexist,\r
141         IN      BOOLEAN                         bWifiOnly\r
142         );\r
143 VOID\r
144 EXhalbtc8812a1ant_InitCoexDm(\r
145         IN      PBTC_COEXIST            pBtCoexist\r
146         );\r
147 VOID\r
148 EXhalbtc8812a1ant_IpsNotify(\r
149         IN      PBTC_COEXIST            pBtCoexist,\r
150         IN      u1Byte                  type\r
151         );\r
152 VOID\r
153 EXhalbtc8812a1ant_LpsNotify(\r
154         IN      PBTC_COEXIST            pBtCoexist,\r
155         IN      u1Byte                  type\r
156         );\r
157 VOID\r
158 EXhalbtc8812a1ant_ScanNotify(\r
159         IN      PBTC_COEXIST            pBtCoexist,\r
160         IN      u1Byte                  type\r
161         );\r
162 VOID\r
163 EXhalbtc8812a1ant_ConnectNotify(\r
164         IN      PBTC_COEXIST            pBtCoexist,\r
165         IN      u1Byte                  type\r
166         );\r
167 VOID\r
168 EXhalbtc8812a1ant_MediaStatusNotify(\r
169         IN      PBTC_COEXIST                    pBtCoexist,\r
170         IN      u1Byte                          type\r
171         );\r
172 VOID\r
173 EXhalbtc8812a1ant_SpecialPacketNotify(\r
174         IN      PBTC_COEXIST                    pBtCoexist,\r
175         IN      u1Byte                          type\r
176         );\r
177 VOID\r
178 EXhalbtc8812a1ant_BtInfoNotify(\r
179         IN      PBTC_COEXIST            pBtCoexist,\r
180         IN      pu1Byte                 tmpBuf,\r
181         IN      u1Byte                  length\r
182         );\r
183 VOID\r
184 EXhalbtc8812a1ant_HaltNotify(\r
185         IN      PBTC_COEXIST                    pBtCoexist\r
186         );\r
187 VOID\r
188 EXhalbtc8812a1ant_PnpNotify(\r
189         IN      PBTC_COEXIST                    pBtCoexist,\r
190         IN      u1Byte                          pnpState\r
191         );\r
192 VOID\r
193 EXhalbtc8812a1ant_Periodical(\r
194         IN      PBTC_COEXIST                    pBtCoexist\r
195         );\r
196 VOID\r
197 EXhalbtc8812a1ant_DisplayCoexInfo(\r
198         IN      PBTC_COEXIST            pBtCoexist\r
199         );\r
200 VOID\r
201 EXhalbtc8812a1ant_DbgControl(\r
202         IN      PBTC_COEXIST                    pBtCoexist,\r
203         IN      u1Byte                          opCode,\r
204         IN      u1Byte                          opLen,\r
205         IN      pu1Byte                         pData\r
206         );\r