blob: 4ee687f34fee1e7f800c86c9a05048d316f65769 [file] [log] [blame]
Bryan Wu1394f032007-05-06 14:50:22 -07001/*
2 * File: arch/blackfin/kernel/bfin_gpio.h
3 * Based on:
4 * Author: Michael Hennerich (hennerich@blackfin.uclinux.org)
5 *
6 * Created:
7 * Description:
8 *
9 * Modified:
Michael Hennericha2c8cfe2008-01-22 17:20:10 +080010 * Copyright 2004-2008 Analog Devices Inc.
Bryan Wu1394f032007-05-06 14:50:22 -070011 *
12 * Bugs: Enter bugs at http://blackfin.uclinux.org/
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or
17 * (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, see the file COPYING, or write
26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */
29
30/*
31* Number BF537/6/4 BF561 BF533/2/1
Michael Hennerich59003142007-10-21 16:54:27 +080032* BF527/5/2
Bryan Wu1394f032007-05-06 14:50:22 -070033*
34* GPIO_0 PF0 PF0 PF0
35* GPIO_1 PF1 PF1 PF1
36* GPIO_2 PF2 PF2 PF2
37* GPIO_3 PF3 PF3 PF3
38* GPIO_4 PF4 PF4 PF4
39* GPIO_5 PF5 PF5 PF5
40* GPIO_6 PF6 PF6 PF6
41* GPIO_7 PF7 PF7 PF7
42* GPIO_8 PF8 PF8 PF8
43* GPIO_9 PF9 PF9 PF9
44* GPIO_10 PF10 PF10 PF10
45* GPIO_11 PF11 PF11 PF11
46* GPIO_12 PF12 PF12 PF12
47* GPIO_13 PF13 PF13 PF13
48* GPIO_14 PF14 PF14 PF14
49* GPIO_15 PF15 PF15 PF15
50* GPIO_16 PG0 PF16
51* GPIO_17 PG1 PF17
52* GPIO_18 PG2 PF18
53* GPIO_19 PG3 PF19
54* GPIO_20 PG4 PF20
55* GPIO_21 PG5 PF21
56* GPIO_22 PG6 PF22
57* GPIO_23 PG7 PF23
58* GPIO_24 PG8 PF24
59* GPIO_25 PG9 PF25
60* GPIO_26 PG10 PF26
61* GPIO_27 PG11 PF27
62* GPIO_28 PG12 PF28
63* GPIO_29 PG13 PF29
64* GPIO_30 PG14 PF30
65* GPIO_31 PG15 PF31
66* GPIO_32 PH0 PF32
67* GPIO_33 PH1 PF33
68* GPIO_34 PH2 PF34
69* GPIO_35 PH3 PF35
70* GPIO_36 PH4 PF36
71* GPIO_37 PH5 PF37
72* GPIO_38 PH6 PF38
73* GPIO_39 PH7 PF39
74* GPIO_40 PH8 PF40
75* GPIO_41 PH9 PF41
76* GPIO_42 PH10 PF42
77* GPIO_43 PH11 PF43
78* GPIO_44 PH12 PF44
79* GPIO_45 PH13 PF45
80* GPIO_46 PH14 PF46
81* GPIO_47 PH15 PF47
82*/
83
84#ifndef __ARCH_BLACKFIN_GPIO_H__
85#define __ARCH_BLACKFIN_GPIO_H__
86
Michael Hennericha4f0b32c2008-11-18 17:48:22 +080087#define gpio_bank(x) ((x) >> 4)
88#define gpio_bit(x) (1<<((x) & 0xF))
89#define gpio_sub_n(x) ((x) & 0xF)
Bryan Wu1394f032007-05-06 14:50:22 -070090
Bryan Wu2e8ca592008-11-18 17:48:22 +080091#define GPIO_BANKSIZE 16
92#define GPIO_BANK_NUM DIV_ROUND_UP(MAX_BLACKFIN_GPIOS, GPIO_BANKSIZE)
Bryan Wu1394f032007-05-06 14:50:22 -070093
94#define GPIO_0 0
95#define GPIO_1 1
96#define GPIO_2 2
97#define GPIO_3 3
98#define GPIO_4 4
99#define GPIO_5 5
100#define GPIO_6 6
101#define GPIO_7 7
102#define GPIO_8 8
103#define GPIO_9 9
104#define GPIO_10 10
105#define GPIO_11 11
106#define GPIO_12 12
107#define GPIO_13 13
108#define GPIO_14 14
109#define GPIO_15 15
110#define GPIO_16 16
111#define GPIO_17 17
112#define GPIO_18 18
113#define GPIO_19 19
114#define GPIO_20 20
115#define GPIO_21 21
116#define GPIO_22 22
117#define GPIO_23 23
118#define GPIO_24 24
119#define GPIO_25 25
120#define GPIO_26 26
121#define GPIO_27 27
122#define GPIO_28 28
123#define GPIO_29 29
124#define GPIO_30 30
125#define GPIO_31 31
126#define GPIO_32 32
127#define GPIO_33 33
128#define GPIO_34 34
129#define GPIO_35 35
130#define GPIO_36 36
131#define GPIO_37 37
132#define GPIO_38 38
133#define GPIO_39 39
134#define GPIO_40 40
135#define GPIO_41 41
136#define GPIO_42 42
137#define GPIO_43 43
138#define GPIO_44 44
139#define GPIO_45 45
140#define GPIO_46 46
141#define GPIO_47 47
142
143
144#define PERIPHERAL_USAGE 1
145#define GPIO_USAGE 0
146
Bryan Wu2f6f4bc2008-11-18 17:48:21 +0800147#if defined(BF518_FAMILY)
148#define MAX_BLACKFIN_GPIOS 40
149
150#define GPIO_PF0 0
151#define GPIO_PF1 1
152#define GPIO_PF2 2
153#define GPIO_PF3 3
154#define GPIO_PF4 4
155#define GPIO_PF5 5
156#define GPIO_PF6 6
157#define GPIO_PF7 7
158#define GPIO_PF8 8
159#define GPIO_PF9 9
160#define GPIO_PF10 10
161#define GPIO_PF11 11
162#define GPIO_PF12 12
163#define GPIO_PF13 13
164#define GPIO_PF14 14
165#define GPIO_PF15 15
166#define GPIO_PG0 16
167#define GPIO_PG1 17
168#define GPIO_PG2 18
169#define GPIO_PG3 19
170#define GPIO_PG4 20
171#define GPIO_PG5 21
172#define GPIO_PG6 22
173#define GPIO_PG7 23
174#define GPIO_PG8 24
175#define GPIO_PG9 25
176#define GPIO_PG10 26
177#define GPIO_PG11 27
178#define GPIO_PG12 28
179#define GPIO_PG13 29
180#define GPIO_PG14 30
181#define GPIO_PG15 31
182#define GPIO_PH0 32
183#define GPIO_PH1 33
184#define GPIO_PH2 34
185#define GPIO_PH3 35
186#define GPIO_PH4 36
187#define GPIO_PH5 37
188#define GPIO_PH6 38
189#define GPIO_PH7 39
190
191#define PORT_F GPIO_PF0
192#define PORT_G GPIO_PG0
193#define PORT_H GPIO_PH0
194
195#endif
196
197
Bryan Wu1394f032007-05-06 14:50:22 -0700198#ifdef BF533_FAMILY
199#define MAX_BLACKFIN_GPIOS 16
Bryan Wu214cccb2007-07-25 14:42:03 +0800200
201#define GPIO_PF0 0
202#define GPIO_PF1 1
203#define GPIO_PF2 2
204#define GPIO_PF3 3
205#define GPIO_PF4 4
206#define GPIO_PF5 5
207#define GPIO_PF6 6
208#define GPIO_PF7 7
209#define GPIO_PF8 8
210#define GPIO_PF9 9
211#define GPIO_PF10 10
212#define GPIO_PF11 11
213#define GPIO_PF12 12
214#define GPIO_PF13 13
215#define GPIO_PF14 14
216#define GPIO_PF15 15
217
Bryan Wu1394f032007-05-06 14:50:22 -0700218#endif
219
Michael Hennerichdc26aec2008-11-18 17:48:22 +0800220#if defined(BF538_FAMILY)
221 /* FIXME:
222 * For now only support PORTF GPIOs.
223 * PORT C,D and E are for peripheral usage only
224 */
225#define MAX_BLACKFIN_GPIOS 16
226
227#define GPIO_PF0 0 /* PF */
228#define GPIO_PF1 1
229#define GPIO_PF2 2
230#define GPIO_PF3 3
231#define GPIO_PF4 4
232#define GPIO_PF5 5
233#define GPIO_PF6 6
234#define GPIO_PF7 7
235#define GPIO_PF8 8
236#define GPIO_PF9 9
237#define GPIO_PF10 10
238#define GPIO_PF11 11
239#define GPIO_PF12 12
240#define GPIO_PF13 13
241#define GPIO_PF14 14
242#define GPIO_PF15 15
243#define GPIO_PC0 16 /* PC */
244#define GPIO_PC1 17
245#define GPIO_PC4 20
246#define GPIO_PC5 21
247#define GPIO_PC6 22
248#define GPIO_PC7 23
249#define GPIO_PC8 24
250#define GPIO_PC9 25
251#define GPIO_PD0 32 /* PD */
252#define GPIO_PD1 33
253#define GPIO_PD2 34
254#define GPIO_PD3 35
255#define GPIO_PD4 36
256#define GPIO_PD5 37
257#define GPIO_PD6 38
258#define GPIO_PD7 39
259#define GPIO_PD8 40
260#define GPIO_PD9 41
261#define GPIO_PD10 42
262#define GPIO_PD11 43
263#define GPIO_PD12 44
264#define GPIO_PD13 45
265#define GPIO_PE0 48 /* PE */
266#define GPIO_PE1 49
267#define GPIO_PE2 50
268#define GPIO_PE3 51
269#define GPIO_PE4 52
270#define GPIO_PE5 53
271#define GPIO_PE6 54
272#define GPIO_PE7 55
273#define GPIO_PE8 56
274#define GPIO_PE9 57
275#define GPIO_PE10 58
276#define GPIO_PE11 59
277#define GPIO_PE12 60
278#define GPIO_PE13 61
279#define GPIO_PE14 62
280#define GPIO_PE15 63
281
282#define PORT_F GPIO_PF0
283#define PORT_C GPIO_PC0
284#define PORT_D GPIO_PD0
285#define PORT_E GPIO_PE0
286#endif
287
Michael Hennerich59003142007-10-21 16:54:27 +0800288#if defined(BF527_FAMILY) || defined(BF537_FAMILY)
Bryan Wu1394f032007-05-06 14:50:22 -0700289#define MAX_BLACKFIN_GPIOS 48
Bryan Wu1394f032007-05-06 14:50:22 -0700290
291#define GPIO_PF0 0
292#define GPIO_PF1 1
293#define GPIO_PF2 2
294#define GPIO_PF3 3
295#define GPIO_PF4 4
296#define GPIO_PF5 5
297#define GPIO_PF6 6
298#define GPIO_PF7 7
299#define GPIO_PF8 8
300#define GPIO_PF9 9
301#define GPIO_PF10 10
302#define GPIO_PF11 11
303#define GPIO_PF12 12
304#define GPIO_PF13 13
305#define GPIO_PF14 14
306#define GPIO_PF15 15
307#define GPIO_PG0 16
308#define GPIO_PG1 17
309#define GPIO_PG2 18
310#define GPIO_PG3 19
311#define GPIO_PG4 20
312#define GPIO_PG5 21
313#define GPIO_PG6 22
314#define GPIO_PG7 23
315#define GPIO_PG8 24
316#define GPIO_PG9 25
317#define GPIO_PG10 26
318#define GPIO_PG11 27
319#define GPIO_PG12 28
320#define GPIO_PG13 29
321#define GPIO_PG14 30
322#define GPIO_PG15 31
323#define GPIO_PH0 32
324#define GPIO_PH1 33
325#define GPIO_PH2 34
326#define GPIO_PH3 35
327#define GPIO_PH4 36
328#define GPIO_PH5 37
329#define GPIO_PH6 38
330#define GPIO_PH7 39
331#define GPIO_PH8 40
332#define GPIO_PH9 41
333#define GPIO_PH10 42
334#define GPIO_PH11 43
335#define GPIO_PH12 44
336#define GPIO_PH13 45
337#define GPIO_PH14 46
338#define GPIO_PH15 47
339
Michael Hennerich67840272007-05-21 18:09:18 +0800340#define PORT_F GPIO_PF0
341#define PORT_G GPIO_PG0
342#define PORT_H GPIO_PH0
343
Bryan Wu1394f032007-05-06 14:50:22 -0700344#endif
345
Roy Huang24a07a12007-07-12 22:41:45 +0800346#ifdef BF548_FAMILY
Bryan Wu639f6572008-08-27 10:51:02 +0800347#include <mach/gpio.h>
Roy Huang24a07a12007-07-12 22:41:45 +0800348#endif
349
Bryan Wu1394f032007-05-06 14:50:22 -0700350#ifdef BF561_FAMILY
351#define MAX_BLACKFIN_GPIOS 48
Michael Hennerich5610db62007-07-12 12:32:52 +0800352
353#define GPIO_PF0 0
354#define GPIO_PF1 1
355#define GPIO_PF2 2
356#define GPIO_PF3 3
357#define GPIO_PF4 4
358#define GPIO_PF5 5
359#define GPIO_PF6 6
360#define GPIO_PF7 7
361#define GPIO_PF8 8
362#define GPIO_PF9 9
363#define GPIO_PF10 10
364#define GPIO_PF11 11
365#define GPIO_PF12 12
366#define GPIO_PF13 13
367#define GPIO_PF14 14
368#define GPIO_PF15 15
369#define GPIO_PF16 16
370#define GPIO_PF17 17
371#define GPIO_PF18 18
372#define GPIO_PF19 19
373#define GPIO_PF20 20
374#define GPIO_PF21 21
375#define GPIO_PF22 22
376#define GPIO_PF23 23
377#define GPIO_PF24 24
378#define GPIO_PF25 25
379#define GPIO_PF26 26
380#define GPIO_PF27 27
381#define GPIO_PF28 28
382#define GPIO_PF29 29
383#define GPIO_PF30 30
384#define GPIO_PF31 31
385#define GPIO_PF32 32
386#define GPIO_PF33 33
387#define GPIO_PF34 34
388#define GPIO_PF35 35
389#define GPIO_PF36 36
390#define GPIO_PF37 37
391#define GPIO_PF38 38
392#define GPIO_PF39 39
393#define GPIO_PF40 40
394#define GPIO_PF41 41
395#define GPIO_PF42 42
396#define GPIO_PF43 43
397#define GPIO_PF44 44
398#define GPIO_PF45 45
399#define GPIO_PF46 46
400#define GPIO_PF47 47
401
Michael Hennerich67840272007-05-21 18:09:18 +0800402#define PORT_FIO0 GPIO_0
403#define PORT_FIO1 GPIO_16
404#define PORT_FIO2 GPIO_32
Bryan Wu1394f032007-05-06 14:50:22 -0700405#endif
406
407#ifndef __ASSEMBLY__
408
409/***********************************************************
410*
411* FUNCTIONS: Blackfin General Purpose Ports Access Functions
412*
413* INPUTS/OUTPUTS:
414* gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
415*
416*
417* DESCRIPTION: These functions abstract direct register access
418* to Blackfin processor General Purpose
419* Ports Regsiters
420*
421* CAUTION: These functions do not belong to the GPIO Driver API
422*************************************************************
423* MODIFICATION HISTORY :
424**************************************************************/
425
Michael Hennerichcefe6582007-07-02 11:45:50 +0800426#ifndef BF548_FAMILY
Michael Hennericha2c8cfe2008-01-22 17:20:10 +0800427void set_gpio_dir(unsigned, unsigned short);
428void set_gpio_inen(unsigned, unsigned short);
429void set_gpio_polar(unsigned, unsigned short);
430void set_gpio_edge(unsigned, unsigned short);
431void set_gpio_both(unsigned, unsigned short);
432void set_gpio_data(unsigned, unsigned short);
433void set_gpio_maska(unsigned, unsigned short);
434void set_gpio_maskb(unsigned, unsigned short);
435void set_gpio_toggle(unsigned);
436void set_gpiop_dir(unsigned, unsigned short);
437void set_gpiop_inen(unsigned, unsigned short);
438void set_gpiop_polar(unsigned, unsigned short);
439void set_gpiop_edge(unsigned, unsigned short);
440void set_gpiop_both(unsigned, unsigned short);
441void set_gpiop_data(unsigned, unsigned short);
442void set_gpiop_maska(unsigned, unsigned short);
443void set_gpiop_maskb(unsigned, unsigned short);
444unsigned short get_gpio_dir(unsigned);
445unsigned short get_gpio_inen(unsigned);
446unsigned short get_gpio_polar(unsigned);
447unsigned short get_gpio_edge(unsigned);
448unsigned short get_gpio_both(unsigned);
449unsigned short get_gpio_maska(unsigned);
450unsigned short get_gpio_maskb(unsigned);
451unsigned short get_gpio_data(unsigned);
452unsigned short get_gpiop_dir(unsigned);
453unsigned short get_gpiop_inen(unsigned);
454unsigned short get_gpiop_polar(unsigned);
455unsigned short get_gpiop_edge(unsigned);
456unsigned short get_gpiop_both(unsigned);
457unsigned short get_gpiop_maska(unsigned);
458unsigned short get_gpiop_maskb(unsigned);
459unsigned short get_gpiop_data(unsigned);
Bryan Wu1394f032007-05-06 14:50:22 -0700460
461struct gpio_port_t {
462 unsigned short data;
463 unsigned short dummy1;
464 unsigned short data_clear;
465 unsigned short dummy2;
466 unsigned short data_set;
467 unsigned short dummy3;
468 unsigned short toggle;
469 unsigned short dummy4;
470 unsigned short maska;
471 unsigned short dummy5;
472 unsigned short maska_clear;
473 unsigned short dummy6;
474 unsigned short maska_set;
475 unsigned short dummy7;
476 unsigned short maska_toggle;
477 unsigned short dummy8;
478 unsigned short maskb;
479 unsigned short dummy9;
480 unsigned short maskb_clear;
481 unsigned short dummy10;
482 unsigned short maskb_set;
483 unsigned short dummy11;
484 unsigned short maskb_toggle;
485 unsigned short dummy12;
486 unsigned short dir;
487 unsigned short dummy13;
488 unsigned short polar;
489 unsigned short dummy14;
490 unsigned short edge;
491 unsigned short dummy15;
492 unsigned short both;
493 unsigned short dummy16;
494 unsigned short inen;
495};
Roy Huang24a07a12007-07-12 22:41:45 +0800496#endif
Bryan Wu1394f032007-05-06 14:50:22 -0700497
498#ifdef CONFIG_PM
Michael Hennerich1efc80b2008-07-19 16:57:32 +0800499
500unsigned int bfin_pm_standby_setup(void);
501void bfin_pm_standby_restore(void);
502
503void bfin_gpio_pm_hibernate_restore(void);
504void bfin_gpio_pm_hibernate_suspend(void);
Michael Hennerichcfefe3c2008-02-09 04:12:37 +0800505
506#ifndef CONFIG_BF54x
Bryan Wu1394f032007-05-06 14:50:22 -0700507#define PM_WAKE_RISING 0x1
508#define PM_WAKE_FALLING 0x2
509#define PM_WAKE_HIGH 0x4
510#define PM_WAKE_LOW 0x8
511#define PM_WAKE_BOTH_EDGES (PM_WAKE_RISING | PM_WAKE_FALLING)
Michael Hennerichcfefe3c2008-02-09 04:12:37 +0800512#define PM_WAKE_IGNORE 0xF0
Bryan Wu1394f032007-05-06 14:50:22 -0700513
Michael Hennericha2c8cfe2008-01-22 17:20:10 +0800514int gpio_pm_wakeup_request(unsigned gpio, unsigned char type);
515void gpio_pm_wakeup_free(unsigned gpio);
Bryan Wu1394f032007-05-06 14:50:22 -0700516
517struct gpio_port_s {
518 unsigned short data;
Bryan Wu1394f032007-05-06 14:50:22 -0700519 unsigned short maska;
Bryan Wu1394f032007-05-06 14:50:22 -0700520 unsigned short maskb;
Bryan Wu1394f032007-05-06 14:50:22 -0700521 unsigned short dir;
522 unsigned short polar;
523 unsigned short edge;
524 unsigned short both;
525 unsigned short inen;
526
527 unsigned short fer;
Michael Hennerich581d62a2007-06-14 13:30:23 +0800528 unsigned short reserved;
Michael Hennerich1efc80b2008-07-19 16:57:32 +0800529 unsigned short mux;
Bryan Wu1394f032007-05-06 14:50:22 -0700530};
Michael Hennerichcfefe3c2008-02-09 04:12:37 +0800531#endif /*CONFIG_BF54x*/
Bryan Wu1394f032007-05-06 14:50:22 -0700532#endif /*CONFIG_PM*/
Bryan Wu1394f032007-05-06 14:50:22 -0700533/***********************************************************
534*
535* FUNCTIONS: Blackfin GPIO Driver
536*
537* INPUTS/OUTPUTS:
538* gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
539*
540*
541* DESCRIPTION: Blackfin GPIO Driver API
542*
543* CAUTION:
544*************************************************************
545* MODIFICATION HISTORY :
546**************************************************************/
547
Bryan Wu1394f032007-05-06 14:50:22 -0700548
Michael Hennericha4f0b32c2008-11-18 17:48:22 +0800549int bfin_gpio_request(unsigned gpio, const char *label);
550void bfin_gpio_free(unsigned gpio);
Graf Yang9570ff42009-01-07 23:14:38 +0800551int bfin_gpio_irq_request(unsigned gpio, const char *label);
552void bfin_gpio_irq_free(unsigned gpio);
Michael Hennericha4f0b32c2008-11-18 17:48:22 +0800553int bfin_gpio_direction_input(unsigned gpio);
554int bfin_gpio_direction_output(unsigned gpio, int value);
555int bfin_gpio_get_value(unsigned gpio);
556void bfin_gpio_set_value(unsigned gpio, int value);
Bryan Wu1394f032007-05-06 14:50:22 -0700557
Michael Hennerichcefe6582007-07-02 11:45:50 +0800558#ifndef BF548_FAMILY
Michael Hennericha4f0b32c2008-11-18 17:48:22 +0800559#define bfin_gpio_set_value(gpio, value) set_gpio_data(gpio, value)
Michael Hennerichcefe6582007-07-02 11:45:50 +0800560#endif
Bryan Wu1394f032007-05-06 14:50:22 -0700561
Michael Hennericha4f0b32c2008-11-18 17:48:22 +0800562#ifdef CONFIG_GPIOLIB
563#include <asm-generic/gpio.h> /* cansleep wrappers */
564
565static inline int gpio_get_value(unsigned int gpio)
566{
567 if (gpio < MAX_BLACKFIN_GPIOS)
568 return bfin_gpio_get_value(gpio);
569 else
570 return __gpio_get_value(gpio);
571}
572
573static inline void gpio_set_value(unsigned int gpio, int value)
574{
575 if (gpio < MAX_BLACKFIN_GPIOS)
576 bfin_gpio_set_value(gpio, value);
577 else
578 __gpio_set_value(gpio, value);
579}
580
581static inline int gpio_cansleep(unsigned int gpio)
582{
583 return __gpio_cansleep(gpio);
584}
585
586#else /* !CONFIG_GPIOLIB */
587
588static inline int gpio_request(unsigned gpio, const char *label)
589{
590 return bfin_gpio_request(gpio, label);
591}
592
593static inline void gpio_free(unsigned gpio)
594{
595 return bfin_gpio_free(gpio);
596}
597
598static inline int gpio_direction_input(unsigned gpio)
599{
600 return bfin_gpio_direction_input(gpio);
601}
602
603static inline int gpio_direction_output(unsigned gpio, int value)
604{
605 return bfin_gpio_direction_output(gpio, value);
606}
607
608static inline int gpio_get_value(unsigned gpio)
609{
610 return bfin_gpio_get_value(gpio);
611}
612
613static inline void gpio_set_value(unsigned gpio, int value)
614{
615 return bfin_gpio_set_value(gpio, value);
616}
Bryan Wu1394f032007-05-06 14:50:22 -0700617
Michael Hennerich301af292007-07-24 15:35:53 +0800618#include <asm-generic/gpio.h> /* cansleep wrappers */
Michael Hennericha4f0b32c2008-11-18 17:48:22 +0800619#endif /* !CONFIG_GPIOLIB */
Michael Hennerich301af292007-07-24 15:35:53 +0800620#include <asm/irq.h>
621
622static inline int gpio_to_irq(unsigned gpio)
623{
624 return (gpio + GPIO_IRQ_BASE);
625}
626
627static inline int irq_to_gpio(unsigned irq)
628{
629 return (irq - GPIO_IRQ_BASE);
630}
631
Bryan Wu1394f032007-05-06 14:50:22 -0700632#endif /* __ASSEMBLY__ */
633
634#endif /* __ARCH_BLACKFIN_GPIO_H__ */