add rk3288 pinctrl dts code
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / mt5931_kk / drv_wlan / os / linux / hif / sdio / include / hif.h
1 /*
2 ** $Id: //Department/DaVinci/BRANCHES/MT662X_593X_WIFI_DRIVER_V2_3/os/linux/hif/sdio/include/hif.h#1 $
3 */
4
5 /*! \file   "hif.h"
6     \brief  Functions for the driver to register bus and setup the IRQ
7
8     Functions for the driver to register bus and setup the IRQ
9 */
10
11 /*******************************************************************************
12 * Copyright (c) 2007 MediaTek Inc.
13 *
14 * All rights reserved. Copying, compilation, modification, distribution
15 * or any other use whatsoever of this material is strictly prohibited
16 * except in accordance with a Software License Agreement with
17 * MediaTek Inc.
18 ********************************************************************************
19 */
20
21 /*******************************************************************************
22 * LEGAL DISCLAIMER
23 *
24 * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
25 * AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK
26 * SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE
27 * PROVIDED TO BUYER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY
28 * DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
29 * LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
30 * PARTICULAR PURPOSE OR NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE
31 * ANY WARRANTY WHATSOEVER WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY
32 * WHICH MAY BE USED BY, INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK
33 * SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY
34 * WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE
35 * FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S SPECIFICATION OR TO
36 * CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
37 *
38 * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
39 * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL
40 * BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT
41 * ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY
42 * BUYER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
43 *
44 * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
45 * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT
46 * OF LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING
47 * THEREOF AND RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN
48 * FRANCISCO, CA, UNDER THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE
49 * (ICC).
50 ********************************************************************************
51 */
52
53 /*
54 ** $Log: hif.h $
55  *
56  * 11 01 2010 yarco.yang
57  * [WCXRP00000149] [MT6620 WI-Fi][Driver]Fine tune performance on MT6516 platform
58  * Add GPIO debug function
59  *
60  * 10 19 2010 jeffrey.chang
61  * [WCXRP00000120] [MT6620 Wi-Fi][Driver] Refine linux kernel module to the license of MTK propietary and enable MTK HIF by default
62  * Refine linux kernel module to the license of MTK and enable MTK HIF
63  *
64  * 08 18 2010 jeffrey.chang
65  * NULL
66  * support multi-function sdio
67  *
68  * 08 17 2010 cp.wu
69  * NULL
70  * add ENE SDIO host workaround for x86 linux platform.
71  *
72  * 07 08 2010 cp.wu
73  * 
74  * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
75  *
76  * 06 06 2010 kevin.huang
77  * [WPD00003832][MT6620 5931] Create driver base 
78  * [MT6620 5931] Create driver base
79  *
80  * 03 24 2010 jeffrey.chang
81  * [WPD00003826]Initial import for Linux port 
82  * initial import for Linux port
83 **  \main\maintrunk.MT5921\4 2009-10-20 17:38:28 GMT mtk01090
84 **  Refine driver unloading and clean up procedure. Block requests, stop main thread and clean up queued requests, and then stop hw.
85 **  \main\maintrunk.MT5921\3 2009-09-28 20:19:20 GMT mtk01090
86 **  Add private ioctl to carry OID structures. Restructure public/private ioctl interfaces to Linux kernel.
87 **  \main\maintrunk.MT5921\2 2009-08-18 22:57:05 GMT mtk01090
88 **  Add Linux SDIO (with mmc core) support.
89 **  Add Linux 2.6.21, 2.6.25, 2.6.26.
90 **  Fix compile warning in Linux.
91 **  \main\maintrunk.MT5921\2 2008-09-22 23:18:17 GMT mtk01461
92 **  Update driver for code review
93 ** Revision 1.1  2007/07/05 07:25:33  MTK01461
94 ** Add Linux initial code, modify doc, add 11BB, RF init code
95 **
96 ** Revision 1.3  2007/06/27 02:18:51  MTK01461
97 ** Update SCAN_FSM, Initial(Can Load Module), Proc(Can do Reg R/W), TX API
98 **
99 */
100
101 #ifndef _HIF_H
102 #define _HIF_H
103
104
105 #if MTK_WCN_HIF_SDIO
106 #include "hif_sdio.h"
107 #endif
108
109 /*******************************************************************************
110 *                         C O M P I L E R   F L A G S
111 ********************************************************************************
112 */
113
114
115 /*******************************************************************************
116 *                    E X T E R N A L   R E F E R E N C E S
117 ********************************************************************************
118 */
119
120 /*******************************************************************************
121 *                              C O N S T A N T S
122 ********************************************************************************
123 */
124 #define SDIO_X86_WORKAROUND_WRITE_MCR   0x00C4
125
126 /*******************************************************************************
127 *                             D A T A   T Y P E S
128 ********************************************************************************
129 */
130
131 /* host interface's private data structure, which is attached to os glue
132 ** layer info structure.
133  */
134 typedef struct _GL_HIF_INFO_T {
135 #if MTK_WCN_HIF_SDIO 
136     MTK_WCN_HIF_SDIO_CLTCTX cltCtx;
137     const MTK_WCN_HIF_SDIO_FUNCINFO *prFuncInfo;
138 #else
139     struct sdio_func        *func;
140 #endif
141     BOOLEAN                 fgIntReadClear;
142     BOOLEAN                 fgMbxReadClear;
143 } GL_HIF_INFO_T, *P_GL_HIF_INFO_T;
144
145
146 #if CFG_DBG_GPIO_PINS
147
148 extern void
149 mtk_wcn_stp_debug_gpio_assert(UINT_32 dwIndex, UINT_32 dwMethod);
150
151
152 /* Platform DEPENDENT configurations: MT6516 GPIO pin name */
153 #define GPIO_6516(x) (GPIO##x)
154 #define GPIO_PLATFORM(x) GPIO_6516(x)
155
156 /* Platform independent configurations */
157 #define DBG_TIE_DIR 0x40000000UL
158 #define DBG_LOW 0x0UL
159 #define DBG_HIGH 0x1UL
160 #define DBG_TIE_LOW (DBG_TIE_DIR | DBG_LOW)
161 #define DBG_TIE_HIGH (DBG_TIE_DIR | DBG_HIGH)
162
163 #define DBG_TOGGLE(x) (0x80000000UL | x)
164 #define DBG_TOGGLE_NUM(x) (x & 0xFFF)
165 #define GPIO_INVALID 0xFFFF
166
167 typedef enum {
168     IDX_ERR = 0,
169     IDX_TX_THREAD,
170     IDX_TX_REQ,
171     IDX_TX_PORT_WRITE,
172     IDX_STP_MTX_BT,
173     IDX_STP_MTX_FM, /* 5 */
174     IDX_STP_MTX_GPS,
175     IDX_STP_MTX_WIFI,
176     IDX_STP_MTX_WMT,
177     IDX_LOOP_CNT,
178     IDX_NO_BUF, /*10 */
179     IDX_BT_TX,
180     IDX_BT_RX,
181     IDX_GPS_RX,
182     IDX_GPS_2,
183     IDX_GPS_3,
184     IDX_GPS_TX,
185     IDX_STP_MAX
186 } DBG_PIN;
187
188 #define DBG_MTX_OFFSET (IDX_STP_MTX_BT) /* index of mutex0 */
189 #endif
190 /*******************************************************************************
191 *                            P U B L I C   D A T A
192 ********************************************************************************
193 */
194
195 /*******************************************************************************
196 *                           P R I V A T E   D A T A
197 ********************************************************************************
198 */
199
200 /*******************************************************************************
201 *                                 M A C R O S
202 ********************************************************************************
203 */
204
205 /*******************************************************************************
206 *                   F U N C T I O N   D E C L A R A T I O N S
207 ********************************************************************************
208 */
209
210 WLAN_STATUS
211 glRegisterBus(
212     probe_card pfProbe,
213     remove_card pfRemove
214     );
215
216 VOID
217 glUnregisterBus(
218     remove_card pfRemove
219     );
220
221 VOID
222 glSetHifInfo (
223     P_GLUE_INFO_T prGlueInfo,
224     UINT_32 u4Cookie
225     );
226
227 VOID
228 glClearHifInfo (
229     P_GLUE_INFO_T prGlueInfo
230     );
231
232 BOOL
233 glBusInit (
234     PVOID pvData
235     );
236
237 VOID
238 glBusRelease (
239     PVOID pData
240     );
241
242 INT_32
243 glBusSetIrq (
244     PVOID pvData,
245     PVOID pfnIsr,
246     PVOID pvCookie
247     );
248
249 VOID
250 glBusFreeIrq (
251     PVOID pvData,
252     PVOID pvCookie
253     );
254
255 VOID
256 glSetPowerState (
257     IN P_GLUE_INFO_T  prGlueInfo,
258     IN UINT_32 ePowerMode
259     );
260
261 /*******************************************************************************
262 *                              F U N C T I O N S
263 ********************************************************************************
264 */
265 #endif /* _HIF_H */