wifi: renew patch drivers/net/wireless
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rtl8188eu / hal / OUTSRC-BTCoexist / HalBtc8723b1Ant.h
1 //===========================================\r
2 // The following is for 8723B 1ANT BT Co-exist definition\r
3 //===========================================\r
4 #define BT_AUTO_REPORT_ONLY_8723B_1ANT                          1\r
5 \r
6 #define BT_INFO_8723B_1ANT_B_FTP                                                BIT7\r
7 #define BT_INFO_8723B_1ANT_B_A2DP                                       BIT6\r
8 #define BT_INFO_8723B_1ANT_B_HID                                                BIT5\r
9 #define BT_INFO_8723B_1ANT_B_SCO_BUSY                           BIT4\r
10 #define BT_INFO_8723B_1ANT_B_ACL_BUSY                           BIT3\r
11 #define BT_INFO_8723B_1ANT_B_INQ_PAGE                           BIT2\r
12 #define BT_INFO_8723B_1ANT_B_SCO_ESCO                           BIT1\r
13 #define BT_INFO_8723B_1ANT_B_CONNECTION                         BIT0\r
14 \r
15 #define BT_INFO_8723B_1ANT_A2DP_BASIC_RATE(_BT_INFO_EXT_)       \\r
16                 (((_BT_INFO_EXT_&BIT0))? TRUE:FALSE)\r
17 \r
18 #define BTC_RSSI_COEX_THRESH_TOL_8723B_1ANT             2\r
19 \r
20 typedef enum _BT_INFO_SRC_8723B_1ANT{\r
21         BT_INFO_SRC_8723B_1ANT_WIFI_FW                  = 0x0,\r
22         BT_INFO_SRC_8723B_1ANT_BT_RSP                           = 0x1,\r
23         BT_INFO_SRC_8723B_1ANT_BT_ACTIVE_SEND           = 0x2,\r
24         BT_INFO_SRC_8723B_1ANT_MAX\r
25 }BT_INFO_SRC_8723B_1ANT,*PBT_INFO_SRC_8723B_1ANT;\r
26 \r
27 typedef enum _BT_8723B_1ANT_BT_STATUS{\r
28         BT_8723B_1ANT_BT_STATUS_NON_CONNECTED_IDLE      = 0x0,\r
29         BT_8723B_1ANT_BT_STATUS_CONNECTED_IDLE          = 0x1,\r
30         BT_8723B_1ANT_BT_STATUS_INQ_PAGE                                = 0x2,\r
31         BT_8723B_1ANT_BT_STATUS_ACL_BUSY                                = 0x3,\r
32         BT_8723B_1ANT_BT_STATUS_SCO_BUSY                                = 0x4,\r
33         BT_8723B_1ANT_BT_STATUS_ACL_SCO_BUSY                    = 0x5,\r
34         BT_8723B_1ANT_BT_STATUS_MAX\r
35 }BT_8723B_1ANT_BT_STATUS,*PBT_8723B_1ANT_BT_STATUS;\r
36 \r
37 typedef enum _BT_8723B_1ANT_WIFI_STATUS{\r
38         BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_IDLE                            = 0x0,\r
39         BT_8723B_1ANT_WIFI_STATUS_NON_CONNECTED_ASSO_AUTH_SCAN          = 0x1,\r
40         BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SCAN                                        = 0x2,\r
41         BT_8723B_1ANT_WIFI_STATUS_CONNECTED_SPECIAL_PKT                         = 0x3,\r
42         BT_8723B_1ANT_WIFI_STATUS_CONNECTED_IDLE                                        = 0x4,\r
43         BT_8723B_1ANT_WIFI_STATUS_CONNECTED_BUSY                                        = 0x5,\r
44         BT_8723B_1ANT_WIFI_STATUS_MAX\r
45 }BT_8723B_1ANT_WIFI_STATUS,*PBT_8723B_1ANT_WIFI_STATUS;\r
46 \r
47 typedef enum _BT_8723B_1ANT_COEX_ALGO{\r
48         BT_8723B_1ANT_COEX_ALGO_UNDEFINED                       = 0x0,\r
49         BT_8723B_1ANT_COEX_ALGO_SCO                             = 0x1,\r
50         BT_8723B_1ANT_COEX_ALGO_HID                             = 0x2,\r
51         BT_8723B_1ANT_COEX_ALGO_A2DP                            = 0x3,\r
52         BT_8723B_1ANT_COEX_ALGO_A2DP_PANHS              = 0x4,\r
53         BT_8723B_1ANT_COEX_ALGO_PANEDR                  = 0x5,\r
54         BT_8723B_1ANT_COEX_ALGO_PANHS                   = 0x6,\r
55         BT_8723B_1ANT_COEX_ALGO_PANEDR_A2DP             = 0x7,\r
56         BT_8723B_1ANT_COEX_ALGO_PANEDR_HID              = 0x8,\r
57         BT_8723B_1ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x9,\r
58         BT_8723B_1ANT_COEX_ALGO_HID_A2DP                        = 0xa,\r
59         BT_8723B_1ANT_COEX_ALGO_MAX                             = 0xb,\r
60 }BT_8723B_1ANT_COEX_ALGO,*PBT_8723B_1ANT_COEX_ALGO;\r
61 \r
62 typedef struct _COEX_DM_8723B_1ANT{\r
63         // fw mechanism\r
64         BOOLEAN         bCurIgnoreWlanAct;\r
65         BOOLEAN         bPreIgnoreWlanAct;\r
66         u1Byte          prePsTdma;\r
67         u1Byte          curPsTdma;\r
68         u1Byte          psTdmaPara[5];\r
69         u1Byte          psTdmaDuAdjType;\r
70         BOOLEAN         bAutoTdmaAdjust;\r
71         BOOLEAN         bPrePsTdmaOn;\r
72         BOOLEAN         bCurPsTdmaOn;\r
73         BOOLEAN         bPreBtAutoReport;\r
74         BOOLEAN         bCurBtAutoReport;\r
75         u1Byte          preLps;\r
76         u1Byte          curLps;\r
77         u1Byte          preRpwm;\r
78         u1Byte          curRpwm;\r
79 \r
80         // sw mechanism\r
81         BOOLEAN         bPreLowPenaltyRa;\r
82         BOOLEAN         bCurLowPenaltyRa;\r
83         u4Byte          preVal0x6c0;\r
84         u4Byte          curVal0x6c0;\r
85         u4Byte          preVal0x6c4;\r
86         u4Byte          curVal0x6c4;\r
87         u4Byte          preVal0x6c8;\r
88         u4Byte          curVal0x6c8;\r
89         u1Byte          preVal0x6cc;\r
90         u1Byte          curVal0x6cc;\r
91         BOOLEAN         bLimitedDig;\r
92 \r
93         u4Byte          backupArfrCnt1; // Auto Rate Fallback Retry cnt\r
94         u4Byte          backupArfrCnt2; // Auto Rate Fallback Retry cnt\r
95         u2Byte          backupRetryLimit;\r
96         u1Byte          backupAmpduMaxTime;\r
97 \r
98         // algorithm related\r
99         u1Byte          preAlgorithm;\r
100         u1Byte          curAlgorithm;\r
101         u1Byte          btStatus;\r
102         u1Byte          wifiChnlInfo[3];\r
103 \r
104         u4Byte          preRaMask;\r
105         u4Byte          curRaMask;\r
106         u1Byte          preArfrType;\r
107         u1Byte          curArfrType;\r
108         u1Byte          preRetryLimitType;\r
109         u1Byte          curRetryLimitType;\r
110         u1Byte          preAmpduTimeType;\r
111         u1Byte          curAmpduTimeType;\r
112 \r
113         u1Byte          errorCondition;\r
114 } COEX_DM_8723B_1ANT, *PCOEX_DM_8723B_1ANT;\r
115 \r
116 typedef struct _COEX_STA_8723B_1ANT{\r
117         BOOLEAN                                 bBtLinkExist;\r
118         BOOLEAN                                 bScoExist;\r
119         BOOLEAN                                 bA2dpExist;\r
120         BOOLEAN                                 bHidExist;\r
121         BOOLEAN                                 bPanExist;\r
122 \r
123         BOOLEAN                                 bUnderLps;\r
124         BOOLEAN                                 bUnderIps;\r
125         u4Byte                                  specialPktPeriodCnt;\r
126         u4Byte                                  highPriorityTx;\r
127         u4Byte                                  highPriorityRx;\r
128         u4Byte                                  lowPriorityTx;\r
129         u4Byte                                  lowPriorityRx;\r
130         u1Byte                                  btRssi;\r
131         u1Byte                                  preBtRssiState;\r
132         u1Byte                                  preWifiRssiState[4];\r
133         BOOLEAN                                 bC2hBtInfoReqSent;\r
134         u1Byte                                  btInfoC2h[BT_INFO_SRC_8723B_1ANT_MAX][10];\r
135         u4Byte                                  btInfoC2hCnt[BT_INFO_SRC_8723B_1ANT_MAX];\r
136         BOOLEAN                                 bC2hBtInquiryPage;\r
137         u1Byte                                  btRetryCnt;\r
138         u1Byte                                  btInfoExt;\r
139         BOOLEAN                                 bWiFiIsHighPriTask;\r
140         BOOLEAN                                 bC2hBtPage;\r
141 }COEX_STA_8723B_1ANT, *PCOEX_STA_8723B_1ANT;\r
142 \r
143 //===========================================\r
144 // The following is interface which will notify coex module.\r
145 //===========================================\r
146 VOID\r
147 EXhalbtc8723b1ant_InitHwConfig(\r
148         IN      PBTC_COEXIST            pBtCoexist\r
149         );\r
150 VOID\r
151 EXhalbtc8723b1ant_InitCoexDm(\r
152         IN      PBTC_COEXIST            pBtCoexist\r
153         );\r
154 VOID\r
155 EXhalbtc8723b1ant_IpsNotify(\r
156         IN      PBTC_COEXIST            pBtCoexist,\r
157         IN      u1Byte                  type\r
158         );\r
159 VOID\r
160 EXhalbtc8723b1ant_LpsNotify(\r
161         IN      PBTC_COEXIST            pBtCoexist,\r
162         IN      u1Byte                  type\r
163         );\r
164 VOID\r
165 EXhalbtc8723b1ant_ScanNotify(\r
166         IN      PBTC_COEXIST            pBtCoexist,\r
167         IN      u1Byte                  type\r
168         );\r
169 VOID\r
170 EXhalbtc8723b1ant_ConnectNotify(\r
171         IN      PBTC_COEXIST            pBtCoexist,\r
172         IN      u1Byte                  type\r
173         );\r
174 VOID\r
175 EXhalbtc8723b1ant_MediaStatusNotify(\r
176         IN      PBTC_COEXIST                    pBtCoexist,\r
177         IN      u1Byte                          type\r
178         );\r
179 VOID\r
180 EXhalbtc8723b1ant_SpecialPacketNotify(\r
181         IN      PBTC_COEXIST                    pBtCoexist,\r
182         IN      u1Byte                          type\r
183         );\r
184 VOID\r
185 EXhalbtc8723b1ant_BtInfoNotify(\r
186         IN      PBTC_COEXIST            pBtCoexist,\r
187         IN      pu1Byte                 tmpBuf,\r
188         IN      u1Byte                  length\r
189         );\r
190 VOID\r
191 EXhalbtc8723b1ant_HaltNotify(\r
192         IN      PBTC_COEXIST                    pBtCoexist\r
193         );\r
194 VOID\r
195 EXhalbtc8723b1ant_PnpNotify(\r
196         IN      PBTC_COEXIST                    pBtCoexist,\r
197         IN      u1Byte                          pnpState\r
198         );\r
199 VOID\r
200 EXhalbtc8723b1ant_CoexDmReset(\r
201         IN      PBTC_COEXIST                    pBtCoexist\r
202         );\r
203 VOID\r
204 EXhalbtc8723b1ant_Periodical(\r
205         IN      PBTC_COEXIST                    pBtCoexist\r
206         );\r
207 VOID\r
208 EXhalbtc8723b1ant_DisplayCoexInfo(\r
209         IN      PBTC_COEXIST            pBtCoexist\r
210         );\r
211 \r