1 #ifndef _MT_GPIO_EXT_H_
2 #define _MT_GPIO_EXT_H_
4 #include <mach/mt_pmic_wrap.h>
6 #define GPIOEXT_WR(addr, data) pwrap_write((unsigned long)addr, data)
7 #define GPIOEXT_RD(addr) ({ \
8 unsigned long ext_data; \
9 (pwrap_read((U32)addr,(U32 *)&ext_data) != 0)?-1:ext_data;})
10 #define GPIOEXT_SET_BITS(BIT,REG) (GPIOEXT_WR(REG, (unsigned long)(BIT)))
11 #define GPIOEXT_CLR_BITS(BIT,REG) ({ \
12 unsigned long ext_data; \
14 ret = GPIOEXT_RD(REG);\
16 (ret < 0)?-1:(GPIOEXT_WR(REG,ext_data & ~((unsigned long)(BIT))))})
18 #define MT_GPIO_EXT_START MT_GPIO_BASE_MAX
19 typedef enum GPIO_PIN_EXT
21 GPIO143
= MT_GPIO_EXT_START
,
22 GPIO144
, GPIO145
, GPIO146
, GPIO147
, GPIO148
, GPIO149
, GPIO150
, GPIO151
,
23 GPIO152
, GPIO153
, GPIO154
, GPIO155
, GPIO156
, GPIO157
, GPIO158
, GPIO159
,
24 GPIO160
, GPIO161
, GPIO162
, GPIO163
, GPIO164
, GPIO165
, GPIO166
, GPIO167
,
25 GPIO168
, GPIO169
, GPIO170
, GPIO171
, GPIO172
, GPIO173
, GPIO174
, GPIO175
,
26 GPIO176
, GPIO177
, GPIO178
, GPIO179
, GPIO180
, GPIO181
, GPIO182
, GPIO183
,
30 typedef enum GPIO_PIN_EXT1
32 GPIOEXT0
= MT_GPIO_EXT_START
,
33 GPIOEXT1
, GPIOEXT2
, GPIOEXT3
, GPIOEXT4
, GPIOEXT5
, GPIOEXT6
, GPIOEXT7
,
34 GPIOEXT8
, GPIOEXT9
, GPIOEXT10
, GPIOEXT11
, GPIOEXT12
, GPIOEXT13
, GPIOEXT14
, GPIOEXT15
,
35 GPIOEXT16
, GPIOEXT17
, GPIOEXT18
, GPIOEXT19
, GPIOEXT20
, GPIOEXT21
, GPIOEXT22
, GPIOEXT23
,
36 GPIOEXT24
, GPIOEXT25
, GPIOEXT26
, GPIOEXT27
, GPIOEXT28
, GPIOEXT29
, GPIOEXT30
, GPIOEXT31
,
37 GPIOEXT32
, GPIOEXT33
, GPIOEXT34
, GPIOEXT35
, GPIOEXT36
, GPIOEXT37
, GPIOEXT38
, GPIOEXT39
,
38 GPIOEXT40
, MT_GPIO_EXT_MAX
40 #define MT_GPIO_MAX_PIN MT_GPIO_EXT_MAX
42 /*----------------------------------------------------------------------------*/
47 unsigned short _align
;
49 /*----------------------------------------------------------------------------*/
51 EXT_VAL_REGS dir
[4]; /*0x0000 ~ 0x001F: 32 bytes*/
52 EXT_VAL_REGS pullen
[4]; /*0x0020 ~ 0x003F: 32 bytes*/
53 EXT_VAL_REGS pullsel
[4]; /*0x0040 ~ 0x005F: 32 bytes*/
54 EXT_VAL_REGS dinv
[4]; /*0x0060 ~ 0x007F: 32 bytes*/
55 EXT_VAL_REGS dout
[4]; /*0x0080 ~ 0x009F: 32 bytes*/
56 EXT_VAL_REGS din
[4]; /*0x00A0 ~ 0x00BF: 32 bytes*/
57 EXT_VAL_REGS mode
[10]; /*0x00C0 ~ 0x010F: 80 bytes*/
60 #endif //_MT_GPIO_EXT_H_