halbtcoutsrc.h 31 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276
  1. /******************************************************************************
  2. *
  3. * Copyright(c) 2016 - 2017 Realtek Corporation.
  4. *
  5. * This program is free software; you can redistribute it and/or modify it
  6. * under the terms of version 2 of the GNU General Public License as
  7. * published by the Free Software Foundation.
  8. *
  9. * This program is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  12. * more details.
  13. *
  14. *****************************************************************************/
  15. #ifndef __HALBTC_OUT_SRC_H__
  16. #define __HALBTC_OUT_SRC_H__
  17. enum {
  18. BTC_CCK_1,
  19. BTC_CCK_2,
  20. BTC_CCK_5_5,
  21. BTC_CCK_11,
  22. BTC_OFDM_6,
  23. BTC_OFDM_9,
  24. BTC_OFDM_12,
  25. BTC_OFDM_18,
  26. BTC_OFDM_24,
  27. BTC_OFDM_36,
  28. BTC_OFDM_48,
  29. BTC_OFDM_54,
  30. BTC_MCS_0,
  31. BTC_MCS_1,
  32. BTC_MCS_2,
  33. BTC_MCS_3,
  34. BTC_MCS_4,
  35. BTC_MCS_5,
  36. BTC_MCS_6,
  37. BTC_MCS_7,
  38. BTC_MCS_8,
  39. BTC_MCS_9,
  40. BTC_MCS_10,
  41. BTC_MCS_11,
  42. BTC_MCS_12,
  43. BTC_MCS_13,
  44. BTC_MCS_14,
  45. BTC_MCS_15,
  46. BTC_MCS_16,
  47. BTC_MCS_17,
  48. BTC_MCS_18,
  49. BTC_MCS_19,
  50. BTC_MCS_20,
  51. BTC_MCS_21,
  52. BTC_MCS_22,
  53. BTC_MCS_23,
  54. BTC_MCS_24,
  55. BTC_MCS_25,
  56. BTC_MCS_26,
  57. BTC_MCS_27,
  58. BTC_MCS_28,
  59. BTC_MCS_29,
  60. BTC_MCS_30,
  61. BTC_MCS_31,
  62. BTC_VHT_1SS_MCS_0,
  63. BTC_VHT_1SS_MCS_1,
  64. BTC_VHT_1SS_MCS_2,
  65. BTC_VHT_1SS_MCS_3,
  66. BTC_VHT_1SS_MCS_4,
  67. BTC_VHT_1SS_MCS_5,
  68. BTC_VHT_1SS_MCS_6,
  69. BTC_VHT_1SS_MCS_7,
  70. BTC_VHT_1SS_MCS_8,
  71. BTC_VHT_1SS_MCS_9,
  72. BTC_VHT_2SS_MCS_0,
  73. BTC_VHT_2SS_MCS_1,
  74. BTC_VHT_2SS_MCS_2,
  75. BTC_VHT_2SS_MCS_3,
  76. BTC_VHT_2SS_MCS_4,
  77. BTC_VHT_2SS_MCS_5,
  78. BTC_VHT_2SS_MCS_6,
  79. BTC_VHT_2SS_MCS_7,
  80. BTC_VHT_2SS_MCS_8,
  81. BTC_VHT_2SS_MCS_9,
  82. BTC_VHT_3SS_MCS_0,
  83. BTC_VHT_3SS_MCS_1,
  84. BTC_VHT_3SS_MCS_2,
  85. BTC_VHT_3SS_MCS_3,
  86. BTC_VHT_3SS_MCS_4,
  87. BTC_VHT_3SS_MCS_5,
  88. BTC_VHT_3SS_MCS_6,
  89. BTC_VHT_3SS_MCS_7,
  90. BTC_VHT_3SS_MCS_8,
  91. BTC_VHT_3SS_MCS_9,
  92. BTC_VHT_4SS_MCS_0,
  93. BTC_VHT_4SS_MCS_1,
  94. BTC_VHT_4SS_MCS_2,
  95. BTC_VHT_4SS_MCS_3,
  96. BTC_VHT_4SS_MCS_4,
  97. BTC_VHT_4SS_MCS_5,
  98. BTC_VHT_4SS_MCS_6,
  99. BTC_VHT_4SS_MCS_7,
  100. BTC_VHT_4SS_MCS_8,
  101. BTC_VHT_4SS_MCS_9,
  102. BTC_MCS_32,
  103. BTC_UNKNOWN,
  104. BTC_PKT_MGNT,
  105. BTC_PKT_CTRL,
  106. BTC_PKT_UNKNOWN,
  107. BTC_PKT_NOT_FOR_ME,
  108. BTC_RATE_MAX
  109. };
  110. enum {
  111. BTC_MULTIPORT_SCC,
  112. BTC_MULTIPORT_MCC_DUAL_CHANNEL,
  113. BTC_MULTIPORT_MCC_DUAL_BAND,
  114. BTC_MULTIPORT_MAX
  115. };
  116. #define BTC_COEX_OFFLOAD 0
  117. #define BTC_TMP_BUF_SHORT 20
  118. extern u1Byte gl_btc_trace_buf[];
  119. #define BTC_SPRINTF rsprintf
  120. #define BTC_TRACE(_MSG_)\
  121. do {\
  122. if (GLBtcDbgType[COMP_COEX] & BIT(DBG_LOUD)) {\
  123. RTW_INFO("%s", _MSG_);\
  124. } \
  125. } while (0)
  126. #define BT_PrintData(adapter, _MSG_, len, data) RTW_DBG_DUMP((_MSG_), data, len)
  127. #define NORMAL_EXEC FALSE
  128. #define FORCE_EXEC TRUE
  129. #define NM_EXCU FALSE
  130. #define FC_EXCU TRUE
  131. #define BTC_RF_OFF 0x0
  132. #define BTC_RF_ON 0x1
  133. #define BTC_RF_A 0x0
  134. #define BTC_RF_B 0x1
  135. #define BTC_RF_C 0x2
  136. #define BTC_RF_D 0x3
  137. #define BTC_SMSP SINGLEMAC_SINGLEPHY
  138. #define BTC_DMDP DUALMAC_DUALPHY
  139. #define BTC_DMSP DUALMAC_SINGLEPHY
  140. #define BTC_MP_UNKNOWN 0xff
  141. #define BT_COEX_ANT_TYPE_PG 0
  142. #define BT_COEX_ANT_TYPE_ANTDIV 1
  143. #define BT_COEX_ANT_TYPE_DETECTED 2
  144. #define BTC_MIMO_PS_STATIC 0 /* 1ss */
  145. #define BTC_MIMO_PS_DYNAMIC 1 /* 2ss */
  146. #define BTC_RATE_DISABLE 0
  147. #define BTC_RATE_ENABLE 1
  148. /* single Antenna definition */
  149. #define BTC_ANT_PATH_WIFI 0
  150. #define BTC_ANT_PATH_BT 1
  151. #define BTC_ANT_PATH_PTA 2
  152. #define BTC_ANT_PATH_WIFI5G 3
  153. #define BTC_ANT_PATH_AUTO 4
  154. /* dual Antenna definition */
  155. #define BTC_ANT_WIFI_AT_MAIN 0
  156. #define BTC_ANT_WIFI_AT_AUX 1
  157. #define BTC_ANT_WIFI_AT_DIVERSITY 2
  158. /* coupler Antenna definition */
  159. #define BTC_ANT_WIFI_AT_CPL_MAIN 0
  160. #define BTC_ANT_WIFI_AT_CPL_AUX 1
  161. typedef enum _BTC_POWERSAVE_TYPE {
  162. BTC_PS_WIFI_NATIVE = 0, /* wifi original power save behavior */
  163. BTC_PS_LPS_ON = 1,
  164. BTC_PS_LPS_OFF = 2,
  165. BTC_PS_MAX
  166. } BTC_POWERSAVE_TYPE, *PBTC_POWERSAVE_TYPE;
  167. typedef enum _BTC_BT_REG_TYPE {
  168. BTC_BT_REG_RF = 0,
  169. BTC_BT_REG_MODEM = 1,
  170. BTC_BT_REG_BLUEWIZE = 2,
  171. BTC_BT_REG_VENDOR = 3,
  172. BTC_BT_REG_LE = 4,
  173. BTC_BT_REG_MAX
  174. } BTC_BT_REG_TYPE, *PBTC_BT_REG_TYPE;
  175. typedef enum _BTC_CHIP_INTERFACE {
  176. BTC_INTF_UNKNOWN = 0,
  177. BTC_INTF_PCI = 1,
  178. BTC_INTF_USB = 2,
  179. BTC_INTF_SDIO = 3,
  180. BTC_INTF_MAX
  181. } BTC_CHIP_INTERFACE, *PBTC_CHIP_INTERFACE;
  182. typedef enum _BTC_CHIP_TYPE {
  183. BTC_CHIP_UNDEF = 0,
  184. BTC_CHIP_CSR_BC4 = 1,
  185. BTC_CHIP_CSR_BC8 = 2,
  186. BTC_CHIP_RTL8723A = 3,
  187. BTC_CHIP_RTL8821 = 4,
  188. BTC_CHIP_RTL8723B = 5,
  189. BTC_CHIP_MAX
  190. } BTC_CHIP_TYPE, *PBTC_CHIP_TYPE;
  191. /* following is for wifi link status */
  192. #define WIFI_STA_CONNECTED BIT0
  193. #define WIFI_AP_CONNECTED BIT1
  194. #define WIFI_HS_CONNECTED BIT2
  195. #define WIFI_P2P_GO_CONNECTED BIT3
  196. #define WIFI_P2P_GC_CONNECTED BIT4
  197. /* following is for command line utility */
  198. #define CL_SPRINTF rsprintf
  199. #define CL_PRINTF DCMD_Printf
  200. #define CL_STRNCAT(dst, dst_size, src, src_size) rstrncat(dst, src, src_size)
  201. struct btc_board_info {
  202. /* The following is some board information */
  203. u8 bt_chip_type;
  204. u8 pg_ant_num; /* pg ant number */
  205. u8 btdm_ant_num; /* ant number for btdm */
  206. u8 btdm_ant_num_by_ant_det; /* ant number for btdm after antenna detection */
  207. u8 btdm_ant_pos; /* Bryant Add to indicate Antenna Position for (pg_ant_num = 2) && (btdm_ant_num =1) (DPDT+1Ant case) */
  208. u8 single_ant_path; /* current used for 8723b only, 1=>s0, 0=>s1 */
  209. boolean tfbga_package; /* for Antenna detect threshold */
  210. boolean btdm_ant_det_finish;
  211. boolean btdm_ant_det_already_init_phydm;
  212. u8 ant_type;
  213. u8 rfe_type;
  214. u8 ant_div_cfg;
  215. boolean btdm_ant_det_complete_fail;
  216. u8 ant_det_result;
  217. boolean ant_det_result_five_complete;
  218. u32 antdetval;
  219. u8 customerID;
  220. u8 customer_id;
  221. };
  222. typedef enum _BTC_DBG_OPCODE {
  223. BTC_DBG_SET_COEX_NORMAL = 0x0,
  224. BTC_DBG_SET_COEX_WIFI_ONLY = 0x1,
  225. BTC_DBG_SET_COEX_BT_ONLY = 0x2,
  226. BTC_DBG_SET_COEX_DEC_BT_PWR = 0x3,
  227. BTC_DBG_SET_COEX_BT_AFH_MAP = 0x4,
  228. BTC_DBG_SET_COEX_BT_IGNORE_WLAN_ACT = 0x5,
  229. BTC_DBG_SET_COEX_MANUAL_CTRL = 0x6,
  230. BTC_DBG_MAX
  231. } BTC_DBG_OPCODE, *PBTC_DBG_OPCODE;
  232. typedef enum _BTC_RSSI_STATE {
  233. BTC_RSSI_STATE_HIGH = 0x0,
  234. BTC_RSSI_STATE_MEDIUM = 0x1,
  235. BTC_RSSI_STATE_LOW = 0x2,
  236. BTC_RSSI_STATE_STAY_HIGH = 0x3,
  237. BTC_RSSI_STATE_STAY_MEDIUM = 0x4,
  238. BTC_RSSI_STATE_STAY_LOW = 0x5,
  239. BTC_RSSI_MAX
  240. } BTC_RSSI_STATE, *PBTC_RSSI_STATE;
  241. #define BTC_RSSI_HIGH(_rssi_) ((_rssi_ == BTC_RSSI_STATE_HIGH || _rssi_ == BTC_RSSI_STATE_STAY_HIGH) ? TRUE:FALSE)
  242. #define BTC_RSSI_MEDIUM(_rssi_) ((_rssi_ == BTC_RSSI_STATE_MEDIUM || _rssi_ == BTC_RSSI_STATE_STAY_MEDIUM) ? TRUE:FALSE)
  243. #define BTC_RSSI_LOW(_rssi_) ((_rssi_ == BTC_RSSI_STATE_LOW || _rssi_ == BTC_RSSI_STATE_STAY_LOW) ? TRUE:FALSE)
  244. typedef enum _BTC_WIFI_ROLE {
  245. BTC_ROLE_STATION = 0x0,
  246. BTC_ROLE_AP = 0x1,
  247. BTC_ROLE_IBSS = 0x2,
  248. BTC_ROLE_HS_MODE = 0x3,
  249. BTC_ROLE_MAX
  250. } BTC_WIFI_ROLE, *PBTC_WIFI_ROLE;
  251. typedef enum _BTC_WIRELESS_FREQ {
  252. BTC_FREQ_2_4G = 0x0,
  253. BTC_FREQ_5G = 0x1,
  254. BTC_FREQ_25G = 0x2,
  255. BTC_FREQ_MAX
  256. } BTC_WIRELESS_FREQ, *PBTC_WIRELESS_FREQ;
  257. typedef enum _BTC_WIFI_BW_MODE {
  258. BTC_WIFI_BW_LEGACY = 0x0,
  259. BTC_WIFI_BW_HT20 = 0x1,
  260. BTC_WIFI_BW_HT40 = 0x2,
  261. BTC_WIFI_BW_HT80 = 0x3,
  262. BTC_WIFI_BW_HT160 = 0x4,
  263. BTC_WIFI_BW_MAX
  264. } BTC_WIFI_BW_MODE, *PBTC_WIFI_BW_MODE;
  265. typedef enum _BTC_WIFI_TRAFFIC_DIR {
  266. BTC_WIFI_TRAFFIC_TX = 0x0,
  267. BTC_WIFI_TRAFFIC_RX = 0x1,
  268. BTC_WIFI_TRAFFIC_MAX
  269. } BTC_WIFI_TRAFFIC_DIR, *PBTC_WIFI_TRAFFIC_DIR;
  270. typedef enum _BTC_WIFI_PNP {
  271. BTC_WIFI_PNP_WAKE_UP = 0x0,
  272. BTC_WIFI_PNP_SLEEP = 0x1,
  273. BTC_WIFI_PNP_SLEEP_KEEP_ANT = 0x2,
  274. BTC_WIFI_PNP_WOWLAN = 0x3,
  275. BTC_WIFI_PNP_MAX
  276. } BTC_WIFI_PNP, *PBTC_WIFI_PNP;
  277. typedef enum _BTC_IOT_PEER {
  278. BTC_IOT_PEER_UNKNOWN = 0,
  279. BTC_IOT_PEER_REALTEK = 1,
  280. BTC_IOT_PEER_REALTEK_92SE = 2,
  281. BTC_IOT_PEER_BROADCOM = 3,
  282. BTC_IOT_PEER_RALINK = 4,
  283. BTC_IOT_PEER_ATHEROS = 5,
  284. BTC_IOT_PEER_CISCO = 6,
  285. BTC_IOT_PEER_MERU = 7,
  286. BTC_IOT_PEER_MARVELL = 8,
  287. BTC_IOT_PEER_REALTEK_SOFTAP = 9, /* peer is RealTek SOFT_AP, by Bohn, 2009.12.17 */
  288. BTC_IOT_PEER_SELF_SOFTAP = 10, /* Self is SoftAP */
  289. BTC_IOT_PEER_AIRGO = 11,
  290. BTC_IOT_PEER_INTEL = 12,
  291. BTC_IOT_PEER_RTK_APCLIENT = 13,
  292. BTC_IOT_PEER_REALTEK_81XX = 14,
  293. BTC_IOT_PEER_REALTEK_WOW = 15,
  294. BTC_IOT_PEER_REALTEK_JAGUAR_BCUTAP = 16,
  295. BTC_IOT_PEER_REALTEK_JAGUAR_CCUTAP = 17,
  296. BTC_IOT_PEER_MAX,
  297. } BTC_IOT_PEER, *PBTC_IOT_PEER;
  298. /* for 8723b-d cut large current issue */
  299. typedef enum _BTC_WIFI_COEX_STATE {
  300. BTC_WIFI_STAT_INIT,
  301. BTC_WIFI_STAT_IQK,
  302. BTC_WIFI_STAT_NORMAL_OFF,
  303. BTC_WIFI_STAT_MP_OFF,
  304. BTC_WIFI_STAT_NORMAL,
  305. BTC_WIFI_STAT_ANT_DIV,
  306. BTC_WIFI_STAT_MAX
  307. } BTC_WIFI_COEX_STATE, *PBTC_WIFI_COEX_STATE;
  308. typedef enum _BTC_ANT_TYPE {
  309. BTC_ANT_TYPE_0,
  310. BTC_ANT_TYPE_1,
  311. BTC_ANT_TYPE_2,
  312. BTC_ANT_TYPE_3,
  313. BTC_ANT_TYPE_4,
  314. BTC_ANT_TYPE_MAX
  315. } BTC_ANT_TYPE, *PBTC_ANT_TYPE;
  316. typedef enum _BTC_VENDOR {
  317. BTC_VENDOR_LENOVO,
  318. BTC_VENDOR_ASUS,
  319. BTC_VENDOR_OTHER
  320. } BTC_VENDOR, *PBTC_VENDOR;
  321. /* defined for BFP_BTC_GET */
  322. typedef enum _BTC_GET_TYPE {
  323. /* type BOOLEAN */
  324. BTC_GET_BL_HS_OPERATION,
  325. BTC_GET_BL_HS_CONNECTING,
  326. BTC_GET_BL_WIFI_FW_READY,
  327. BTC_GET_BL_WIFI_CONNECTED,
  328. BTC_GET_BL_WIFI_DUAL_BAND_CONNECTED,
  329. BTC_GET_BL_WIFI_LINK_INFO,
  330. BTC_GET_BL_WIFI_BUSY,
  331. BTC_GET_BL_WIFI_SCAN,
  332. BTC_GET_BL_WIFI_LINK,
  333. BTC_GET_BL_WIFI_ROAM,
  334. BTC_GET_BL_WIFI_4_WAY_PROGRESS,
  335. BTC_GET_BL_WIFI_UNDER_5G,
  336. BTC_GET_BL_WIFI_AP_MODE_ENABLE,
  337. BTC_GET_BL_WIFI_ENABLE_ENCRYPTION,
  338. BTC_GET_BL_WIFI_UNDER_B_MODE,
  339. BTC_GET_BL_EXT_SWITCH,
  340. BTC_GET_BL_WIFI_IS_IN_MP_MODE,
  341. BTC_GET_BL_IS_ASUS_8723B,
  342. BTC_GET_BL_RF4CE_CONNECTED,
  343. BTC_GET_BL_WIFI_LW_PWR_STATE,
  344. /* type s4Byte */
  345. BTC_GET_S4_WIFI_RSSI,
  346. BTC_GET_S4_HS_RSSI,
  347. /* type u4Byte */
  348. BTC_GET_U4_WIFI_BW,
  349. BTC_GET_U4_WIFI_TRAFFIC_DIRECTION,
  350. BTC_GET_U4_WIFI_FW_VER,
  351. BTC_GET_U4_WIFI_LINK_STATUS,
  352. BTC_GET_U4_BT_PATCH_VER,
  353. BTC_GET_U4_VENDOR,
  354. BTC_GET_U4_SUPPORTED_VERSION,
  355. BTC_GET_U4_SUPPORTED_FEATURE,
  356. BTC_GET_U4_BT_DEVICE_INFO,
  357. BTC_GET_U4_BT_FORBIDDEN_SLOT_VAL,
  358. BTC_GET_U4_WIFI_IQK_TOTAL,
  359. BTC_GET_U4_WIFI_IQK_OK,
  360. BTC_GET_U4_WIFI_IQK_FAIL,
  361. /* type u1Byte */
  362. BTC_GET_U1_WIFI_DOT11_CHNL,
  363. BTC_GET_U1_WIFI_CENTRAL_CHNL,
  364. BTC_GET_U1_WIFI_HS_CHNL,
  365. BTC_GET_U1_WIFI_P2P_CHNL,
  366. BTC_GET_U1_MAC_PHY_MODE,
  367. BTC_GET_U1_AP_NUM,
  368. BTC_GET_U1_ANT_TYPE,
  369. BTC_GET_U1_IOT_PEER,
  370. /* type u2Byte */
  371. BTC_GET_U2_BEACON_PERIOD,
  372. /*===== for 1Ant ======*/
  373. BTC_GET_U1_LPS_MODE,
  374. BTC_GET_MAX
  375. } BTC_GET_TYPE, *PBTC_GET_TYPE;
  376. /* defined for BFP_BTC_SET */
  377. typedef enum _BTC_SET_TYPE {
  378. /* type BOOLEAN */
  379. BTC_SET_BL_BT_DISABLE,
  380. BTC_SET_BL_BT_ENABLE_DISABLE_CHANGE,
  381. BTC_SET_BL_BT_TRAFFIC_BUSY,
  382. BTC_SET_BL_BT_LIMITED_DIG,
  383. BTC_SET_BL_FORCE_TO_ROAM,
  384. BTC_SET_BL_TO_REJ_AP_AGG_PKT,
  385. BTC_SET_BL_BT_CTRL_AGG_SIZE,
  386. BTC_SET_BL_INC_SCAN_DEV_NUM,
  387. BTC_SET_BL_BT_TX_RX_MASK,
  388. BTC_SET_BL_MIRACAST_PLUS_BT,
  389. BTC_SET_BL_BT_LNA_CONSTRAIN_LEVEL,
  390. /* type u1Byte */
  391. BTC_SET_U1_RSSI_ADJ_VAL_FOR_AGC_TABLE_ON,
  392. BTC_SET_U1_AGG_BUF_SIZE,
  393. /* type trigger some action */
  394. BTC_SET_ACT_GET_BT_RSSI,
  395. BTC_SET_ACT_AGGREGATE_CTRL,
  396. BTC_SET_ACT_ANTPOSREGRISTRY_CTRL,
  397. // for mimo ps mode setting
  398. BTC_SET_MIMO_PS_MODE,
  399. /*===== for 1Ant ======*/
  400. /* type BOOLEAN */
  401. /* type u1Byte */
  402. BTC_SET_U1_RSSI_ADJ_VAL_FOR_1ANT_COEX_TYPE,
  403. BTC_SET_U1_LPS_VAL,
  404. BTC_SET_U1_RPWM_VAL,
  405. /* type trigger some action */
  406. BTC_SET_ACT_LEAVE_LPS,
  407. BTC_SET_ACT_ENTER_LPS,
  408. BTC_SET_ACT_NORMAL_LPS,
  409. BTC_SET_ACT_PRE_NORMAL_LPS,
  410. BTC_SET_ACT_POST_NORMAL_LPS,
  411. BTC_SET_ACT_DISABLE_LOW_POWER,
  412. BTC_SET_ACT_UPDATE_RAMASK,
  413. BTC_SET_ACT_SEND_MIMO_PS,
  414. /* BT Coex related */
  415. BTC_SET_ACT_CTRL_BT_INFO,
  416. BTC_SET_ACT_CTRL_BT_COEX,
  417. BTC_SET_ACT_CTRL_8723B_ANT,
  418. /*=================*/
  419. BTC_SET_MAX
  420. } BTC_SET_TYPE, *PBTC_SET_TYPE;
  421. typedef enum _BTC_DBG_DISP_TYPE {
  422. BTC_DBG_DISP_COEX_STATISTICS = 0x0,
  423. BTC_DBG_DISP_BT_LINK_INFO = 0x1,
  424. BTC_DBG_DISP_WIFI_STATUS = 0x2,
  425. BTC_DBG_DISP_MAX
  426. } BTC_DBG_DISP_TYPE, *PBTC_DBG_DISP_TYPE;
  427. typedef enum _BTC_NOTIFY_TYPE_IPS {
  428. BTC_IPS_LEAVE = 0x0,
  429. BTC_IPS_ENTER = 0x1,
  430. BTC_IPS_MAX
  431. } BTC_NOTIFY_TYPE_IPS, *PBTC_NOTIFY_TYPE_IPS;
  432. typedef enum _BTC_NOTIFY_TYPE_LPS {
  433. BTC_LPS_DISABLE = 0x0,
  434. BTC_LPS_ENABLE = 0x1,
  435. BTC_LPS_MAX
  436. } BTC_NOTIFY_TYPE_LPS, *PBTC_NOTIFY_TYPE_LPS;
  437. typedef enum _BTC_NOTIFY_TYPE_SCAN {
  438. BTC_SCAN_FINISH = 0x0,
  439. BTC_SCAN_START = 0x1,
  440. BTC_SCAN_START_2G = 0x2,
  441. BTC_SCAN_START_5G = 0x3,
  442. BTC_SCAN_MAX
  443. } BTC_NOTIFY_TYPE_SCAN, *PBTC_NOTIFY_TYPE_SCAN;
  444. typedef enum _BTC_NOTIFY_TYPE_SWITCHBAND {
  445. BTC_NOT_SWITCH = 0x0,
  446. BTC_SWITCH_TO_24G = 0x1,
  447. BTC_SWITCH_TO_5G = 0x2,
  448. BTC_SWITCH_TO_24G_NOFORSCAN = 0x3,
  449. BTC_SWITCH_MAX
  450. } BTC_NOTIFY_TYPE_SWITCHBAND, *PBTC_NOTIFY_TYPE_SWITCHBAND;
  451. typedef enum _BTC_NOTIFY_TYPE_ASSOCIATE {
  452. BTC_ASSOCIATE_FINISH = 0x0,
  453. BTC_ASSOCIATE_START = 0x1,
  454. BTC_ASSOCIATE_5G_FINISH = 0x2,
  455. BTC_ASSOCIATE_5G_START = 0x3,
  456. BTC_ASSOCIATE_MAX
  457. } BTC_NOTIFY_TYPE_ASSOCIATE, *PBTC_NOTIFY_TYPE_ASSOCIATE;
  458. typedef enum _BTC_NOTIFY_TYPE_MEDIA_STATUS {
  459. BTC_MEDIA_DISCONNECT = 0x0,
  460. BTC_MEDIA_CONNECT = 0x1,
  461. BTC_MEDIA_CONNECT_5G = 0x02,
  462. BTC_MEDIA_MAX
  463. } BTC_NOTIFY_TYPE_MEDIA_STATUS, *PBTC_NOTIFY_TYPE_MEDIA_STATUS;
  464. typedef enum _BTC_NOTIFY_TYPE_SPECIFIC_PACKET {
  465. BTC_PACKET_UNKNOWN = 0x0,
  466. BTC_PACKET_DHCP = 0x1,
  467. BTC_PACKET_ARP = 0x2,
  468. BTC_PACKET_EAPOL = 0x3,
  469. BTC_PACKET_MAX
  470. } BTC_NOTIFY_TYPE_SPECIFIC_PACKET, *PBTC_NOTIFY_TYPE_SPECIFIC_PACKET;
  471. typedef enum _BTC_NOTIFY_TYPE_STACK_OPERATION {
  472. BTC_STACK_OP_NONE = 0x0,
  473. BTC_STACK_OP_INQ_PAGE_PAIR_START = 0x1,
  474. BTC_STACK_OP_INQ_PAGE_PAIR_FINISH = 0x2,
  475. BTC_STACK_OP_MAX
  476. } BTC_NOTIFY_TYPE_STACK_OPERATION, *PBTC_NOTIFY_TYPE_STACK_OPERATION;
  477. /* Bryant Add */
  478. typedef enum _BTC_ANTENNA_POS {
  479. BTC_ANTENNA_AT_MAIN_PORT = 0x1,
  480. BTC_ANTENNA_AT_AUX_PORT = 0x2,
  481. } BTC_ANTENNA_POS, *PBTC_ANTENNA_POS;
  482. /* Bryant Add */
  483. typedef enum _BTC_BT_OFFON {
  484. BTC_BT_OFF = 0x0,
  485. BTC_BT_ON = 0x1,
  486. } BTC_BTOFFON, *PBTC_BT_OFFON;
  487. #define BTC_5G_BAND 0x80
  488. /*==================================================
  489. For following block is for coex offload
  490. ==================================================*/
  491. typedef struct _COL_H2C {
  492. u1Byte opcode;
  493. u1Byte opcode_ver:4;
  494. u1Byte req_num:4;
  495. u1Byte buf[1];
  496. } COL_H2C, *PCOL_H2C;
  497. #define COL_C2H_ACK_HDR_LEN 3
  498. typedef struct _COL_C2H_ACK {
  499. u1Byte status;
  500. u1Byte opcode_ver:4;
  501. u1Byte req_num:4;
  502. u1Byte ret_len;
  503. u1Byte buf[1];
  504. } COL_C2H_ACK, *PCOL_C2H_ACK;
  505. #define COL_C2H_IND_HDR_LEN 3
  506. typedef struct _COL_C2H_IND {
  507. u1Byte type;
  508. u1Byte version;
  509. u1Byte length;
  510. u1Byte data[1];
  511. } COL_C2H_IND, *PCOL_C2H_IND;
  512. /*============================================
  513. NOTE: for debug message, the following define should match
  514. the strings in coexH2cResultString.
  515. ============================================*/
  516. typedef enum _COL_H2C_STATUS {
  517. /* c2h status */
  518. COL_STATUS_C2H_OK = 0x00, /* Wifi received H2C request and check content ok. */
  519. COL_STATUS_C2H_UNKNOWN = 0x01, /* Not handled routine */
  520. COL_STATUS_C2H_UNKNOWN_OPCODE = 0x02, /* Invalid OP code, It means that wifi firmware received an undefiend OP code. */
  521. COL_STATUS_C2H_OPCODE_VER_MISMATCH = 0x03, /* Wifi firmware and wifi driver mismatch, need to update wifi driver or wifi or. */
  522. COL_STATUS_C2H_PARAMETER_ERROR = 0x04, /* Error paraneter.(ex: parameters = NULL but it should have values) */
  523. COL_STATUS_C2H_PARAMETER_OUT_OF_RANGE = 0x05, /* Wifi firmware needs to check the parameters from H2C request and return the status.(ex: ch = 500, it's wrong) */
  524. /* other COL status start from here */
  525. COL_STATUS_C2H_REQ_NUM_MISMATCH , /* c2h req_num mismatch, means this c2h is not we expected. */
  526. COL_STATUS_H2C_HALMAC_FAIL , /* HALMAC return fail. */
  527. COL_STATUS_H2C_TIMTOUT , /* not received the c2h response from fw */
  528. COL_STATUS_INVALID_C2H_LEN , /* invalid coex offload c2h ack length, must >= 3 */
  529. COL_STATUS_COEX_DATA_OVERFLOW , /* coex returned length over the c2h ack length. */
  530. COL_STATUS_MAX
  531. } COL_H2C_STATUS, *PCOL_H2C_STATUS;
  532. #define COL_MAX_H2C_REQ_NUM 16
  533. #define COL_H2C_BUF_LEN 20
  534. typedef enum _COL_OPCODE {
  535. COL_OP_WIFI_STATUS_NOTIFY = 0x0,
  536. COL_OP_WIFI_PROGRESS_NOTIFY = 0x1,
  537. COL_OP_WIFI_INFO_NOTIFY = 0x2,
  538. COL_OP_WIFI_POWER_STATE_NOTIFY = 0x3,
  539. COL_OP_SET_CONTROL = 0x4,
  540. COL_OP_GET_CONTROL = 0x5,
  541. COL_OP_WIFI_OPCODE_MAX
  542. } COL_OPCODE, *PCOL_OPCODE;
  543. typedef enum _COL_IND_TYPE {
  544. COL_IND_BT_INFO = 0x0,
  545. COL_IND_PSTDMA = 0x1,
  546. COL_IND_LIMITED_TX_RX = 0x2,
  547. COL_IND_COEX_TABLE = 0x3,
  548. COL_IND_REQ = 0x4,
  549. COL_IND_MAX
  550. } COL_IND_TYPE, *PCOL_IND_TYPE;
  551. typedef struct _COL_SINGLE_H2C_RECORD {
  552. u1Byte h2c_buf[COL_H2C_BUF_LEN]; /* the latest sent h2c buffer */
  553. u4Byte h2c_len;
  554. u1Byte c2h_ack_buf[COL_H2C_BUF_LEN]; /* the latest received c2h buffer */
  555. u4Byte c2h_ack_len;
  556. u4Byte count; /* the total number of the sent h2c command */
  557. u4Byte status[COL_STATUS_MAX]; /* the c2h status for the sent h2c command */
  558. } COL_SINGLE_H2C_RECORD, *PCOL_SINGLE_H2C_RECORD;
  559. typedef struct _COL_SINGLE_C2H_IND_RECORD {
  560. u1Byte ind_buf[COL_H2C_BUF_LEN]; /* the latest received c2h indication buffer */
  561. u4Byte ind_len;
  562. u4Byte count; /* the total number of the rcvd c2h indication */
  563. u4Byte status[COL_STATUS_MAX]; /* the c2h indication verified status */
  564. } COL_SINGLE_C2H_IND_RECORD, *PCOL_SINGLE_C2H_IND_RECORD;
  565. typedef struct _BTC_OFFLOAD {
  566. /* H2C command related */
  567. u1Byte h2c_req_num;
  568. u4Byte cnt_h2c_sent;
  569. COL_SINGLE_H2C_RECORD h2c_record[COL_OP_WIFI_OPCODE_MAX];
  570. /* C2H Ack related */
  571. u4Byte cnt_c2h_ack;
  572. u4Byte status[COL_STATUS_MAX];
  573. struct completion c2h_event[COL_MAX_H2C_REQ_NUM]; /* for req_num = 1~COL_MAX_H2C_REQ_NUM */
  574. u1Byte c2h_ack_buf[COL_MAX_H2C_REQ_NUM][COL_H2C_BUF_LEN];
  575. u1Byte c2h_ack_len[COL_MAX_H2C_REQ_NUM];
  576. /* C2H Indication related */
  577. u4Byte cnt_c2h_ind;
  578. COL_SINGLE_C2H_IND_RECORD c2h_ind_record[COL_IND_MAX];
  579. u4Byte c2h_ind_status[COL_STATUS_MAX];
  580. u1Byte c2h_ind_buf[COL_H2C_BUF_LEN];
  581. u1Byte c2h_ind_len;
  582. } BTC_OFFLOAD, *PBTC_OFFLOAD;
  583. extern BTC_OFFLOAD gl_coex_offload;
  584. /*==================================================*/
  585. /* BTC_LINK_MODE same as WIFI_LINK_MODE */
  586. typedef enum _BTC_LINK_MODE{
  587. BTC_LINK_NONE=0,
  588. BTC_LINK_ONLY_GO,
  589. BTC_LINK_ONLY_GC,
  590. BTC_LINK_ONLY_STA,
  591. BTC_LINK_ONLY_AP,
  592. BTC_LINK_2G_MCC_GO_STA,
  593. BTC_LINK_5G_MCC_GO_STA,
  594. BTC_LINK_25G_MCC_GO_STA,
  595. BTC_LINK_2G_MCC_GC_STA,
  596. BTC_LINK_5G_MCC_GC_STA,
  597. BTC_LINK_25G_MCC_GC_STA,
  598. BTC_LINK_2G_SCC_GO_STA,
  599. BTC_LINK_5G_SCC_GO_STA,
  600. BTC_LINK_2G_SCC_GC_STA,
  601. BTC_LINK_5G_SCC_GC_STA,
  602. BTC_LINK_MAX=30
  603. }BTC_LINK_MODE, *PBTC_LINK_MODE;
  604. struct btc_wifi_link_info {
  605. BTC_LINK_MODE link_mode; /* LinkMode */
  606. u1Byte sta_center_channel; /* StaCenterChannel */
  607. u1Byte p2p_center_channel; /* P2PCenterChannel */
  608. BOOLEAN bany_client_join_go;
  609. BOOLEAN benable_noa;
  610. BOOLEAN bhotspot;
  611. };
  612. typedef enum _BTC_MULTI_PORT_TDMA_MODE {
  613. BTC_MULTI_PORT_TDMA_MODE_NONE=0,
  614. BTC_MULTI_PORT_TDMA_MODE_2G_SCC_GO,
  615. BTC_MULTI_PORT_TDMA_MODE_2G_P2P_GO,
  616. BTC_MULTI_PORT_TDMA_MODE_2G_HOTSPOT_GO
  617. } BTC_MULTI_PORT_TDMA_MODE, *PBTC_MULTI_PORT_TDMA_MODE;
  618. typedef struct btc_multi_port_tdma_info {
  619. BTC_MULTI_PORT_TDMA_MODE btc_multi_port_tdma_mode;
  620. u1Byte start_time_from_bcn;
  621. u1Byte bt_time;
  622. } BTC_MULTI_PORT_TDMA_INFO, *PBTC_MULTI_PORT_TDMA_INFO;
  623. typedef u1Byte
  624. (*BFP_BTC_R1)(
  625. IN PVOID pBtcContext,
  626. IN u4Byte RegAddr
  627. );
  628. typedef u2Byte
  629. (*BFP_BTC_R2)(
  630. IN PVOID pBtcContext,
  631. IN u4Byte RegAddr
  632. );
  633. typedef u4Byte
  634. (*BFP_BTC_R4)(
  635. IN PVOID pBtcContext,
  636. IN u4Byte RegAddr
  637. );
  638. typedef VOID
  639. (*BFP_BTC_W1)(
  640. IN PVOID pBtcContext,
  641. IN u4Byte RegAddr,
  642. IN u1Byte Data
  643. );
  644. typedef VOID
  645. (*BFP_BTC_W1_BIT_MASK)(
  646. IN PVOID pBtcContext,
  647. IN u4Byte regAddr,
  648. IN u1Byte bitMask,
  649. IN u1Byte data1b
  650. );
  651. typedef VOID
  652. (*BFP_BTC_W2)(
  653. IN PVOID pBtcContext,
  654. IN u4Byte RegAddr,
  655. IN u2Byte Data
  656. );
  657. typedef VOID
  658. (*BFP_BTC_W4)(
  659. IN PVOID pBtcContext,
  660. IN u4Byte RegAddr,
  661. IN u4Byte Data
  662. );
  663. typedef VOID
  664. (*BFP_BTC_LOCAL_REG_W1)(
  665. IN PVOID pBtcContext,
  666. IN u4Byte RegAddr,
  667. IN u1Byte Data
  668. );
  669. typedef VOID
  670. (*BFP_BTC_SET_BB_REG)(
  671. IN PVOID pBtcContext,
  672. IN u4Byte RegAddr,
  673. IN u4Byte BitMask,
  674. IN u4Byte Data
  675. );
  676. typedef u4Byte
  677. (*BFP_BTC_GET_BB_REG)(
  678. IN PVOID pBtcContext,
  679. IN u4Byte RegAddr,
  680. IN u4Byte BitMask
  681. );
  682. typedef VOID
  683. (*BFP_BTC_SET_RF_REG)(
  684. IN PVOID pBtcContext,
  685. IN enum rf_path eRFPath,
  686. IN u4Byte RegAddr,
  687. IN u4Byte BitMask,
  688. IN u4Byte Data
  689. );
  690. typedef u4Byte
  691. (*BFP_BTC_GET_RF_REG)(
  692. IN PVOID pBtcContext,
  693. IN enum rf_path eRFPath,
  694. IN u4Byte RegAddr,
  695. IN u4Byte BitMask
  696. );
  697. typedef VOID
  698. (*BFP_BTC_FILL_H2C)(
  699. IN PVOID pBtcContext,
  700. IN u1Byte elementId,
  701. IN u4Byte cmdLen,
  702. IN pu1Byte pCmdBuffer
  703. );
  704. typedef BOOLEAN
  705. (*BFP_BTC_GET)(
  706. IN PVOID pBtCoexist,
  707. IN u1Byte getType,
  708. OUT PVOID pOutBuf
  709. );
  710. typedef BOOLEAN
  711. (*BFP_BTC_SET)(
  712. IN PVOID pBtCoexist,
  713. IN u1Byte setType,
  714. OUT PVOID pInBuf
  715. );
  716. typedef u2Byte
  717. (*BFP_BTC_SET_BT_REG)(
  718. IN PVOID pBtcContext,
  719. IN u1Byte regType,
  720. IN u4Byte offset,
  721. IN u4Byte value
  722. );
  723. typedef BOOLEAN
  724. (*BFP_BTC_SET_BT_ANT_DETECTION)(
  725. IN PVOID pBtcContext,
  726. IN u1Byte txTime,
  727. IN u1Byte btChnl
  728. );
  729. typedef BOOLEAN
  730. (*BFP_BTC_SET_BT_TRX_MASK)(
  731. IN PVOID pBtcContext,
  732. IN u1Byte bt_trx_mask
  733. );
  734. typedef u4Byte
  735. (*BFP_BTC_GET_BT_REG)(
  736. IN PVOID pBtcContext,
  737. IN u1Byte regType,
  738. IN u4Byte offset
  739. );
  740. typedef VOID
  741. (*BFP_BTC_DISP_DBG_MSG)(
  742. IN PVOID pBtCoexist,
  743. IN u1Byte dispType
  744. );
  745. typedef COL_H2C_STATUS
  746. (*BFP_BTC_COEX_H2C_PROCESS)(
  747. IN PVOID pBtCoexist,
  748. IN u1Byte opcode,
  749. IN u1Byte opcode_ver,
  750. IN pu1Byte ph2c_par,
  751. IN u1Byte h2c_par_len
  752. );
  753. typedef u4Byte
  754. (*BFP_BTC_GET_BT_COEX_SUPPORTED_FEATURE)(
  755. IN PVOID pBtcContext
  756. );
  757. typedef u4Byte
  758. (*BFP_BTC_GET_BT_COEX_SUPPORTED_VERSION)(
  759. IN PVOID pBtcContext
  760. );
  761. typedef u4Byte
  762. (*BFP_BTC_GET_PHYDM_VERSION)(
  763. IN PVOID pBtcContext
  764. );
  765. typedef u4Byte
  766. (*BFP_BTC_SET_ATOMIC) (
  767. IN PVOID pBtcContext,
  768. IN pu4Byte target,
  769. IN u4Byte val
  770. );
  771. typedef VOID
  772. (*BTC_PHYDM_MODIFY_RA_PCR_THRESHLOD)(
  773. IN PVOID pDM_Odm,
  774. IN u1Byte RA_offset_direction,
  775. IN u1Byte RA_threshold_offset
  776. );
  777. typedef u4Byte
  778. (*BTC_PHYDM_CMNINFOQUERY)(
  779. IN PVOID pDM_Odm,
  780. IN u1Byte info_type
  781. );
  782. typedef VOID
  783. (*BTC_PHYDM_MODIFY_ANTDIV_HWSW)(
  784. IN PVOID pDM_Odm,
  785. IN u1Byte type
  786. );
  787. typedef u1Byte
  788. (*BFP_BTC_GET_ANT_DET_VAL_FROM_BT)(
  789. IN PVOID pBtcContext
  790. );
  791. typedef u1Byte
  792. (*BFP_BTC_GET_BLE_SCAN_TYPE_FROM_BT)(
  793. IN PVOID pBtcContext
  794. );
  795. typedef u4Byte
  796. (*BFP_BTC_GET_BLE_SCAN_PARA_FROM_BT)(
  797. IN PVOID pBtcContext,
  798. IN u1Byte scanType
  799. );
  800. typedef BOOLEAN
  801. (*BFP_BTC_GET_BT_AFH_MAP_FROM_BT)(
  802. IN PVOID pBtcContext,
  803. IN u1Byte mapType,
  804. OUT pu1Byte afhMap
  805. );
  806. struct btc_bt_info {
  807. boolean bt_disabled;
  808. boolean bt_enable_disable_change;
  809. u8 rssi_adjust_for_agc_table_on;
  810. u8 rssi_adjust_for_1ant_coex_type;
  811. boolean pre_bt_ctrl_agg_buf_size;
  812. boolean bt_ctrl_agg_buf_size;
  813. boolean pre_reject_agg_pkt;
  814. boolean reject_agg_pkt;
  815. boolean increase_scan_dev_num;
  816. boolean bt_tx_rx_mask;
  817. u8 pre_agg_buf_size;
  818. u8 agg_buf_size;
  819. boolean bt_busy;
  820. boolean limited_dig;
  821. u16 bt_hci_ver;
  822. u16 bt_real_fw_ver;
  823. u8 bt_fw_ver;
  824. u32 get_bt_fw_ver_cnt;
  825. u32 bt_get_fw_ver;
  826. boolean miracast_plus_bt;
  827. boolean bt_disable_low_pwr;
  828. boolean bt_ctrl_lps;
  829. boolean bt_lps_on;
  830. boolean force_to_roam; /* for 1Ant solution */
  831. u8 lps_val;
  832. u8 rpwm_val;
  833. u32 ra_mask;
  834. };
  835. struct btc_stack_info {
  836. boolean profile_notified;
  837. u16 hci_version; /* stack hci version */
  838. u8 num_of_link;
  839. boolean bt_link_exist;
  840. boolean sco_exist;
  841. boolean acl_exist;
  842. boolean a2dp_exist;
  843. boolean hid_exist;
  844. u8 num_of_hid;
  845. boolean pan_exist;
  846. boolean unknown_acl_exist;
  847. s8 min_bt_rssi;
  848. };
  849. struct btc_bt_link_info {
  850. boolean bt_link_exist;
  851. boolean bt_hi_pri_link_exist;
  852. boolean sco_exist;
  853. boolean sco_only;
  854. boolean a2dp_exist;
  855. boolean a2dp_only;
  856. boolean hid_exist;
  857. boolean hid_only;
  858. boolean pan_exist;
  859. boolean pan_only;
  860. boolean slave_role;
  861. boolean acl_busy;
  862. };
  863. #ifdef CONFIG_RF4CE_COEXIST
  864. struct btc_rf4ce_info {
  865. u8 link_state;
  866. };
  867. #endif
  868. struct btc_statistics {
  869. u32 cnt_bind;
  870. u32 cnt_power_on;
  871. u32 cnt_pre_load_firmware;
  872. u32 cnt_init_hw_config;
  873. u32 cnt_init_coex_dm;
  874. u32 cnt_ips_notify;
  875. u32 cnt_lps_notify;
  876. u32 cnt_scan_notify;
  877. u32 cnt_connect_notify;
  878. u32 cnt_media_status_notify;
  879. u32 cnt_specific_packet_notify;
  880. u32 cnt_bt_info_notify;
  881. u32 cnt_rf_status_notify;
  882. u32 cnt_periodical;
  883. u32 cnt_coex_dm_switch;
  884. u32 cnt_stack_operation_notify;
  885. u32 cnt_dbg_ctrl;
  886. u32 cnt_rate_id_notify;
  887. u32 cnt_halt_notify;
  888. u32 cnt_pnp_notify;
  889. };
  890. struct btc_coexist {
  891. BOOLEAN bBinded; /*make sure only one adapter can bind the data context*/
  892. PVOID Adapter; /*default adapter*/
  893. struct btc_board_info board_info;
  894. struct btc_bt_info bt_info; /*some bt info referenced by non-bt module*/
  895. struct btc_stack_info stack_info;
  896. struct btc_bt_link_info bt_link_info;
  897. struct btc_wifi_link_info wifi_link_info;
  898. #ifdef CONFIG_RF4CE_COEXIST
  899. struct btc_rf4ce_info rf4ce_info;
  900. #endif
  901. BTC_CHIP_INTERFACE chip_interface;
  902. PVOID odm_priv;
  903. BOOLEAN initilized;
  904. BOOLEAN stop_coex_dm;
  905. BOOLEAN manual_control;
  906. BOOLEAN bdontenterLPS;
  907. pu1Byte cli_buf;
  908. struct btc_statistics statistics;
  909. u1Byte pwrModeVal[10];
  910. BOOLEAN dbg_mode;
  911. BOOLEAN auto_report;
  912. /* function pointers */
  913. /* io related */
  914. BFP_BTC_R1 btc_read_1byte;
  915. BFP_BTC_W1 btc_write_1byte;
  916. BFP_BTC_W1_BIT_MASK btc_write_1byte_bitmask;
  917. BFP_BTC_R2 btc_read_2byte;
  918. BFP_BTC_W2 btc_write_2byte;
  919. BFP_BTC_R4 btc_read_4byte;
  920. BFP_BTC_W4 btc_write_4byte;
  921. BFP_BTC_LOCAL_REG_W1 btc_write_local_reg_1byte;
  922. /* read/write bb related */
  923. BFP_BTC_SET_BB_REG btc_set_bb_reg;
  924. BFP_BTC_GET_BB_REG btc_get_bb_reg;
  925. /* read/write rf related */
  926. BFP_BTC_SET_RF_REG btc_set_rf_reg;
  927. BFP_BTC_GET_RF_REG btc_get_rf_reg;
  928. /* fill h2c related */
  929. BFP_BTC_FILL_H2C btc_fill_h2c;
  930. /* other */
  931. BFP_BTC_DISP_DBG_MSG btc_disp_dbg_msg;
  932. /* normal get/set related */
  933. BFP_BTC_GET btc_get;
  934. BFP_BTC_SET btc_set;
  935. BFP_BTC_GET_BT_REG btc_get_bt_reg;
  936. BFP_BTC_SET_BT_REG btc_set_bt_reg;
  937. BFP_BTC_SET_BT_ANT_DETECTION btc_set_bt_ant_detection;
  938. BFP_BTC_COEX_H2C_PROCESS btc_coex_h2c_process;
  939. BFP_BTC_SET_BT_TRX_MASK btc_set_bt_trx_mask;
  940. BFP_BTC_GET_BT_COEX_SUPPORTED_FEATURE btc_get_bt_coex_supported_feature;
  941. BFP_BTC_GET_BT_COEX_SUPPORTED_VERSION btc_get_bt_coex_supported_version;
  942. BFP_BTC_GET_PHYDM_VERSION btc_get_bt_phydm_version;
  943. BFP_BTC_SET_ATOMIC btc_set_atomic;
  944. BTC_PHYDM_MODIFY_RA_PCR_THRESHLOD btc_phydm_modify_RA_PCR_threshold;
  945. BTC_PHYDM_CMNINFOQUERY btc_phydm_query_PHY_counter;
  946. BTC_PHYDM_MODIFY_ANTDIV_HWSW btc_phydm_modify_antdiv_hwsw;
  947. BFP_BTC_GET_ANT_DET_VAL_FROM_BT btc_get_ant_det_val_from_bt;
  948. BFP_BTC_GET_BLE_SCAN_TYPE_FROM_BT btc_get_ble_scan_type_from_bt;
  949. BFP_BTC_GET_BLE_SCAN_PARA_FROM_BT btc_get_ble_scan_para_from_bt;
  950. BFP_BTC_GET_BT_AFH_MAP_FROM_BT btc_get_bt_afh_map_from_bt;
  951. union {
  952. #ifdef CONFIG_RTL8822B
  953. struct coex_dm_8822b_1ant coex_dm_8822b_1ant;
  954. struct coex_dm_8822b_2ant coex_dm_8822b_2ant;
  955. #endif /* 8822B */
  956. #ifdef CONFIG_RTL8821C
  957. struct coex_dm_8821c_1ant coex_dm_8821c_1ant;
  958. struct coex_dm_8821c_2ant coex_dm_8821c_2ant;
  959. #endif /* 8821C */
  960. };
  961. union {
  962. #ifdef CONFIG_RTL8822B
  963. struct coex_sta_8822b_1ant coex_sta_8822b_1ant;
  964. struct coex_sta_8822b_2ant coex_sta_8822b_2ant;
  965. #endif /* 8822B */
  966. #ifdef CONFIG_RTL8821C
  967. struct coex_sta_8821c_1ant coex_sta_8821c_1ant;
  968. struct coex_sta_8821c_2ant coex_sta_8821c_2ant;
  969. #endif /* 8821C */
  970. };
  971. union {
  972. #ifdef CONFIG_RTL8822B
  973. struct rfe_type_8822b_1ant rfe_type_8822b_1ant;
  974. struct rfe_type_8822b_2ant rfe_type_8822b_2ant;
  975. #endif /* 8822B */
  976. #ifdef CONFIG_RTL8821C
  977. struct rfe_type_8821c_1ant rfe_type_8821c_1ant;
  978. struct rfe_type_8821c_2ant rfe_type_8821c_2ant;
  979. #endif /* 8821C */
  980. };
  981. union {
  982. #ifdef CONFIG_RTL8822B
  983. struct wifi_link_info_8822b_1ant wifi_link_info_8822b_1ant;
  984. struct wifi_link_info_8822b_2ant wifi_link_info_8822b_2ant;
  985. #endif /* 8822B */
  986. #ifdef CONFIG_RTL8821C
  987. struct wifi_link_info_8821c_1ant wifi_link_info_8821c_1ant;
  988. struct wifi_link_info_8821c_2ant wifi_link_info_8821c_2ant;
  989. #endif /* 8821C */
  990. };
  991. };
  992. typedef struct btc_coexist *PBTC_COEXIST;
  993. extern struct btc_coexist GLBtCoexist;
  994. BOOLEAN
  995. EXhalbtcoutsrc_InitlizeVariables(
  996. IN PVOID Adapter
  997. );
  998. VOID
  999. EXhalbtcoutsrc_PowerOnSetting(
  1000. IN PBTC_COEXIST pBtCoexist
  1001. );
  1002. VOID
  1003. EXhalbtcoutsrc_PreLoadFirmware(
  1004. IN PBTC_COEXIST pBtCoexist
  1005. );
  1006. VOID
  1007. EXhalbtcoutsrc_InitHwConfig(
  1008. IN PBTC_COEXIST pBtCoexist,
  1009. IN BOOLEAN bWifiOnly
  1010. );
  1011. VOID
  1012. EXhalbtcoutsrc_InitCoexDm(
  1013. IN PBTC_COEXIST pBtCoexist
  1014. );
  1015. VOID
  1016. EXhalbtcoutsrc_IpsNotify(
  1017. IN PBTC_COEXIST pBtCoexist,
  1018. IN u1Byte type
  1019. );
  1020. VOID
  1021. EXhalbtcoutsrc_LpsNotify(
  1022. IN PBTC_COEXIST pBtCoexist,
  1023. IN u1Byte type
  1024. );
  1025. VOID
  1026. EXhalbtcoutsrc_ScanNotify(
  1027. IN PBTC_COEXIST pBtCoexist,
  1028. IN u1Byte type
  1029. );
  1030. VOID
  1031. EXhalbtcoutsrc_SetAntennaPathNotify(
  1032. IN PBTC_COEXIST pBtCoexist,
  1033. IN u1Byte type
  1034. );
  1035. VOID
  1036. EXhalbtcoutsrc_ConnectNotify(
  1037. IN PBTC_COEXIST pBtCoexist,
  1038. IN u1Byte action
  1039. );
  1040. VOID
  1041. EXhalbtcoutsrc_MediaStatusNotify(
  1042. IN PBTC_COEXIST pBtCoexist,
  1043. IN RT_MEDIA_STATUS mediaStatus
  1044. );
  1045. VOID
  1046. EXhalbtcoutsrc_SpecificPacketNotify(
  1047. IN PBTC_COEXIST pBtCoexist,
  1048. IN u1Byte pktType
  1049. );
  1050. VOID
  1051. EXhalbtcoutsrc_BtInfoNotify(
  1052. IN PBTC_COEXIST pBtCoexist,
  1053. IN pu1Byte tmpBuf,
  1054. IN u1Byte length
  1055. );
  1056. VOID
  1057. EXhalbtcoutsrc_RfStatusNotify(
  1058. IN PBTC_COEXIST pBtCoexist,
  1059. IN u1Byte type
  1060. );
  1061. VOID
  1062. EXhalbtcoutsrc_WlFwDbgInfoNotify(
  1063. IN PBTC_COEXIST pBtCoexist,
  1064. IN pu1Byte tmpBuf,
  1065. IN u1Byte length
  1066. );
  1067. VOID
  1068. EXhalbtcoutsrc_rx_rate_change_notify(
  1069. IN PBTC_COEXIST pBtCoexist,
  1070. IN BOOLEAN is_data_frame,
  1071. IN u1Byte btc_rate_id
  1072. );
  1073. VOID
  1074. EXhalbtcoutsrc_StackOperationNotify(
  1075. IN PBTC_COEXIST pBtCoexist,
  1076. IN u1Byte type
  1077. );
  1078. VOID
  1079. EXhalbtcoutsrc_HaltNotify(
  1080. IN PBTC_COEXIST pBtCoexist
  1081. );
  1082. VOID
  1083. EXhalbtcoutsrc_PnpNotify(
  1084. IN PBTC_COEXIST pBtCoexist,
  1085. IN u1Byte pnpState
  1086. );
  1087. VOID
  1088. EXhalbtcoutsrc_CoexDmSwitch(
  1089. IN PBTC_COEXIST pBtCoexist
  1090. );
  1091. VOID
  1092. EXhalbtcoutsrc_Periodical(
  1093. IN PBTC_COEXIST pBtCoexist
  1094. );
  1095. VOID
  1096. EXhalbtcoutsrc_DbgControl(
  1097. IN PBTC_COEXIST pBtCoexist,
  1098. IN u1Byte opCode,
  1099. IN u1Byte opLen,
  1100. IN pu1Byte pData
  1101. );
  1102. VOID
  1103. EXhalbtcoutsrc_AntennaDetection(
  1104. IN PBTC_COEXIST pBtCoexist,
  1105. IN u4Byte centFreq,
  1106. IN u4Byte offset,
  1107. IN u4Byte span,
  1108. IN u4Byte seconds
  1109. );
  1110. VOID
  1111. EXhalbtcoutsrc_StackUpdateProfileInfo(
  1112. VOID
  1113. );
  1114. VOID
  1115. EXhalbtcoutsrc_SetHciVersion(
  1116. IN u2Byte hciVersion
  1117. );
  1118. VOID
  1119. EXhalbtcoutsrc_SetBtPatchVersion(
  1120. IN u2Byte btHciVersion,
  1121. IN u2Byte btPatchVersion
  1122. );
  1123. VOID
  1124. EXhalbtcoutsrc_UpdateMinBtRssi(
  1125. IN s1Byte btRssi
  1126. );
  1127. #if 0
  1128. VOID
  1129. EXhalbtcoutsrc_SetBtExist(
  1130. IN BOOLEAN bBtExist
  1131. );
  1132. #endif
  1133. VOID
  1134. EXhalbtcoutsrc_SetChipType(
  1135. IN u1Byte chipType
  1136. );
  1137. VOID
  1138. EXhalbtcoutsrc_SetAntNum(
  1139. IN u1Byte type,
  1140. IN u1Byte antNum
  1141. );
  1142. VOID
  1143. EXhalbtcoutsrc_SetSingleAntPath(
  1144. IN u1Byte singleAntPath
  1145. );
  1146. VOID
  1147. EXhalbtcoutsrc_DisplayBtCoexInfo(
  1148. IN PBTC_COEXIST pBtCoexist
  1149. );
  1150. VOID
  1151. EXhalbtcoutsrc_DisplayAntDetection(
  1152. IN PBTC_COEXIST pBtCoexist
  1153. );
  1154. #define MASKBYTE0 0xff
  1155. #define MASKBYTE1 0xff00
  1156. #define MASKBYTE2 0xff0000
  1157. #define MASKBYTE3 0xff000000
  1158. #define MASKHWORD 0xffff0000
  1159. #define MASKLWORD 0x0000ffff
  1160. #define MASKDWORD 0xffffffff
  1161. #define MASK12BITS 0xfff
  1162. #define MASKH4BITS 0xf0000000
  1163. #define MASKOFDM_D 0xffc00000
  1164. #define MASKCCK 0x3f3f3f3f
  1165. #endif