Merge tag 'v3.10.76' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / include / mach / mt_gpio_core.h
CommitLineData
6fa3eb70
S
1#ifndef _MT_GPIO_CORE_H_
2#define _MT_GPIO_CORE_H_
3/*
4#if (defined(CONFIG_FPGA))
5//#define CONFIG_MT_GPIO_FPGA_ENABLE
6#include <mach/mt_gpio_fpga.h>
7#else
8// FIX-ME: marked for early porting
9#include <cust_gpio_usage.h>
10#include <mach/mt_gpio_base.h>
11#endif
12#include <mach/mt_gpio_ext.h>
13*/
14#ifdef CONFIG_OF
15#include <linux/of_device.h>
16#endif
17/******************************************************************************
18 MACRO Definition
19******************************************************************************/
20#define GPIO_DEVICE "mt-gpio"
21#define VERSION GPIO_DEVICE
22
23#define GPIOTAG "[GPIO] "
24#define GPIOLOG(fmt, arg...) printk(GPIOTAG fmt, ##arg)
25#define GPIOMSG(fmt, arg...) printk(fmt, ##arg)
26#define GPIOERR(fmt, arg...) printk(KERN_ERR GPIOTAG "%5d: "fmt, __LINE__, ##arg)
27#define GPIOFUC(fmt, arg...) /* printk(GPIOTAG "%s\n", __FUNCTION__) */
28/*----------------------------------------------------------------------------*/
29/* Error Code No. */
30#define RSUCCESS 0
31#define ERACCESS 1
32#define ERINVAL 2
33#define ERWRAPPER 3
34
35#define GPIO_RETERR(res, fmt, args...) \
36 do { \
37 printk(KERN_ERR GPIOTAG "%s:%04d: " fmt"\n", __func__, __LINE__, ##args);\
38 return res; \
39 } while (0)
40#define GIO_INVALID_OBJ(ptr) ((ptr) != mt_gpio)
41
42enum {
43 MT_BASE = 0,
44 MT_EXT,
45 MT_NOT_SUPPORT,
46};
47#define MT_GPIO_PLACE(pin) ({\
48 int ret = -1;\
49 if ((pin >= MT_GPIO_BASE_START) && (pin < MT_GPIO_BASE_MAX)) {\
50 ret = MT_BASE;\
51 GPIOFUC("pin in base is %d\n", (int)pin);\
52 } else if ((pin >= MT_GPIO_EXT_START) && (pin < MT_GPIO_EXT_MAX)) {\
53 ret = MT_EXT;\
54 GPIOFUC("pin in ext is %d\n", (int)pin);\
55 } else{\
56 GPIOERR("Pin number error %d\n", (int)pin); \
57 ret = -1;\
58 } \
59 ret; })
60/* int where_is(unsigned long pin) */
61/* { */
62/* int ret = -1; */
63/* // GPIOLOG("pin is %d\n",pin); */
64/* if((pin >= MT_GPIO_BASE_START) && (pin < MT_GPIO_BASE_MAX)){ */
65/* ret = MT_BASE; */
66/* //GPIOLOG("pin in base is %d\n",pin); */
67/* }else if((pin >= MT_GPIO_EXT_START) && (pin < MT_GPIO_EXT_MAX)){ */
68/* ret = MT_EXT; */
69/* //GPIOLOG("pin in ext is %d\n",pin); */
70/* }else{ */
71/* GPIOERR("Pin number error %d\n",pin); */
72/* ret = -1; */
73/* } */
74/* return ret; */
75/* } */
76/*decrypt pin*/
77
78/*---------------------------------------------------------------------------*/
79int mt_set_gpio_dir_base(unsigned long pin, unsigned long dir);
80int mt_get_gpio_dir_base(unsigned long pin);
81int mt_set_gpio_pull_enable_base(unsigned long pin, unsigned long enable);
82int mt_get_gpio_pull_enable_base(unsigned long pin);
83int mt_set_gpio_smt_base(unsigned long pin, unsigned long enable);
84int mt_get_gpio_smt_base(unsigned long pin);
85int mt_set_gpio_ies_base(unsigned long pin, unsigned long enable);
86int mt_get_gpio_ies_base(unsigned long pin);
87int mt_set_gpio_pull_select_base(unsigned long pin, unsigned long select);
88int mt_get_gpio_pull_select_base(unsigned long pin);
89int mt_set_gpio_inversion_base(unsigned long pin, unsigned long enable);
90int mt_get_gpio_inversion_base(unsigned long pin);
91int mt_set_gpio_out_base(unsigned long pin, unsigned long output);
92int mt_get_gpio_out_base(unsigned long pin);
93int mt_get_gpio_in_base(unsigned long pin);
94int mt_set_gpio_mode_base(unsigned long pin, unsigned long mode);
95int mt_get_gpio_mode_base(unsigned long pin);
96#ifdef CONFIG_PM
97void mt_gpio_suspend(void);
98void mt_gpio_resume(void);
99#endif /*CONFIG_PM */
100#ifdef CONFIG_OF
101void get_gpio_vbase(struct device_node *node);
102void get_io_cfg_vbase(void);
103#endif
104#ifdef CONFIG_MD32_SUPPORT
105void md32_gpio_handle_init(void);
106#endif
107
108int mt_set_gpio_dir_ext(unsigned long pin, unsigned long dir);
109int mt_get_gpio_dir_ext(unsigned long pin);
110int mt_set_gpio_pull_enable_ext(unsigned long pin, unsigned long enable);
111int mt_get_gpio_pull_enable_ext(unsigned long pin);
112int mt_set_gpio_smt_ext(unsigned long pin, unsigned long enable);
113int mt_get_gpio_smt_ext(unsigned long pin);
114int mt_set_gpio_ies_ext(unsigned long pin, unsigned long enable);
115int mt_get_gpio_ies_ext(unsigned long pin);
116int mt_set_gpio_pull_select_ext(unsigned long pin, unsigned long select);
117int mt_get_gpio_pull_select_ext(unsigned long pin);
118int mt_set_gpio_inversion_ext(unsigned long pin, unsigned long enable);
119int mt_get_gpio_inversion_ext(unsigned long pin);
120int mt_set_gpio_out_ext(unsigned long pin, unsigned long output);
121int mt_get_gpio_out_ext(unsigned long pin);
122int mt_get_gpio_in_ext(unsigned long pin);
123int mt_set_gpio_mode_ext(unsigned long pin, unsigned long mode);
124int mt_get_gpio_mode_ext(unsigned long pin);
125
126void mt_gpio_pin_decrypt(unsigned long *cipher);
127int mt_gpio_create_attr(struct device *dev);
128int mt_gpio_delete_attr(struct device *dev);
129
130#endif