~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/blackfin/include/asm/gpio.h

Version: ~ [ linux-5.15-rc5 ] ~ [ linux-5.14.11 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.72 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.152 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.210 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.250 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.286 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.288 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.18.140 ] ~ [ linux-3.16.85 ] ~ [ linux-3.14.79 ] ~ [ linux-3.12.74 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * Copyright 2006-2009 Analog Devices Inc.
  3  *
  4  * Licensed under the GPL-2 or later.
  5  */
  6 
  7 #ifndef __ARCH_BLACKFIN_GPIO_H__
  8 #define __ARCH_BLACKFIN_GPIO_H__
  9 
 10 #define gpio_bank(x)    ((x) >> 4)
 11 #define gpio_bit(x)     (1<<((x) & 0xF))
 12 #define gpio_sub_n(x)   ((x) & 0xF)
 13 
 14 #define GPIO_BANKSIZE   16
 15 #define GPIO_BANK_NUM   DIV_ROUND_UP(MAX_BLACKFIN_GPIOS, GPIO_BANKSIZE)
 16 
 17 #include <mach/gpio.h>
 18 
 19 #define GPIO_0  0
 20 #define GPIO_1  1
 21 #define GPIO_2  2
 22 #define GPIO_3  3
 23 #define GPIO_4  4
 24 #define GPIO_5  5
 25 #define GPIO_6  6
 26 #define GPIO_7  7
 27 #define GPIO_8  8
 28 #define GPIO_9  9
 29 #define GPIO_10 10
 30 #define GPIO_11 11
 31 #define GPIO_12 12
 32 #define GPIO_13 13
 33 #define GPIO_14 14
 34 #define GPIO_15 15
 35 #define GPIO_16 16
 36 #define GPIO_17 17
 37 #define GPIO_18 18
 38 #define GPIO_19 19
 39 #define GPIO_20 20
 40 #define GPIO_21 21
 41 #define GPIO_22 22
 42 #define GPIO_23 23
 43 #define GPIO_24 24
 44 #define GPIO_25 25
 45 #define GPIO_26 26
 46 #define GPIO_27 27
 47 #define GPIO_28 28
 48 #define GPIO_29 29
 49 #define GPIO_30 30
 50 #define GPIO_31 31
 51 #define GPIO_32 32
 52 #define GPIO_33 33
 53 #define GPIO_34 34
 54 #define GPIO_35 35
 55 #define GPIO_36 36
 56 #define GPIO_37 37
 57 #define GPIO_38 38
 58 #define GPIO_39 39
 59 #define GPIO_40 40
 60 #define GPIO_41 41
 61 #define GPIO_42 42
 62 #define GPIO_43 43
 63 #define GPIO_44 44
 64 #define GPIO_45 45
 65 #define GPIO_46 46
 66 #define GPIO_47 47
 67 
 68 #define PERIPHERAL_USAGE 1
 69 #define GPIO_USAGE 0
 70 
 71 #ifndef __ASSEMBLY__
 72 
 73 /***********************************************************
 74 *
 75 * FUNCTIONS: Blackfin General Purpose Ports Access Functions
 76 *
 77 * INPUTS/OUTPUTS:
 78 * gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
 79 *
 80 *
 81 * DESCRIPTION: These functions abstract direct register access
 82 *              to Blackfin processor General Purpose
 83 *              Ports Regsiters
 84 *
 85 * CAUTION: These functions do not belong to the GPIO Driver API
 86 *************************************************************
 87 * MODIFICATION HISTORY :
 88 **************************************************************/
 89 
 90 #ifndef CONFIG_BF54x
 91 void set_gpio_dir(unsigned, unsigned short);
 92 void set_gpio_inen(unsigned, unsigned short);
 93 void set_gpio_polar(unsigned, unsigned short);
 94 void set_gpio_edge(unsigned, unsigned short);
 95 void set_gpio_both(unsigned, unsigned short);
 96 void set_gpio_data(unsigned, unsigned short);
 97 void set_gpio_maska(unsigned, unsigned short);
 98 void set_gpio_maskb(unsigned, unsigned short);
 99 void set_gpio_toggle(unsigned);
100 void set_gpiop_dir(unsigned, unsigned short);
101 void set_gpiop_inen(unsigned, unsigned short);
102 void set_gpiop_polar(unsigned, unsigned short);
103 void set_gpiop_edge(unsigned, unsigned short);
104 void set_gpiop_both(unsigned, unsigned short);
105 void set_gpiop_data(unsigned, unsigned short);
106 void set_gpiop_maska(unsigned, unsigned short);
107 void set_gpiop_maskb(unsigned, unsigned short);
108 unsigned short get_gpio_dir(unsigned);
109 unsigned short get_gpio_inen(unsigned);
110 unsigned short get_gpio_polar(unsigned);
111 unsigned short get_gpio_edge(unsigned);
112 unsigned short get_gpio_both(unsigned);
113 unsigned short get_gpio_maska(unsigned);
114 unsigned short get_gpio_maskb(unsigned);
115 unsigned short get_gpio_data(unsigned);
116 unsigned short get_gpiop_dir(unsigned);
117 unsigned short get_gpiop_inen(unsigned);
118 unsigned short get_gpiop_polar(unsigned);
119 unsigned short get_gpiop_edge(unsigned);
120 unsigned short get_gpiop_both(unsigned);
121 unsigned short get_gpiop_maska(unsigned);
122 unsigned short get_gpiop_maskb(unsigned);
123 unsigned short get_gpiop_data(unsigned);
124 
125 struct gpio_port_t {
126         unsigned short data;
127         unsigned short dummy1;
128         unsigned short data_clear;
129         unsigned short dummy2;
130         unsigned short data_set;
131         unsigned short dummy3;
132         unsigned short toggle;
133         unsigned short dummy4;
134         unsigned short maska;
135         unsigned short dummy5;
136         unsigned short maska_clear;
137         unsigned short dummy6;
138         unsigned short maska_set;
139         unsigned short dummy7;
140         unsigned short maska_toggle;
141         unsigned short dummy8;
142         unsigned short maskb;
143         unsigned short dummy9;
144         unsigned short maskb_clear;
145         unsigned short dummy10;
146         unsigned short maskb_set;
147         unsigned short dummy11;
148         unsigned short maskb_toggle;
149         unsigned short dummy12;
150         unsigned short dir;
151         unsigned short dummy13;
152         unsigned short polar;
153         unsigned short dummy14;
154         unsigned short edge;
155         unsigned short dummy15;
156         unsigned short both;
157         unsigned short dummy16;
158         unsigned short inen;
159 };
160 #endif
161 
162 #ifdef CONFIG_PM
163 
164 unsigned int bfin_pm_standby_setup(void);
165 void bfin_pm_standby_restore(void);
166 
167 void bfin_gpio_pm_hibernate_restore(void);
168 void bfin_gpio_pm_hibernate_suspend(void);
169 
170 #ifndef CONFIG_BF54x
171 #define PM_WAKE_RISING  0x1
172 #define PM_WAKE_FALLING 0x2
173 #define PM_WAKE_HIGH    0x4
174 #define PM_WAKE_LOW     0x8
175 #define PM_WAKE_BOTH_EDGES      (PM_WAKE_RISING | PM_WAKE_FALLING)
176 #define PM_WAKE_IGNORE  0xF0
177 
178 int gpio_pm_wakeup_request(unsigned gpio, unsigned char type);
179 void gpio_pm_wakeup_free(unsigned gpio);
180 
181 struct gpio_port_s {
182         unsigned short data;
183         unsigned short maska;
184         unsigned short maskb;
185         unsigned short dir;
186         unsigned short polar;
187         unsigned short edge;
188         unsigned short both;
189         unsigned short inen;
190 
191         unsigned short fer;
192         unsigned short reserved;
193         unsigned short mux;
194 };
195 #endif /*CONFIG_BF54x*/
196 #endif /*CONFIG_PM*/
197 /***********************************************************
198 *
199 * FUNCTIONS: Blackfin GPIO Driver
200 *
201 * INPUTS/OUTPUTS:
202 * gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
203 *
204 *
205 * DESCRIPTION: Blackfin GPIO Driver API
206 *
207 * CAUTION:
208 *************************************************************
209 * MODIFICATION HISTORY :
210 **************************************************************/
211 
212 int bfin_gpio_request(unsigned gpio, const char *label);
213 void bfin_gpio_free(unsigned gpio);
214 int bfin_gpio_irq_request(unsigned gpio, const char *label);
215 void bfin_gpio_irq_free(unsigned gpio);
216 int bfin_gpio_direction_input(unsigned gpio);
217 int bfin_gpio_direction_output(unsigned gpio, int value);
218 int bfin_gpio_get_value(unsigned gpio);
219 void bfin_gpio_set_value(unsigned gpio, int value);
220 
221 #ifdef CONFIG_GPIOLIB
222 #include <asm-generic/gpio.h>           /* cansleep wrappers */
223 
224 static inline int gpio_get_value(unsigned int gpio)
225 {
226         if (gpio < MAX_BLACKFIN_GPIOS)
227                 return bfin_gpio_get_value(gpio);
228         else
229                 return __gpio_get_value(gpio);
230 }
231 
232 static inline void gpio_set_value(unsigned int gpio, int value)
233 {
234         if (gpio < MAX_BLACKFIN_GPIOS)
235                 bfin_gpio_set_value(gpio, value);
236         else
237                 __gpio_set_value(gpio, value);
238 }
239 
240 static inline int gpio_cansleep(unsigned int gpio)
241 {
242         return __gpio_cansleep(gpio);
243 }
244 
245 #else /* !CONFIG_GPIOLIB */
246 
247 static inline int gpio_request(unsigned gpio, const char *label)
248 {
249         return bfin_gpio_request(gpio, label);
250 }
251 
252 static inline void gpio_free(unsigned gpio)
253 {
254         return bfin_gpio_free(gpio);
255 }
256 
257 static inline int gpio_direction_input(unsigned gpio)
258 {
259         return bfin_gpio_direction_input(gpio);
260 }
261 
262 static inline int gpio_direction_output(unsigned gpio, int value)
263 {
264         return bfin_gpio_direction_output(gpio, value);
265 }
266 
267 static inline int gpio_get_value(unsigned gpio)
268 {
269         return bfin_gpio_get_value(gpio);
270 }
271 
272 static inline void gpio_set_value(unsigned gpio, int value)
273 {
274         return bfin_gpio_set_value(gpio, value);
275 }
276 
277 #include <asm-generic/gpio.h>           /* cansleep wrappers */
278 #endif  /* !CONFIG_GPIOLIB */
279 #include <asm/irq.h>
280 
281 static inline int gpio_to_irq(unsigned gpio)
282 {
283         if (likely(gpio < MAX_BLACKFIN_GPIOS))
284                 return gpio + GPIO_IRQ_BASE;
285 
286         return -EINVAL;
287 }
288 
289 static inline int irq_to_gpio(unsigned irq)
290 {
291         return (irq - GPIO_IRQ_BASE);
292 }
293 
294 #endif /* __ASSEMBLY__ */
295 
296 #endif /* __ARCH_BLACKFIN_GPIO_H__ */
297 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp