wmt_plat.h 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  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_PLAT_H_
  6. #define _WMT_PLAT_H_
  7. #include <mtk_wcn_cmb_stub.h>
  8. #include "mtk_wcn_cmb_hw.h"
  9. #include "stp_exp.h"
  10. #include "osal.h"
  11. /*******************************************************************************
  12. * C O M P I L E R F L A G S
  13. ********************************************************************************
  14. */
  15. /*******************************************************************************
  16. * M A C R O S
  17. ********************************************************************************
  18. */
  19. #if defined(MT6630)
  20. #define CONSYS_WMT_REG_SUSPEND_CB_ENABLE 1
  21. #else
  22. #define CONSYS_WMT_REG_SUSPEND_CB_ENABLE 0
  23. #endif
  24. #if defined(MERGE_INTERFACE_SUPPORT) && (defined(MT6628) || defined(MT6630))
  25. #define MTK_WCN_CMB_MERGE_INTERFACE_SUPPORT 1
  26. #else
  27. #define MTK_WCN_CMB_MERGE_INTERFACE_SUPPORT 0
  28. #endif
  29. #if MTK_WCN_CMB_FOR_SDIO_1V_AUTOK
  30. #define WMT_FOR_SDIO_1V_AUTOK 1
  31. #else
  32. #define WMT_FOR_SDIO_1V_AUTOK 0
  33. #endif
  34. #if (MTK_WCN_CMB_MERGE_INTERFACE_SUPPORT)
  35. /* Supported AP platform:MT6589, MT6595, MT8135 */
  36. /* Supported Connectiity platform: MT6628, MT6630 */
  37. #if defined(MTK_WCN_CMB_AUD_IO_NAMING_STYLE_1) || defined(MTK_WCN_CMB_AUD_IO_NAMING_STYLE_2)
  38. #define GPIO_PCM_DAICLK_PIN_PINMUX_MODE GPIO_PCM_DAICLK_PIN_M_CLK
  39. #define GPIO_PCM_DAIPCMOUT_PIN_PINMUX_MODE GPIO_PCM_DAIPCMOUT_PIN_M_MRG_I2S_PCM_TX
  40. #define GPIO_PCM_DAIPCMIN_PIN_PINMUX_MODE GPIO_PCM_DAIPCMIN_PIN_M_MRG_I2S_PCM_RX
  41. #define GPIO_PCM_DAISYNC_PIN_PINMUX_MODE GPIO_PCM_DAISYNC_PIN_M_MRG_I2S_PCM_SYNC
  42. #if defined(GPIO_COMBO_I2S_CK_PIN)
  43. #define GPIO_COMBO_I2S_CK_PIN_PINMUX_MODE GPIO_COMBO_I2S_CK_PIN_M_CLK
  44. #define GPIO_COMBO_I2S_WS_PIN_PINMUX_MODE GPIO_COMBO_I2S_WS_PIN_M_MRG_I2S_PCM_SYNC
  45. #define GPIO_COMBO_I2S_DAT_PIN_PINMUX_MODE GPIO_COMBO_I2S_DAT_PIN_M_MRG_I2S_PCM_RX
  46. #define GPIO_PCM_DAIPCMOUT_PIN_PINMUX_MODE GPIO_PCM_DAIPCMOUT_PIN_M_MRG_I2S_PCM_TX
  47. #endif
  48. #elif defined(MTK_WCN_CMB_AUD_IO_NAMING_STYLE_3)
  49. /* MT6595 */
  50. #define GPIO_PCM_DAICLK_PIN_PINMUX_MODE GPIO_PCM_DAICLK_PIN_M_CLK
  51. #define GPIO_PCM_DAIPCMOUT_PIN_PINMUX_MODE GPIO_PCM_DAIPCMOUT_PIN_M_MRG_DO
  52. #define GPIO_PCM_DAIPCMIN_PIN_PINMUX_MODE GPIO_PCM_DAIPCMIN_PIN_M_MRG_DI
  53. #define GPIO_PCM_DAISYNC_PIN_PINMUX_MODE GPIO_PCM_DAISYNC_PIN_M_MRG_SYNC
  54. #if defined(GPIO_COMBO_I2S_CK_PIN)
  55. #error "need to config I2S Only mode pinmux marco"
  56. #endif
  57. #endif
  58. #endif
  59. #if defined(MTK_WCN_CMB_AUD_IO_NAMING_STYLE_1)
  60. /* platform: MT6589, MT8135 */
  61. /* PCM Pin */
  62. #define GPIO_PCM_DAICLK_PIN_PCMONLY_MODE GPIO_PCM_DAICLK_PIN_M_PCM0_CK
  63. #define GPIO_PCM_DAIPCMOUT_PIN_PCMONLY_MODE GPIO_PCM_DAIPCMOUT_PIN_M_PCM0_DO
  64. #define GPIO_PCM_DAIPCMIN_PIN_PCMONLY_MODE GPIO_PCM_DAIPCMIN_PIN_M_PCM0_DI
  65. #define GPIO_PCM_DAISYNC_PIN_PCMONLY_MODE GPIO_PCM_DAISYNC_PIN_M_PCM0_WS
  66. /* I2S Pin */
  67. #if defined(GPIO_COMBO_I2S_CK_PIN)
  68. #define GPIO_COMBO_I2S_CK_PIN_I2SONLY_MODE GPIO_COMBO_I2S_CK_PIN_M_I2SIN_CK
  69. #define GPIO_COMBO_I2S_WS_PIN_I2SONLY_MODE GPIO_COMBO_I2S_WS_PIN_M_I2SIN_WS
  70. #define GPIO_COMBO_I2S_DAT_PIN_I2SONLY_MODE GPIO_COMBO_I2S_DAT_PIN_M_I2SIN_DAT
  71. #endif
  72. #elif defined(MTK_WCN_CMB_AUD_IO_NAMING_STYLE_2)
  73. /* platform: MT6592 */
  74. /* PCM Pin */
  75. #define GPIO_PCM_DAICLK_PIN_PCMONLY_MODE GPIO_PCM_DAICLK_PIN_M_F2W_CK
  76. #define GPIO_PCM_DAIPCMOUT_PIN_PCMONLY_MODE GPIO_PCM_DAIPCMOUT_PIN_M_MRG_I2S_PCM_TX
  77. #define GPIO_PCM_DAIPCMIN_PIN_PCMONLY_MODE GPIO_PCM_DAIPCMIN_PIN_M_MRG_I2S_PCM_RX
  78. #define GPIO_PCM_DAISYNC_PIN_PCMONLY_MODE GPIO_PCM_DAISYNC_PIN_M_MRG_I2S_PCM_SYNC
  79. /* I2S Pin */
  80. #if defined(GPIO_COMBO_I2S_CK_PIN)
  81. #define GPIO_COMBO_I2S_CK_PIN_I2SONLY_MODE GPIO_COMBO_I2S_CK_PIN_M_I2SIN1_BCK
  82. #define GPIO_COMBO_I2S_WS_PIN_I2SONLY_MODE GPIO_COMBO_I2S_WS_PIN_M_I2SIN1_LRCK
  83. #define GPIO_COMBO_I2S_DAT_PIN_I2SONLY_MODE GPIO_COMBO_I2S_DAT_PIN_M_I2SIN1_DATA_IN
  84. #endif
  85. #elif defined(MTK_WCN_CMB_AUD_IO_NAMING_STYLE_3)
  86. /* platform: MT6595 */
  87. /* PCM Pin */
  88. #define GPIO_PCM_DAICLK_PIN_PCMONLY_MODE GPIO_PCM_DAICLK_PIN_M_PCM0_CLK
  89. #define GPIO_PCM_DAIPCMOUT_PIN_PCMONLY_MODE GPIO_PCM_DAIPCMIN_PIN_M_PCM0_DI
  90. #define GPIO_PCM_DAIPCMIN_PIN_PCMONLY_MODE GPIO_PCM_DAIPCMOUT_PIN_M_PCM0_DO
  91. #define GPIO_PCM_DAISYNC_PIN_PCMONLY_MODE GPIO_PCM_DAISYNC_PIN_M_PCM0_SYNC
  92. /* I2S Pin */
  93. #if defined(GPIO_COMBO_I2S_CK_PIN)
  94. #error "need to config I2S Only mode pinmux marco"
  95. #endif
  96. #else
  97. /* platform: MT6573/MT6575/MT6577 */
  98. #define GPIO_PCM_DAICLK_PIN_PCMONLY_MODE GPIO_PCM_DAICLK_PIN_M_CLK
  99. #define GPIO_PCM_DAIPCMOUT_PIN_PCMONLY_MODE GPIO_PCM_DAIPCMOUT_PIN_M_DAIPCMOUT
  100. #define GPIO_PCM_DAIPCMIN_PIN_PCMONLY_MODE GPIO_PCM_DAIPCMIN_PIN_M_DAIPCMIN
  101. #define GPIO_PCM_DAISYNC_PIN_PCMONLY_MODE GPIO_PCM_DAISYNC_PIN_M_BTSYNC
  102. #if defined(GPIO_COMBO_I2S_CK_PIN)
  103. #define GPIO_COMBO_I2S_CK_PIN_I2SONLY_MODE GPIO_COMBO_I2S_CK_PIN_M_I2S0_CK
  104. #define GPIO_COMBO_I2S_WS_PIN_I2SONLY_MODE GPIO_COMBO_I2S_WS_PIN_M_I2S0_WS
  105. #define GPIO_COMBO_I2S_DAT_PIN_I2SONLY_MODE GPIO_COMBO_I2S_DAT_PIN_M_I2S0_DAT
  106. #endif
  107. #endif
  108. /*******************************************************************************
  109. * C O N S T A N T S
  110. ********************************************************************************
  111. */
  112. #if 0 /* [GeorgeKuo] remove COMBO_AUDIO FLAG */
  113. #define COMBO_AUDIO_BT_MASK (0x1UL)
  114. #define COMBO_AUDIO_BT_PCM_ON (0x1UL << 0)
  115. #define COMBO_AUDIO_BT_PCM_OFF (0x0UL << 0)
  116. #define COMBO_AUDIO_FM_MASK (0x2UL)
  117. #define COMBO_AUDIO_FM_LINEIN (0x0UL << 1)
  118. #define COMBO_AUDIO_FM_I2S (0x1UL << 1)
  119. #define COMBO_AUDIO_PIN_MASK (0x4UL)
  120. #define COMBO_AUDIO_PIN_SHARE (0x1UL << 2)
  121. #define COMBO_AUDIO_PIN_SEPARATE (0x0UL << 2)
  122. #endif
  123. /*******************************************************************************
  124. * D A T A T Y P E S
  125. ********************************************************************************
  126. */
  127. typedef enum _ENUM_FUNC_STATE_ {
  128. FUNC_ON = 0,
  129. FUNC_OFF = 1,
  130. FUNC_RST = 2,
  131. FUNC_STAT = 3,
  132. FUNC_CTRL_MAX,
  133. } ENUM_FUNC_STATE, *P_ENUM_FUNC_STATE;
  134. typedef enum _ENUM_PIN_ID_ {
  135. PIN_LDO = 0,
  136. PIN_PMU = 1,
  137. PIN_RTC = 2,
  138. PIN_RST = 3,
  139. PIN_BGF_EINT = 4,
  140. PIN_WIFI_EINT = 5,
  141. PIN_ALL_EINT = 6,
  142. PIN_UART_GRP = 7,
  143. PIN_PCM_GRP = 8,
  144. PIN_I2S_GRP = 9,
  145. PIN_SDIO_GRP = 10,
  146. PIN_GPS_SYNC = 11,
  147. PIN_GPS_LNA = 12,
  148. PIN_UART_RX = 13,
  149. PIN_ID_MAX
  150. } ENUM_PIN_ID, *P_ENUM_PIN_ID;
  151. typedef enum _ENUM_PIN_STATE_ {
  152. PIN_STA_INIT = 0,
  153. PIN_STA_OUT_L = 1,
  154. PIN_STA_OUT_H = 2,
  155. PIN_STA_IN_L = 3,
  156. PIN_STA_MUX = 4,
  157. PIN_STA_EINT_EN = 5,
  158. PIN_STA_EINT_DIS = 6,
  159. PIN_STA_DEINIT = 7,
  160. PIN_STA_SHOW = 8,
  161. PIN_STA_IN_PU = 9,
  162. PIN_STA_IN_NP = 10,
  163. PIN_STA_IN_H = 11,
  164. PIN_STA_MAX
  165. } ENUM_PIN_STATE, *P_ENUM_PIN_STATE;
  166. typedef enum _CMB_IF_TYPE_ {
  167. CMB_IF_UART = 0,
  168. CMB_IF_WIFI_SDIO = 1,
  169. CMB_IF_BGF_SDIO = 2,
  170. CMB_IF_BGWF_SDIO = 3,
  171. CMB_IF_TYPE_MAX
  172. } CMB_IF_TYPE, *P_CMB_IF_TYPE;
  173. typedef INT32(*fp_set_pin) (ENUM_PIN_STATE);
  174. typedef enum _ENUM_WL_OP_ {
  175. WL_OP_GET = 0,
  176. WL_OP_PUT = 1,
  177. WL_OP_MAX
  178. } ENUM_WL_OP, *P_ENUM_WL_OP;
  179. typedef VOID(*irq_cb) (VOID);
  180. typedef INT32(*device_audio_if_cb) (CMB_STUB_AIF_X aif, MTK_WCN_BOOL share);
  181. /*******************************************************************************
  182. * E X T E R N A L R E F E R E N C E S
  183. ********************************************************************************
  184. */
  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. INT32 wmt_plat_init(P_PWR_SEQ_TIME pPwrSeqTime);
  198. INT32 wmt_plat_deinit(VOID);
  199. INT32 wmt_plat_irq_ctrl(ENUM_FUNC_STATE state);
  200. INT32 wmt_plat_pwr_ctrl(ENUM_FUNC_STATE state);
  201. INT32 wmt_plat_ps_ctrl(ENUM_FUNC_STATE state);
  202. INT32 wmt_plat_gpio_ctrl(ENUM_PIN_ID id, ENUM_PIN_STATE state);
  203. INT32 wmt_plat_eirq_ctrl(ENUM_PIN_ID id, ENUM_PIN_STATE state);
  204. INT32 wmt_plat_sdio_ctrl(UINT32 sdioPortNum, ENUM_FUNC_STATE on);
  205. INT32 wmt_plat_wake_lock_ctrl(ENUM_WL_OP opId);
  206. VOID wmt_lib_plat_irq_cb_reg(irq_cb bgf_irq_cb);
  207. INT32 wmt_plat_audio_ctrl(CMB_STUB_AIF_X state, CMB_STUB_AIF_CTRL ctrl);
  208. VOID wmt_lib_plat_aif_cb_reg(device_audio_if_cb aif_ctrl_cb);
  209. INT32 wmt_plat_merge_if_flag_ctrl(UINT32 enagle);
  210. INT32 wmt_plat_merge_if_flag_get(VOID);
  211. INT32 wmt_plat_set_comm_if_type(ENUM_STP_TX_IF_TYPE type);
  212. ENUM_STP_TX_IF_TYPE wmt_plat_get_comm_if_type(VOID);
  213. /*******************************************************************************
  214. * F U N C T I O N S
  215. ********************************************************************************
  216. */
  217. #endif /* _WMT_PLAT_H_ */