wmt_exp.h 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. /*! \file
  2. \brief Declaration of library functions
  3. Any definitions in this file will be shared among GLUE Layer and internal Driver Stack.
  4. */
  5. #ifndef _WMT_EXP_H_
  6. #define _WMT_EXP_H_
  7. #include "osal_typedef.h"
  8. #include "osal.h"
  9. #include <mtk_wcn_cmb_stub.h>
  10. #include "wmt_stp_exp.h"
  11. /* not to reference to internal wmt */
  12. /* #include "wmt_core.h" */
  13. /*******************************************************************************
  14. * C O M P I L E R F L A G S
  15. ********************************************************************************
  16. */
  17. /*******************************************************************************
  18. * M A C R O S
  19. ********************************************************************************
  20. */
  21. #ifndef DFT_TAG
  22. #define DFT_TAG "[WMT-DFT]"
  23. #endif
  24. #if 1 /* moved from wmt_lib.h */
  25. #define WMT_LOG_TRC 5
  26. #define WMT_LOG_LOUD 4
  27. #define WMT_LOG_DBG 3
  28. #define WMT_LOG_INFO 2
  29. #define WMT_LOG_WARN 1
  30. #define WMT_LOG_ERR 0
  31. #endif
  32. extern UINT32 gWmtDbgLvl;
  33. #define WMT_LOUD_FUNC(fmt, arg...) do { \
  34. if (gWmtDbgLvl >= WMT_LOG_LOUD) \
  35. pr_warn(DFT_TAG "%s: " fmt, __func__ , ##arg); \
  36. } while (0)
  37. #define WMT_INFO_FUNC(fmt, arg...) do { \
  38. if (gWmtDbgLvl >= WMT_LOG_INFO) \
  39. pr_warn(DFT_TAG "%s: " fmt, __func__ , ##arg); \
  40. } while (0)
  41. #define WMT_WARN_FUNC(fmt, arg...) do { \
  42. if (gWmtDbgLvl >= WMT_LOG_WARN) \
  43. pr_warn(DFT_TAG "%s: " fmt, __func__ , ##arg); \
  44. } while (0)
  45. #define WMT_DBG_FUNC(fmt, arg...) do { \
  46. if (gWmtDbgLvl >= WMT_LOG_DBG) \
  47. pr_debug(DFT_TAG "%s: " fmt, __func__ , ##arg); \
  48. } while (0)
  49. #define WMT_ERR_FUNC(fmt, arg...) do { \
  50. if (gWmtDbgLvl >= WMT_LOG_ERR) \
  51. pr_err(DFT_TAG "%s: " fmt, __func__ , ##arg); \
  52. } while (0)
  53. #define WMT_TRC_FUNC(fmt) do { \
  54. if (gWmtDbgLvl >= WMT_LOG_TRC) \
  55. pr_warn(DFT_TAG "%s: " fmt, __func__ , ##arg); \
  56. } while (0)
  57. /*******************************************************************************
  58. * E X T E R N A L R E F E R E N C E S
  59. ********************************************************************************
  60. */
  61. /*******************************************************************************
  62. * C O N S T A N T S
  63. ********************************************************************************
  64. */
  65. #define CFG_WMT_PS_SUPPORT 1 /* moved from wmt_lib.h */
  66. /*******************************************************************************
  67. * D A T A T Y P E S
  68. ********************************************************************************
  69. */
  70. #ifndef MTK_WCN_WMT_STP_EXP_SYMBOL_ABSTRACT
  71. typedef enum _ENUM_WMTDRV_TYPE_T {
  72. WMTDRV_TYPE_BT = 0,
  73. WMTDRV_TYPE_FM = 1,
  74. WMTDRV_TYPE_GPS = 2,
  75. WMTDRV_TYPE_WIFI = 3,
  76. WMTDRV_TYPE_WMT = 4,
  77. WMTDRV_TYPE_ANT = 5,
  78. WMTDRV_TYPE_STP = 6,
  79. WMTDRV_TYPE_SDIO1 = 7,
  80. WMTDRV_TYPE_SDIO2 = 8,
  81. WMTDRV_TYPE_LPBK = 9,
  82. WMTDRV_TYPE_COREDUMP = 10,
  83. #if MTK_WCN_CMB_FOR_SDIO_1V_AUTOK
  84. WMTDRV_TYPE_AUTOK = 11,
  85. #endif
  86. WMTDRV_TYPE_MAX
  87. } ENUM_WMTDRV_TYPE_T, *P_ENUM_WMTDRV_TYPE_T;
  88. /* TODO: [ChangeFeature][GeorgeKuo] Reconsider usage of this type */
  89. /* TODO: how do we extend for new chip and newer revision? */
  90. /* TODO: This way is hard to extend */
  91. typedef enum _ENUM_WMTHWVER_TYPE_T {
  92. WMTHWVER_E1 = 0x0,
  93. WMTHWVER_E2 = 0x1,
  94. WMTHWVER_E3 = 0x2,
  95. WMTHWVER_E4 = 0x3,
  96. WMTHWVER_E5 = 0x4,
  97. WMTHWVER_E6 = 0x5,
  98. WMTHWVER_E7 = 0x6,
  99. WMTHWVER_MAX,
  100. WMTHWVER_INVALID = 0xff
  101. } ENUM_WMTHWVER_TYPE_T, *P_ENUM_WMTHWVER_TYPE_T;
  102. typedef enum _ENUM_WMTDSNS_TYPE_T {
  103. WMTDSNS_FM_DISABLE = 0,
  104. WMTDSNS_FM_ENABLE = 1,
  105. WMTDSNS_FM_GPS_DISABLE = 2,
  106. WMTDSNS_FM_GPS_ENABLE = 3,
  107. WMTDSNS_MAX
  108. } ENUM_WMTDSNS_TYPE_T, *P_ENUM_WMTDSNS_TYPE_T;
  109. typedef enum _ENUM_WMTTHERM_TYPE_T {
  110. WMTTHERM_ZERO = 0,
  111. WMTTHERM_ENABLE = WMTTHERM_ZERO + 1,
  112. WMTTHERM_READ = WMTTHERM_ENABLE + 1,
  113. WMTTHERM_DISABLE = WMTTHERM_READ + 1,
  114. WMTTHERM_MAX
  115. } ENUM_WMTTHERM_TYPE_T, *P_ENUM_WMTTHERM_TYPE_T;
  116. typedef enum _ENUM_WMTMSG_TYPE_T {
  117. WMTMSG_TYPE_POWER_ON = 0,
  118. WMTMSG_TYPE_POWER_OFF = 1,
  119. WMTMSG_TYPE_RESET = 2,
  120. WMTMSG_TYPE_STP_RDY = 3,
  121. WMTMSG_TYPE_HW_FUNC_ON = 4,
  122. WMTMSG_TYPE_MAX
  123. } ENUM_WMTMSG_TYPE_T, *P_ENUM_WMTMSG_TYPE_T;
  124. typedef VOID(*PF_WMT_CB) (ENUM_WMTDRV_TYPE_T, /* Source driver type */
  125. ENUM_WMTDRV_TYPE_T, /* Destination driver type */
  126. ENUM_WMTMSG_TYPE_T, /* Message type */
  127. PVOID, /* READ-ONLY buffer. Buffer is allocated and freed by WMT_drv. Client
  128. can't touch this buffer after this function return. */
  129. UINT32 /* Buffer size in unit of byte */
  130. );
  131. typedef enum _SDIO_PS_OP {
  132. OWN_SET = 0,
  133. OWN_CLR = 1,
  134. OWN_STATE = 2,
  135. } SDIO_PS_OP;
  136. typedef INT32(*PF_WMT_SDIO_PSOP) (SDIO_PS_OP);
  137. typedef enum _ENUM_WMTCHIN_TYPE_T {
  138. WMTCHIN_CHIPID = 0x0,
  139. WMTCHIN_HWVER = WMTCHIN_CHIPID + 1,
  140. WMTCHIN_MAPPINGHWVER = WMTCHIN_HWVER + 1,
  141. WMTCHIN_FWVER = WMTCHIN_MAPPINGHWVER + 1,
  142. WMTCHIN_MAX,
  143. } ENUM_WMT_CHIPINFO_TYPE_T, *P_ENUM_WMT_CHIPINFO_TYPE_T;
  144. #endif
  145. typedef enum _ENUM_WMTRSTMSG_TYPE_T {
  146. WMTRSTMSG_RESET_START = 0x0,
  147. WMTRSTMSG_RESET_END = 0x1,
  148. WMTRSTMSG_RESET_END_FAIL = 0x2,
  149. WMTRSTMSG_RESET_MAX,
  150. WMTRSTMSG_RESET_INVALID = 0xff
  151. } ENUM_WMTRSTMSG_TYPE_T, *P_ENUM_WMTRSTMSG_TYPE_T;
  152. #if 1 /* moved from wmt_core.h */
  153. typedef enum {
  154. WMT_SDIO_SLOT_INVALID = 0,
  155. WMT_SDIO_SLOT_SDIO1 = 1, /* Wi-Fi dedicated SDIO1 */
  156. WMT_SDIO_SLOT_SDIO2 = 2,
  157. WMT_SDIO_SLOT_MAX
  158. } WMT_SDIO_SLOT_NUM;
  159. typedef enum {
  160. WMT_SDIO_FUNC_STP = 0,
  161. WMT_SDIO_FUNC_WIFI = 1,
  162. WMT_SDIO_FUNC_MAX
  163. } WMT_SDIO_FUNC_TYPE;
  164. #endif
  165. typedef enum _ENUM_WMT_ANT_RAM_CTRL_T {
  166. WMT_ANT_RAM_GET_STATUS = 0,
  167. WMT_ANT_RAM_DOWNLOAD = WMT_ANT_RAM_GET_STATUS + 1,
  168. WMT_ANT_RAM_CTRL_MAX
  169. } ENUM_WMT_ANT_RAM_CTRL, *P_ENUM_WMT_ANT_RAM_CTRL;
  170. typedef enum _ENUM_WMT_ANT_RAM_SEQ_T {
  171. WMT_ANT_RAM_START_PKT = 1,
  172. WMT_ANT_RAM_CONTINUE_PKT = WMT_ANT_RAM_START_PKT + 1,
  173. WMT_ANT_RAM_END_PKT = WMT_ANT_RAM_CONTINUE_PKT + 1,
  174. WMT_ANT_RAM_SEQ_MAX
  175. } ENUM_WMT_ANT_RAM_SEQ, *P_ENUM_WMT_ANT_RAM_SEQ;
  176. typedef enum _ENUM_WMT_ANT_RAM_STATUS_T {
  177. WMT_ANT_RAM_NOT_EXIST = 0,
  178. WMT_ANT_RAM_EXIST = WMT_ANT_RAM_NOT_EXIST + 1,
  179. WMT_ANT_RAM_DOWN_OK = WMT_ANT_RAM_EXIST + 1,
  180. WMT_ANT_RAM_DOWN_FAIL = WMT_ANT_RAM_DOWN_OK + 1,
  181. WMT_ANT_RAM_PARA_ERR = WMT_ANT_RAM_DOWN_FAIL + 1,
  182. WMT_ANT_RAM_OP_ERR = WMT_ANT_RAM_PARA_ERR + 1,
  183. WMT_ANT_RAM_MAX
  184. } ENUM_WMT_ANT_RAM_STATUS, *P_ENUM_WMT_ANT_RAM_STATUS;
  185. /*******************************************************************************
  186. * P U B L I C D A T A
  187. ********************************************************************************
  188. */
  189. /*******************************************************************************
  190. * P R I V A T E D A T A
  191. ********************************************************************************
  192. */
  193. /*******************************************************************************
  194. * F U N C T I O N D E C L A R A T I O N S
  195. ********************************************************************************
  196. */
  197. #ifndef MTK_WCN_WMT_STP_EXP_SYMBOL_ABSTRACT
  198. #define WMT_EXP_HID_API_EXPORT 0
  199. /*subsystem function ctrl APIs*/
  200. extern MTK_WCN_BOOL mtk_wcn_wmt_func_off(ENUM_WMTDRV_TYPE_T type);
  201. extern MTK_WCN_BOOL mtk_wcn_wmt_func_on(ENUM_WMTDRV_TYPE_T type);
  202. extern MTK_WCN_BOOL mtk_wcn_wmt_dsns_ctrl(ENUM_WMTDSNS_TYPE_T eType);
  203. extern MTK_WCN_BOOL mtk_wcn_wmt_assert(ENUM_WMTDRV_TYPE_T type, UINT32 reason);
  204. extern MTK_WCN_BOOL mtk_wcn_wmt_assert_timeout(ENUM_WMTDRV_TYPE_T type, UINT32 reason, INT32 timeout);
  205. extern INT32 mtk_wcn_wmt_msgcb_reg(ENUM_WMTDRV_TYPE_T eType, PF_WMT_CB pCb);
  206. extern INT32 mtk_wcn_wmt_msgcb_unreg(ENUM_WMTDRV_TYPE_T eType);
  207. extern INT32 mtk_wcn_stp_wmt_sdio_op_reg(PF_WMT_SDIO_PSOP own_cb);
  208. extern INT32 mtk_wcn_stp_wmt_sdio_host_awake(VOID);
  209. /*
  210. return value:
  211. enable/disable thermal sensor function: true(1)/false(0)
  212. read thermal sensor function: thermal value
  213. */
  214. extern INT8 mtk_wcn_wmt_therm_ctrl(ENUM_WMTTHERM_TYPE_T eType);
  215. extern ENUM_WMTHWVER_TYPE_T mtk_wcn_wmt_hwver_get(VOID);
  216. extern UINT32 mtk_wcn_wmt_ic_info_get(ENUM_WMT_CHIPINFO_TYPE_T type);
  217. extern INT32 mtk_wcn_wmt_chipid_query(VOID);
  218. #else
  219. #define WMT_EXP_HID_API_EXPORT 1
  220. #endif
  221. extern INT32 wmt_lib_set_aif(CMB_STUB_AIF_X aif, MTK_WCN_BOOL share); /* set AUDIO interface options */
  222. extern VOID wmt_lib_ps_irq_cb(VOID);
  223. extern ENUM_WMT_ANT_RAM_STATUS mtk_wcn_wmt_ant_ram_ctrl(ENUM_WMT_ANT_RAM_CTRL ctrlId, PUINT8 pBuf,
  224. UINT32 length, ENUM_WMT_ANT_RAM_SEQ seq);
  225. #ifdef MTK_WCN_WMT_STP_EXP_SYMBOL_ABSTRACT
  226. extern VOID mtk_wcn_wmt_exp_init(VOID);
  227. extern VOID mtk_wcn_wmt_exp_deinit(VOID);
  228. #endif
  229. /*******************************************************************************
  230. * F U N C T I O N S
  231. ********************************************************************************
  232. */
  233. #endif /* _WMT_EXP_H_ */