Commit | Line | Data |
---|---|---|
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 | ||
42 | enum { | |
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 | /*---------------------------------------------------------------------------*/ | |
79 | int mt_set_gpio_dir_base(unsigned long pin, unsigned long dir); | |
80 | int mt_get_gpio_dir_base(unsigned long pin); | |
81 | int mt_set_gpio_pull_enable_base(unsigned long pin, unsigned long enable); | |
82 | int mt_get_gpio_pull_enable_base(unsigned long pin); | |
83 | int mt_set_gpio_smt_base(unsigned long pin, unsigned long enable); | |
84 | int mt_get_gpio_smt_base(unsigned long pin); | |
85 | int mt_set_gpio_ies_base(unsigned long pin, unsigned long enable); | |
86 | int mt_get_gpio_ies_base(unsigned long pin); | |
87 | int mt_set_gpio_pull_select_base(unsigned long pin, unsigned long select); | |
88 | int mt_get_gpio_pull_select_base(unsigned long pin); | |
89 | int mt_set_gpio_inversion_base(unsigned long pin, unsigned long enable); | |
90 | int mt_get_gpio_inversion_base(unsigned long pin); | |
91 | int mt_set_gpio_out_base(unsigned long pin, unsigned long output); | |
92 | int mt_get_gpio_out_base(unsigned long pin); | |
93 | int mt_get_gpio_in_base(unsigned long pin); | |
94 | int mt_set_gpio_mode_base(unsigned long pin, unsigned long mode); | |
95 | int mt_get_gpio_mode_base(unsigned long pin); | |
96 | #ifdef CONFIG_PM | |
97 | void mt_gpio_suspend(void); | |
98 | void mt_gpio_resume(void); | |
99 | #endif /*CONFIG_PM */ | |
100 | #ifdef CONFIG_OF | |
101 | void get_gpio_vbase(struct device_node *node); | |
102 | void get_io_cfg_vbase(void); | |
103 | #endif | |
104 | #ifdef CONFIG_MD32_SUPPORT | |
105 | void md32_gpio_handle_init(void); | |
106 | #endif | |
107 | ||
108 | int mt_set_gpio_dir_ext(unsigned long pin, unsigned long dir); | |
109 | int mt_get_gpio_dir_ext(unsigned long pin); | |
110 | int mt_set_gpio_pull_enable_ext(unsigned long pin, unsigned long enable); | |
111 | int mt_get_gpio_pull_enable_ext(unsigned long pin); | |
112 | int mt_set_gpio_smt_ext(unsigned long pin, unsigned long enable); | |
113 | int mt_get_gpio_smt_ext(unsigned long pin); | |
114 | int mt_set_gpio_ies_ext(unsigned long pin, unsigned long enable); | |
115 | int mt_get_gpio_ies_ext(unsigned long pin); | |
116 | int mt_set_gpio_pull_select_ext(unsigned long pin, unsigned long select); | |
117 | int mt_get_gpio_pull_select_ext(unsigned long pin); | |
118 | int mt_set_gpio_inversion_ext(unsigned long pin, unsigned long enable); | |
119 | int mt_get_gpio_inversion_ext(unsigned long pin); | |
120 | int mt_set_gpio_out_ext(unsigned long pin, unsigned long output); | |
121 | int mt_get_gpio_out_ext(unsigned long pin); | |
122 | int mt_get_gpio_in_ext(unsigned long pin); | |
123 | int mt_set_gpio_mode_ext(unsigned long pin, unsigned long mode); | |
124 | int mt_get_gpio_mode_ext(unsigned long pin); | |
125 | ||
126 | void mt_gpio_pin_decrypt(unsigned long *cipher); | |
127 | int mt_gpio_create_attr(struct device *dev); | |
128 | int mt_gpio_delete_attr(struct device *dev); | |
129 | ||
130 | #endif |