MT6620: add the new driver JB2 V1.0
[firefly-linux-kernel-4.4.55.git] / drivers / mtk_wcn_combo / common / include / wmt_exp.h
1 /*! \file
2     \brief  Declaration of library functions
3
4     Any definitions in this file will be shared among GLUE Layer and internal Driver Stack.
5 */
6
7
8
9 #ifndef _WMT_EXP_H_
10 #define _WMT_EXP_H_
11
12 #include <mach/mtk_wcn_cmb_stub.h>
13 #include "osal.h"
14 //not to reference to internal wmt
15 //#include "wmt_core.h"
16 /*******************************************************************************
17 *                         C O M P I L E R   F L A G S
18 ********************************************************************************
19 */
20
21 /*******************************************************************************
22 *                                 M A C R O S
23 ********************************************************************************
24 */
25 #if 1 /* moved from wmt_lib.h */
26 #ifndef DFT_TAG
27 #define DFT_TAG         "[WMT-DFT]"
28 #endif
29
30 #define WMT_LOUD_FUNC(fmt, arg...)   if (gWmtDbgLvl >= WMT_LOG_LOUD) { osal_dbg_print(DFT_TAG "[L]%s:"  fmt, __FUNCTION__ ,##arg);}
31 #define WMT_INFO_FUNC(fmt, arg...)   if (gWmtDbgLvl >= WMT_LOG_INFO) { osal_info_print(DFT_TAG "[I]%s:"  fmt, __FUNCTION__ ,##arg);}
32 #define WMT_WARN_FUNC(fmt, arg...)   if (gWmtDbgLvl >= WMT_LOG_WARN) { osal_warn_print(DFT_TAG "[W]%s:"  fmt, __FUNCTION__ ,##arg);}
33 #define WMT_ERR_FUNC(fmt, arg...)    if (gWmtDbgLvl >= WMT_LOG_ERR) { osal_err_print(DFT_TAG "[E]%s(%d):"  fmt, __FUNCTION__ , __LINE__, ##arg);}
34 #define WMT_DBG_FUNC(fmt, arg...)    if (gWmtDbgLvl >= WMT_LOG_DBG) { osal_dbg_print(DFT_TAG "[D]%s:"  fmt, __FUNCTION__ ,##arg);}
35 #define WMT_TRC_FUNC(f)              if (gWmtDbgLvl >= WMT_LOG_DBG) { osal_dbg_print(DFT_TAG "<%s> <%d>\n", __FUNCTION__, __LINE__);}
36 #endif
37
38 /*******************************************************************************
39 *                    E X T E R N A L   R E F E R E N C E S
40 ********************************************************************************
41 */
42 #if 1 /* moved from wmt_lib.h */
43 extern UINT32 gWmtDbgLvl ;
44 #endif
45
46 /*******************************************************************************
47 *                              C O N S T A N T S
48 ********************************************************************************
49 */
50 #if 1 /* moved from wmt_lib.h */
51 #define WMT_LOG_LOUD    4
52 #define WMT_LOG_DBG     3
53 #define WMT_LOG_INFO    2
54 #define WMT_LOG_WARN    1
55 #define WMT_LOG_ERR     0
56 #endif
57
58 #define CFG_WMT_PS_SUPPORT 1 /* moved from wmt_lib.h */
59 /*******************************************************************************
60 *                             D A T A   T Y P E S
61 ********************************************************************************
62 */
63 typedef enum _ENUM_WMTDRV_TYPE_T {
64     WMTDRV_TYPE_BT = 0,
65     WMTDRV_TYPE_FM = 1,
66     WMTDRV_TYPE_GPS = 2,
67     WMTDRV_TYPE_WIFI = 3,
68     WMTDRV_TYPE_WMT = 4,
69     WMTDRV_TYPE_STP = 5,
70     WMTDRV_TYPE_SDIO1 = 6,
71     WMTDRV_TYPE_SDIO2 = 7,
72     WMTDRV_TYPE_LPBK = 8,
73     WMTDRV_TYPE_COREDUMP = 9,
74     WMTDRV_TYPE_MAX
75 } ENUM_WMTDRV_TYPE_T, *P_ENUM_WMTDRV_TYPE_T;
76
77 // TODO: [ChangeFeature][GeorgeKuo] Reconsider usage of this type
78 // TODO: how do we extend for new chip and newer revision?
79 // TODO: This way is hard to extend
80 typedef enum _ENUM_WMTHWVER_TYPE_T{
81     WMTHWVER_MT6620_E1 = 0x0,
82     WMTHWVER_MT6620_E2 = 0x1,
83     WMTHWVER_MT6620_E3 = 0x2,
84     WMTHWVER_MT6620_E4 = 0x3,
85     WMTHWVER_MT6620_E5 = 0x4,
86     WMTHWVER_MT6620_E6 = 0x5,
87     WMTHWVER_MT6620_E7 = 0x6,
88     WMTHWVER_MT6620_MAX,
89     WMTHWVER_INVALID = 0xff
90 } ENUM_WMTHWVER_TYPE_T, *P_ENUM_WMTHWVER_TYPE_T;
91
92 typedef enum _ENUM_WMTCHIN_TYPE_T{
93    WMTCHIN_CHIPID = 0x0,
94    WMTCHIN_HWVER = WMTCHIN_CHIPID + 1,
95    WMTCHIN_MAPPINGHWVER = WMTCHIN_HWVER + 1,
96    WMTCHIN_FWVER = WMTCHIN_MAPPINGHWVER + 1,
97    WMTCHIN_MAX,
98    
99 }ENUM_WMT_CHIPINFO_TYPE_T, *P_ENUM_WMT_CHIPINFO_TYPE_T;
100
101 typedef enum _ENUM_WMTDSNS_TYPE_T{
102     WMTDSNS_FM_DISABLE = 0,
103     WMTDSNS_FM_ENABLE = 1,
104     WMTDSNS_FM_GPS_DISABLE = 2,
105     WMTDSNS_FM_GPS_ENABLE = 3,
106     WMTDSNS_MAX
107 } ENUM_WMTDSNS_TYPE_T, *P_ENUM_WMTDSNS_TYPE_T;
108
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
117 typedef enum _ENUM_WMTMSG_TYPE_T {
118     WMTMSG_TYPE_POWER_ON = 0,
119     WMTMSG_TYPE_POWER_OFF = 1,
120     WMTMSG_TYPE_RESET = 2,
121     WMTMSG_TYPE_STP_RDY= 3,
122     WMTMSG_TYPE_HW_FUNC_ON= 4,
123     WMTMSG_TYPE_MAX
124 } ENUM_WMTMSG_TYPE_T, *P_ENUM_WMTMSG_TYPE_T;
125
126 typedef enum _ENUM_WMTRSTMSG_TYPE_T{
127     WMTRSTMSG_RESET_START = 0x0,
128     WMTRSTMSG_RESET_END = 0x1,
129     WMTRSTMSG_RESET_MAX,
130     WMTRSTMSG_RESET_INVALID = 0xff
131 } ENUM_WMTRSTMSG_TYPE_T, *P_ENUM_WMTRSTMSG_TYPE_T;
132
133 typedef void (*PF_WMT_CB)(
134     ENUM_WMTDRV_TYPE_T, /* Source driver type */
135     ENUM_WMTDRV_TYPE_T, /* Destination driver type */
136     ENUM_WMTMSG_TYPE_T, /* Message type */
137     VOID *, /* READ-ONLY buffer. Buffer is allocated and freed by WMT_drv. Client
138             can't touch this buffer after this function return. */
139     UINT32 /* Buffer size in unit of byte */
140 );
141
142 typedef enum _SDIO_PS_OP{
143     OWN_SET = 0,
144     OWN_CLR = 1,
145     OWN_STATE = 2,
146 } SDIO_PS_OP;
147
148
149 typedef INT32 (*PF_WMT_SDIO_PSOP)(SDIO_PS_OP);
150
151 #if 1 /* moved from wmt_core.h */
152 typedef enum {
153     WMT_SDIO_SLOT_INVALID = 0,
154     WMT_SDIO_SLOT_SDIO1 = 1, /* Wi-Fi dedicated SDIO1*/
155     WMT_SDIO_SLOT_SDIO2 = 2,
156     WMT_SDIO_SLOT_MAX
157 } WMT_SDIO_SLOT_NUM;
158
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
166 /*******************************************************************************
167 *                            P U B L I C   D A T A
168 ********************************************************************************
169 */
170
171 /*******************************************************************************
172 *                           P R I V A T E   D A T A
173 ********************************************************************************
174 */
175
176
177
178
179
180 /*******************************************************************************
181 *                  F U N C T I O N   D E C L A R A T I O N S
182 ********************************************************************************
183 */
184 /*subsystem function ctrl APIs*/
185 extern MTK_WCN_BOOL
186 mtk_wcn_wmt_func_off (
187     ENUM_WMTDRV_TYPE_T type
188     );
189
190 extern MTK_WCN_BOOL
191 mtk_wcn_wmt_func_on (
192     ENUM_WMTDRV_TYPE_T type
193     );
194
195 extern MTK_WCN_BOOL mtk_wcn_wmt_dsns_ctrl (
196     ENUM_WMTDSNS_TYPE_T eType
197     );
198
199 extern MTK_WCN_BOOL mtk_wcn_wmt_assert (
200     VOID
201     );
202
203 extern INT32 mtk_wcn_wmt_msgcb_reg (
204     ENUM_WMTDRV_TYPE_T eType,
205     PF_WMT_CB pCb
206     );
207
208 extern INT32 mtk_wcn_wmt_msgcb_unreg (
209     ENUM_WMTDRV_TYPE_T eType
210     );
211
212 extern INT32
213 mtk_wcn_stp_wmt_sdio_op_reg (
214     PF_WMT_SDIO_PSOP own_cb
215     );
216
217 extern INT32 
218 mtk_wcn_stp_wmt_sdio_host_awake(
219     VOID
220     );
221 /*
222 return value:
223 enable/disable thermal sensor function: true(1)/false(0)
224 read thermal sensor function: thermal value
225
226 */
227 extern INT8
228 mtk_wcn_wmt_therm_ctrl (
229     ENUM_WMTTHERM_TYPE_T eType
230     );
231
232 extern ENUM_WMTHWVER_TYPE_T
233 mtk_wcn_wmt_hwver_get (VOID);
234
235 extern INT32
236 mtk_wcn_wmt_chipid_query (VOID);
237
238
239 extern INT32 wmt_lib_set_aif (
240     CMB_STUB_AIF_X aif,
241     MTK_WCN_BOOL share
242     ); /* set AUDIO interface options */
243 extern VOID
244 wmt_lib_ps_irq_cb(VOID);
245 /*******************************************************************************
246 *                              F U N C T I O N S
247 ********************************************************************************
248 */
249
250 #endif /* _WMT_EXP_H_ */
251
252
253
254
255
256
257