blob: ee8dfa27521d9fbe6b98fe180f7575fc494563d5 [file] [log] [blame]
yu.dongc33b3072024-08-21 23:14:49 -07001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2005
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*****************************************************************************
37 *
38 * Filename:
39 * ---------
40 * gpio_hw.h
41 *
42 * Project:
43 * --------
44 * Maui_Software
45 *
46 * Description:
47 * ------------
48 * This file is intended for GPIO driver.
49 *
50 * Author:
51 * -------
52 * -------
53 *
54 *============================================================================
55 * HISTORY
56 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
57 *------------------------------------------------------------------------------
58 * removed!
59 * removed!
60 * removed!
61 *
62 * removed!
63 * removed!
64 * removed!
65 *
66 * removed!
67 * removed!
68 * removed!
69 *
70 * removed!
71 * removed!
72 * removed!
73 *
74 * removed!
75 * removed!
76 * removed!
77 *
78 * removed!
79 * removed!
80 * removed!
81 *
82 * removed!
83 * removed!
84 * removed!
85 *
86 * removed!
87 * removed!
88 * removed!
89 *
90 * removed!
91 * removed!
92 * removed!
93 *
94 * removed!
95 * removed!
96 * removed!
97 *
98 * removed!
99 * removed!
100 * removed!
101 *
102 * removed!
103 * removed!
104 * removed!
105 *
106 * removed!
107 * removed!
108 * removed!
109 *
110 * removed!
111 * removed!
112 * removed!
113 *
114 * removed!
115 * removed!
116 * removed!
117 *
118 * removed!
119 * removed!
120 * removed!
121 *
122 * removed!
123 * removed!
124 * removed!
125 *
126 * removed!
127 * removed!
128 * removed!
129 *
130 * removed!
131 * removed!
132 * removed!
133 *
134 * removed!
135 * removed!
136 * removed!
137 *
138 * removed!
139 * removed!
140 * removed!
141 *
142 * removed!
143 * removed!
144 * removed!
145 *
146 * removed!
147 * removed!
148 * removed!
149 *
150 * removed!
151 * removed!
152 * removed!
153 *
154 * removed!
155 * removed!
156 * removed!
157 *
158 * removed!
159 * removed!
160 * removed!
161 *
162 * removed!
163 * removed!
164 * removed!
165 *
166 * removed!
167 * removed!
168 * removed!
169 *
170 * removed!
171 * removed!
172 * removed!
173 *
174 * removed!
175 * removed!
176 * removed!
177 *
178 * removed!
179 * removed!
180 * removed!
181 *
182 * removed!
183 * removed!
184 * removed!
185 *
186 * removed!
187 * removed!
188 * removed!
189 *
190 * removed!
191 * removed!
192 * removed!
193 *
194 * removed!
195 * removed!
196 * removed!
197 *
198 * removed!
199 * removed!
200 * removed!
201 *
202 * removed!
203 * removed!
204 * removed!
205 *
206 * removed!
207 * removed!
208 * removed!
209 * removed!
210 * removed!
211 * removed!
212 * removed!
213 * removed!
214 * removed!
215 * removed!
216 * removed!
217 * removed!
218 * removed!
219 * removed!
220 * removed!
221 * removed!
222 * removed!
223 * removed!
224 * removed!
225 * removed!
226 * removed!
227 * removed!
228 * removed!
229 * removed!
230 * removed!
231 *------------------------------------------------------------------------------
232 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
233 *============================================================================
234 ****************************************************************************/
235#ifndef _GPIO_SW_H
236#define _GPIO_SW_H
237
238#include "drv_features_gpio.h"
239#include "dcl.h"
240#include "drv_comm.h"
241#include "kal_general_types.h"
242
243
244#if !defined(DRV_GPIO_OFF)
245//#define __DRV_GPIO_REG_DBG__
246
247#define GPIO_6280_INVAILD_INDEX 200
248#define GPIO_6280_MIN_PIN_A 60
249#define GPIO_6280_MAX_PIN_A 67
250#define GPIO_6280_MIN_PIN_B 83
251#define GPIO_6280_MAX_PIN_B 90
252
253#if defined(DRV_GPIO_6280_SPECIAL_SET_REG)
254typedef struct MT6280_GPIO_PULL_EN_SELL_MAP_TABLE_TAG
255{
256
257 kal_uint16 pullen_sel_index;
258 kal_uint16 pullen_reg_num; // which register
259 kal_uint16 pullen_remainder; // which bit in register
260 kal_uint16 pullsel_remainder; // which bit in register
261}MT6280_GPIO_PULL_EN_SELL_MAP_Table_T;
262
263#endif
264
265#ifdef __DRV_GPIO_REG_DBG__
266
267#define DRV_GPIO_WriteReg(addr,data) DRV_DBG_WriteReg(addr,data)
268#define DRV_GPIO_Reg(addr) DRV_DBG_Reg(addr)
269#define DRV_GPIO_WriteReg32(addr,data) DRV_DBG_WriteReg32(addr,data)
270#define DRV_GPIO_Reg32(addr) DRV_DBG_Reg32(addr)
271#define DRV_GPIO_WriteReg8(addr,data) DRV_DBG_WriteReg8(addr,data)
272#define DRV_GPIO_Reg8(addr) DRV_DBG_Reg8(addr)
273
274
275#define DRV_GPIO_ClearBits(addr,data) DRV_DBG_ClearBits(addr,data)
276#define DRV_GPIO_SetBits(addr,data) DRV_DBG_SetBits(addr,data)
277#define DRV_GPIO_ClearBits32(addr,data) DRV_DBG_ClearBits32(addr,data)
278#define DRV_GPIO_SetBits32(addr,data) DRV_DBG_SetBits32(addr,data)
279#define DRV_GPIO_ClearBits8(addr,data) DRV_DBG_ClearBits8(addr,data)
280#define DRV_GPIO_SetBits8(addr,data) DRV_DBG_SetBits8(addr,data)
281
282#define DRV_GPIO_SetData(addr, bitmask, value) DRV_DBG_SetData(addr, bitmask, value)
283#define DRV_GPIO_SetData32(addr, bitmask, value) DRV_DBG_SetData32(addr, bitmask, value)
284#define DRV_GPIO_SetData8(addr, bitmask, value) DRV_DBG_SetData8(addr, bitmask, value)
285
286#else //__DRV_GPIO_REG_DBG__
287
288#define DRV_GPIO_WriteReg(addr,data) DRV_WriteReg(addr,data)
289#define DRV_GPIO_Reg(addr) DRV_Reg(addr)
290#define DRV_GPIO_WriteReg32(addr,data) DRV_WriteReg32(addr,data)
291#define DRV_GPIO_Reg32(addr) DRV_Reg32(addr)
292#define DRV_GPIO_WriteReg8(addr,data) DRV_WriteReg8(addr,data)
293#define DRV_GPIO_Reg8(addr) DRV_Reg8(addr)
294
295
296#define DRV_GPIO_ClearBits(addr,data) DRV_ClearBits(addr,data)
297#define DRV_GPIO_SetBits(addr,data) DRV_SetBits(addr,data)
298#define DRV_GPIO_ClearBits32(addr,data) DRV_ClearBits32(addr,data)
299#define DRV_GPIO_SetBits32(addr,data) DRV_DBGD_SetBits32(addr,data)
300#define DRV_GPIO_ClearBits8(addr,data) DRV_ClearBits8(addr,data)
301#define DRV_GPIO_SetBits8(addr,data) DRV_SetBits8(addr,data)
302
303#define DRV_GPIO_SetData(addr, bitmask, value) DRV_SetData(addr, bitmask, value)
304#define DRV_GPIO_SetData32(addr, bitmask, value) DRV_SetData32(addr, bitmask, value)
305#define DRV_GPIO_SetData8(addr, bitmask, value) DRV_SetData8(addr, bitmask, value)
306
307#endif //__DRV_GPIO_REG_DBG__
308
309#else //#if !defined(DRV_GPIO_OFF)
310
311#define DRV_GPIO_WriteReg(addr,data)
312#define DRV_GPIO_Reg(addr) drv_dummy_return()
313#define DRV_GPIO_WriteReg32(addr,data)
314#define DRV_GPIO_Reg32(addr) drv_dummy_return()
315#define DRV_GPIO_WriteReg8(addr,data)
316#define DRV_GPIO_Reg8(addr) drv_dummy_return()
317
318
319#define DRV_GPIO_ClearBits(addr,data)
320#define DRV_GPIO_SetBits(addr,data)
321#define DRV_GPIO_ClearBits32(addr,data)
322#define DRV_GPIO_SetBits32(addr,data)
323#define DRV_GPIO_ClearBits8(addr,data)
324#define DRV_GPIO_SetBits8(addr,data)
325
326#define DRV_GPIO_SetData(addr, bitmask, value)
327#define DRV_GPIO_SetData32(addr, bitmask, value)
328#define DRV_GPIO_SetData8(addr, bitmask, value)
329
330#endif //#if !defined(DRV_GPIO_OFF)
331
332extern kal_bool Is_6280_SPEC_GPIO( kal_uint16 pin);
333extern kal_uint16 get_6280_spec_index( kal_uint16 pin_num);
334extern void GPIO_MD_InitIO(char direction, char port);
335extern void GPIO_MD_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada);
336extern DCL_UINT32 MD_get_gpio_pin_number(DCL_UINT32 flags);
337
338
339
340extern void GPIO_InitIO(char direction, char port);
341extern char GPIO_ReadIO(char port);
342extern kal_uint16 GPIO_ReadAll(void);
343extern void GPIO_WriteIO(char data, char port);
344extern void GPIO_WriteAll(kal_uint16 write_data);
345extern char GPIO_ReturnMode(char port);
346extern char GPO_ReturnMode(char port);
347extern char GPIO_ReturnDir(char port);
348extern char GPIO_ReturnDout(char port);
349extern char GPO_ReturnDout(char port);
350extern void GPO_WriteIO(char data,char port);
351extern void GPO_WriteAll(kal_uint16 write_data);
352extern void GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada);
353extern void GPO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada);
354extern void initGPIO(void);
355//extern void GPIO_init_(void);
356extern void GPIO_ALLIO(void);
357extern void GPIO_PullenSetup(kal_uint16 pin, kal_bool enable);
358extern void GPIO_DinvSetup(kal_uint16 pin, kal_bool enable);
359extern void GPIO_SetDebugMode(kal_bool enable);
360extern void GPIO_SetClkOut(char clk_num, gpio_clk_mode mode);
361extern void GPIO_SetClkDiv(char clk_num, gpio_clk_div div);
362extern void GPIO_PullSelSetup(kal_uint16 pin, kal_bool pull_up);
363extern void GPIO_TMDir(kal_bool pad_oe);
364#ifdef __CUST_NEW__
365extern void GPIO_ModeSetup_FAST(kal_uint16 pin, kal_uint16 conf_dada);
366extern void GPIO_InitIO_FAST(char direction, char port);
367extern char GPIO_ReadIO_FAST(char port);
368extern void GPIO_WriteIO_FAST(char data, char port);
369#endif/* __CUST_NEW__ */
370extern void GPIO_Check_MultiPins(GPIOCheckStruct *check_ptr, kal_uint32 pin_cnt);
371extern void GPIO_WriteIO_Force(char data, char port);
372extern void GPIO_WriteIO_FAST2(char data, kal_uint16 no, kal_uint16 remainder_shift);
373#endif
374