import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / mach-mt8127 / include / mach / mt_gpio_ext.h
1 #ifndef _MT_GPIO_EXT_H_
2 #define _MT_GPIO_EXT_H_
3
4 #include <mach/mt_pmic_wrap.h>
5
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; \
13 int ret; \
14 ret = GPIOEXT_RD(REG);\
15 ext_data = ret;\
16 (ret < 0)?-1:(GPIOEXT_WR(REG,ext_data & ~((unsigned long)(BIT))))})
17
18 #define MT_GPIO_EXT_START MT_GPIO_BASE_MAX
19 typedef enum GPIO_PIN_EXT
20 {
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,
27 GPIO_EXT_MAX,
28 }GPIO_PIN_EXT;
29
30 typedef enum GPIO_PIN_EXT1
31 {
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
39 }GPIO_PIN_EXT1;
40 #define MT_GPIO_MAX_PIN MT_GPIO_EXT_MAX
41
42 /*----------------------------------------------------------------------------*/
43 typedef struct {
44 unsigned short val;
45 unsigned short set;
46 unsigned short rst;
47 unsigned short _align;
48 } EXT_VAL_REGS;
49 /*----------------------------------------------------------------------------*/
50 typedef struct {
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*/
58 } GPIOEXT_REGS;
59
60 #endif //_MT_GPIO_EXT_H_