| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300 |
- /*
- * Copyright (C) 2011-2014 MediaTek Inc.
- *
- * This program is free software: you can redistribute it and/or modify it under the terms of the
- * GNU General Public License version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- * See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with this program.
- * If not, see <http://www.gnu.org/licenses/>.
- */
- /*! \file
- \brief Declaration of library functions
- Any definitions in this file will be shared among GLUE Layer and internal Driver Stack.
- */
- #ifndef _WMT_EXP_H_
- #define _WMT_EXP_H_
- #include <mtk_wcn_cmb_stub.h>
- #include "osal.h"
- #include "wmt_plat.h"
- #include "wmt_stp_exp.h"
- /* not to reference to internal wmt */
- /* #include "wmt_core.h" */
- /*******************************************************************************
- * C O M P I L E R F L A G S
- ********************************************************************************
- */
- /*******************************************************************************
- * M A C R O S
- ********************************************************************************
- */
- #if 1 /* moved from wmt_lib.h */
- #ifndef DFT_TAG
- #define DFT_TAG "[WMT-DFT]"
- #endif
- #define WMT_LOUD_FUNC(fmt, arg...) \
- do { \
- if (gWmtDbgLvl >= WMT_LOG_LOUD) \
- osal_dbg_print(DFT_TAG "[L]%s:" fmt, __func__ , ##arg); \
- } while (0)
- #define WMT_INFO_FUNC(fmt, arg...) \
- do { \
- if (gWmtDbgLvl >= WMT_LOG_INFO) \
- osal_dbg_print(DFT_TAG "[I]%s:" fmt, __func__ , ##arg); \
- } while (0)
- #define WMT_WARN_FUNC(fmt, arg...) \
- do { \
- if (gWmtDbgLvl >= WMT_LOG_WARN) \
- osal_warn_print(DFT_TAG "[W]%s:" fmt, __func__ , ##arg); \
- } while (0)
- #define WMT_ERR_FUNC(fmt, arg...) \
- do { \
- if (gWmtDbgLvl >= WMT_LOG_ERR) \
- osal_err_print(DFT_TAG "[E]%s(%d):" fmt, __func__ , __LINE__, ##arg); \
- } while (0)
- #define WMT_DBG_FUNC(fmt, arg...) \
- do { \
- if (gWmtDbgLvl >= WMT_LOG_DBG) \
- osal_dbg_print(DFT_TAG "[D]%s:" fmt, __func__ , ##arg); \
- } while (0)
- #define WMT_TRC_FUNC(f) \
- do { \
- if (gWmtDbgLvl >= WMT_LOG_DBG) \
- osal_dbg_print(DFT_TAG "<%s> <%d>\n", __func__, __LINE__); \
- } while (0)
- #endif
- /*******************************************************************************
- * E X T E R N A L R E F E R E N C E S
- ********************************************************************************
- */
- #if 1 /* moved from wmt_lib.h */
- extern UINT32 gWmtDbgLvl;
- #endif
- extern OSAL_BIT_OP_VAR gBtWifiGpsState;
- extern OSAL_BIT_OP_VAR gGpsFmState;
- extern UINT32 gWifiProbed;
- extern MTK_WCN_BOOL g_pwr_off_flag;
- extern UINT32 g_IsNeedDoChipReset;
- /*******************************************************************************
- * C O N S T A N T S
- ********************************************************************************
- */
- #if 1 /* moved from wmt_lib.h */
- #define WMT_LOG_LOUD 4
- #define WMT_LOG_DBG 3
- #define WMT_LOG_INFO 2
- #define WMT_LOG_WARN 1
- #define WMT_LOG_ERR 0
- #endif
- #define CFG_CORE_INTERNAL_TXRX 0 /*just do TX/RX in host side */
- /*******************************************************************************
- * D A T A T Y P E S
- ********************************************************************************
- */
- #ifndef MTK_WCN_WMT_STP_EXP_SYMBOL_ABSTRACT
- typedef enum _ENUM_WMTDRV_TYPE_T {
- WMTDRV_TYPE_BT = 0,
- WMTDRV_TYPE_FM = 1,
- WMTDRV_TYPE_GPS = 2,
- WMTDRV_TYPE_WIFI = 3,
- WMTDRV_TYPE_WMT = 4,
- WMTDRV_TYPE_STP = 5,
- WMTDRV_TYPE_LPBK = 6,
- WMTDRV_TYPE_COREDUMP = 7,
- WMTDRV_TYPE_MAX
- } ENUM_WMTDRV_TYPE_T, *P_ENUM_WMTDRV_TYPE_T;
- /* TODO: [ChangeFeature][GeorgeKuo] Reconsider usage of this type */
- /* TODO: how do we extend for new chip and newer revision? */
- /* TODO: This way is hard to extend */
- typedef enum _ENUM_WMTHWVER_TYPE_T {
- WMTHWVER_E1 = 0x0,
- WMTHWVER_E2 = 0x1,
- WMTHWVER_E3 = 0x2,
- WMTHWVER_E4 = 0x3,
- WMTHWVER_E5 = 0x4,
- WMTHWVER_E6 = 0x5,
- WMTHWVER_MAX,
- WMTHWVER_INVALID = 0xff
- } ENUM_WMTHWVER_TYPE_T, *P_ENUM_WMTHWVER_TYPE_T;
- typedef enum _ENUM_WMTDSNS_TYPE_T {
- WMTDSNS_FM_DISABLE = 0,
- WMTDSNS_FM_ENABLE = 1,
- WMTDSNS_FM_GPS_DISABLE = 2,
- WMTDSNS_FM_GPS_ENABLE = 3,
- WMTDSNS_MAX
- } ENUM_WMTDSNS_TYPE_T, *P_ENUM_WMTDSNS_TYPE_T;
- typedef enum _ENUM_WMTTHERM_TYPE_T {
- WMTTHERM_ZERO = 0,
- WMTTHERM_ENABLE = WMTTHERM_ZERO + 1,
- WMTTHERM_READ = WMTTHERM_ENABLE + 1,
- WMTTHERM_DISABLE = WMTTHERM_READ + 1,
- WMTTHERM_MAX
- } ENUM_WMTTHERM_TYPE_T, *P_ENUM_WMTTHERM_TYPE_T;
- typedef enum _ENUM_WMTMSG_TYPE_T {
- WMTMSG_TYPE_POWER_ON = 0,
- WMTMSG_TYPE_POWER_OFF = 1,
- WMTMSG_TYPE_RESET = 2,
- WMTMSG_TYPE_STP_RDY = 3,
- WMTMSG_TYPE_HW_FUNC_ON = 4,
- WMTMSG_TYPE_MAX
- } ENUM_WMTMSG_TYPE_T, *P_ENUM_WMTMSG_TYPE_T;
- typedef void (*PF_WMT_CB) (ENUM_WMTDRV_TYPE_T, /* Source driver type */
- ENUM_WMTDRV_TYPE_T, /* Destination driver type */
- ENUM_WMTMSG_TYPE_T, /* Message type */
- VOID *, /* READ-ONLY buffer. Buffer is allocated and freed by WMT_drv. Client
- can't touch this buffer after this function return. */
- UINT32 /* Buffer size in unit of byte */
- );
- typedef enum _SDIO_PS_OP {
- OWN_SET = 0,
- OWN_CLR = 1,
- OWN_STATE = 2,
- } SDIO_PS_OP;
- typedef INT32(*PF_WMT_SDIO_PSOP) (SDIO_PS_OP);
- typedef enum _ENUM_WMTCHIN_TYPE_T {
- WMTCHIN_CHIPID = 0x0,
- WMTCHIN_HWVER = WMTCHIN_CHIPID + 1,
- WMTCHIN_MAPPINGHWVER = WMTCHIN_HWVER + 1,
- WMTCHIN_FWVER = WMTCHIN_MAPPINGHWVER + 1,
- WMTCHIN_MAX,
- } ENUM_WMT_CHIPINFO_TYPE_T, *P_ENUM_WMT_CHIPINFO_TYPE_T;
- #endif
- typedef enum _ENUM_WMTRSTMSG_TYPE_T {
- WMTRSTMSG_RESET_START = 0x0,
- WMTRSTMSG_RESET_END = 0x1,
- WMTRSTMSG_RESET_END_FAIL = 0x2,
- WMTRSTMSG_RESET_MAX,
- WMTRSTMSG_RESET_INVALID = 0xff
- } ENUM_WMTRSTMSG_TYPE_T, *P_ENUM_WMTRSTMSG_TYPE_T;
- typedef enum _ENUM_BT_GPS_ONOFF_STATE_T {
- WMT_BT_ON = 0,
- WMT_GPS_ON = 1,
- WMT_WIFI_ON = 2,
- WMT_FM_ON = 3,
- WMT_BT_GPS_STATE_MAX,
- WMT_BT_GPS_STATE_INVALID = 0xff
- } ENUM_BT_GPS_ONOFF_STATE_T, *P_ENUM_BT_GPS_ONOFF_STATE_T;
- #if 1 /* moved from wmt_core.h */
- typedef enum {
- WMT_SDIO_SLOT_INVALID = 0,
- WMT_SDIO_SLOT_SDIO1 = 1, /* Wi-Fi dedicated SDIO1 */
- WMT_SDIO_SLOT_SDIO2 = 2,
- WMT_SDIO_SLOT_MAX
- } WMT_SDIO_SLOT_NUM;
- typedef enum {
- WMT_SDIO_FUNC_STP = 0,
- WMT_SDIO_FUNC_WIFI = 1,
- WMT_SDIO_FUNC_MAX
- } WMT_SDIO_FUNC_TYPE;
- #endif
- typedef INT32(*wmt_wlan_probe_cb) (VOID);
- typedef INT32(*wmt_wlan_remove_cb) (VOID);
- typedef INT32(*wmt_wlan_bus_cnt_get_cb) (VOID);
- typedef INT32(*wmt_wlan_bus_cnt_clr_cb) (VOID);
- typedef struct _MTK_WCN_WMT_WLAN_CB_INFO {
- wmt_wlan_probe_cb wlan_probe_cb;
- wmt_wlan_remove_cb wlan_remove_cb;
- wmt_wlan_bus_cnt_get_cb wlan_bus_cnt_get_cb;
- wmt_wlan_bus_cnt_clr_cb wlan_bus_cnt_clr_cb;
- } MTK_WCN_WMT_WLAN_CB_INFO, *P_MTK_WCN_WMT_WLAN_CB_INFO;
- extern INT32 mtk_wcn_wmt_wlan_reg(P_MTK_WCN_WMT_WLAN_CB_INFO pWmtWlanCbInfo);
- extern INT32 mtk_wcn_wmt_wlan_unreg(VOID);
- /*******************************************************************************
- * P U B L I C D A T A
- ********************************************************************************
- */
- extern wmt_wlan_probe_cb mtk_wcn_wlan_probe;
- extern wmt_wlan_remove_cb mtk_wcn_wlan_remove;
- extern wmt_wlan_bus_cnt_get_cb mtk_wcn_wlan_bus_tx_cnt;
- extern wmt_wlan_bus_cnt_clr_cb mtk_wcn_wlan_bus_tx_cnt_clr;
- /*******************************************************************************
- * P R I V A T E D A T A
- ********************************************************************************
- */
- /*******************************************************************************
- * F U N C T I O N D E C L A R A T I O N S
- ********************************************************************************
- */
- /*subsystem function ctrl APIs*/
- extern MTK_WCN_BOOL mtk_wcn_wmt_assert(ENUM_WMTDRV_TYPE_T type, UINT32 reason);
- #ifndef MTK_WCN_WMT_STP_EXP_SYMBOL_ABSTRACT
- #define WMT_EXP_HID_API_EXPORT 0
- extern MTK_WCN_BOOL mtk_wcn_wmt_func_off(ENUM_WMTDRV_TYPE_T type);
- extern MTK_WCN_BOOL mtk_wcn_wmt_func_on(ENUM_WMTDRV_TYPE_T type);
- extern MTK_WCN_BOOL mtk_wcn_wmt_dsns_ctrl(ENUM_WMTDSNS_TYPE_T eType);
- extern MTK_WCN_BOOL mtk_wcn_wmt_assert(ENUM_WMTDRV_TYPE_T type, UINT32 reason);
- extern INT32 mtk_wcn_wmt_msgcb_reg(ENUM_WMTDRV_TYPE_T eType, PF_WMT_CB pCb);
- extern INT32 mtk_wcn_wmt_msgcb_unreg(ENUM_WMTDRV_TYPE_T eType);
- extern INT32 mtk_wcn_stp_wmt_sdio_op_reg(PF_WMT_SDIO_PSOP own_cb);
- extern INT32 mtk_wcn_stp_wmt_sdio_host_awake(VOID);
- /*
- return value:
- enable/disable thermal sensor function: true(1)/false(0)
- read thermal sensor function: thermal value
- */
- extern INT8 mtk_wcn_wmt_therm_ctrl(ENUM_WMTTHERM_TYPE_T eType);
- extern ENUM_WMTHWVER_TYPE_T mtk_wcn_wmt_hwver_get(VOID);
- #else
- #define WMT_EXP_HID_API_EXPORT 1
- #endif
- extern INT32 wmt_lib_set_aif(CMB_STUB_AIF_X aif, MTK_WCN_BOOL share); /* set AUDIO interface options */
- extern VOID wmt_lib_ps_irq_cb(VOID);
- extern VOID mtk_wcn_wmt_func_ctrl_for_plat(UINT32 on, ENUM_WMTDRV_TYPE_T type);
- extern INT32 mtk_wcn_wmt_system_state_reset(VOID);
- extern MTK_WCN_BOOL mtk_wcn_set_connsys_power_off_flag(MTK_WCN_BOOL value);
- #ifdef MTK_WCN_WMT_STP_EXP_SYMBOL_ABSTRACT
- extern VOID mtk_wcn_wmt_exp_init(VOID);
- extern VOID mtk_wcn_wmt_exp_deinit(VOID);
- #endif
- extern INT8 mtk_wcn_wmt_co_clock_flag_get(VOID);
- /*******************************************************************************
- * F U N C T I O N S
- ********************************************************************************
- */
- #endif /* _WMT_EXP_H_ */
|