Blackfin: gpio: punt unused GPIO_# defines
[deliverable/linux.git] / arch / blackfin / include / asm / gpio.h
CommitLineData
1394f032 1/*
96f1050d 2 * Copyright 2006-2009 Analog Devices Inc.
1394f032 3 *
96f1050d 4 * Licensed under the GPL-2 or later.
1394f032
BW
5 */
6
1394f032
BW
7#ifndef __ARCH_BLACKFIN_GPIO_H__
8#define __ARCH_BLACKFIN_GPIO_H__
9
812ae98f
MF
10#define gpio_bank(x) ((x) >> 4)
11#define gpio_bit(x) (1<<((x) & 0xF))
12#define gpio_sub_n(x) ((x) & 0xF)
1394f032 13
812ae98f
MF
14#define GPIO_BANKSIZE 16
15#define GPIO_BANK_NUM DIV_ROUND_UP(MAX_BLACKFIN_GPIOS, GPIO_BANKSIZE)
1394f032 16
983e1016
MH
17#include <mach/gpio.h>
18
1394f032
BW
19#define PERIPHERAL_USAGE 1
20#define GPIO_USAGE 0
21
1394f032
BW
22#ifndef __ASSEMBLY__
23
7f4f69f9
JE
24#include <linux/compiler.h>
25
1394f032
BW
26/***********************************************************
27*
28* FUNCTIONS: Blackfin General Purpose Ports Access Functions
29*
30* INPUTS/OUTPUTS:
31* gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
32*
33*
34* DESCRIPTION: These functions abstract direct register access
35* to Blackfin processor General Purpose
36* Ports Regsiters
37*
38* CAUTION: These functions do not belong to the GPIO Driver API
39*************************************************************
40* MODIFICATION HISTORY :
41**************************************************************/
42
269647dc 43#ifndef CONFIG_BF54x
a2c8cfef
MH
44void set_gpio_dir(unsigned, unsigned short);
45void set_gpio_inen(unsigned, unsigned short);
46void set_gpio_polar(unsigned, unsigned short);
47void set_gpio_edge(unsigned, unsigned short);
48void set_gpio_both(unsigned, unsigned short);
49void set_gpio_data(unsigned, unsigned short);
50void set_gpio_maska(unsigned, unsigned short);
51void set_gpio_maskb(unsigned, unsigned short);
52void set_gpio_toggle(unsigned);
53void set_gpiop_dir(unsigned, unsigned short);
54void set_gpiop_inen(unsigned, unsigned short);
55void set_gpiop_polar(unsigned, unsigned short);
56void set_gpiop_edge(unsigned, unsigned short);
57void set_gpiop_both(unsigned, unsigned short);
58void set_gpiop_data(unsigned, unsigned short);
59void set_gpiop_maska(unsigned, unsigned short);
60void set_gpiop_maskb(unsigned, unsigned short);
61unsigned short get_gpio_dir(unsigned);
62unsigned short get_gpio_inen(unsigned);
63unsigned short get_gpio_polar(unsigned);
64unsigned short get_gpio_edge(unsigned);
65unsigned short get_gpio_both(unsigned);
66unsigned short get_gpio_maska(unsigned);
67unsigned short get_gpio_maskb(unsigned);
68unsigned short get_gpio_data(unsigned);
69unsigned short get_gpiop_dir(unsigned);
70unsigned short get_gpiop_inen(unsigned);
71unsigned short get_gpiop_polar(unsigned);
72unsigned short get_gpiop_edge(unsigned);
73unsigned short get_gpiop_both(unsigned);
74unsigned short get_gpiop_maska(unsigned);
75unsigned short get_gpiop_maskb(unsigned);
76unsigned short get_gpiop_data(unsigned);
1394f032
BW
77
78struct gpio_port_t {
79 unsigned short data;
80 unsigned short dummy1;
81 unsigned short data_clear;
82 unsigned short dummy2;
83 unsigned short data_set;
84 unsigned short dummy3;
85 unsigned short toggle;
86 unsigned short dummy4;
87 unsigned short maska;
88 unsigned short dummy5;
89 unsigned short maska_clear;
90 unsigned short dummy6;
91 unsigned short maska_set;
92 unsigned short dummy7;
93 unsigned short maska_toggle;
94 unsigned short dummy8;
95 unsigned short maskb;
96 unsigned short dummy9;
97 unsigned short maskb_clear;
98 unsigned short dummy10;
99 unsigned short maskb_set;
100 unsigned short dummy11;
101 unsigned short maskb_toggle;
102 unsigned short dummy12;
103 unsigned short dir;
104 unsigned short dummy13;
105 unsigned short polar;
106 unsigned short dummy14;
107 unsigned short edge;
108 unsigned short dummy15;
109 unsigned short both;
110 unsigned short dummy16;
111 unsigned short inen;
112};
24a07a12 113#endif
1394f032 114
621dd247
MH
115#ifdef BFIN_SPECIAL_GPIO_BANKS
116void bfin_special_gpio_free(unsigned gpio);
117int bfin_special_gpio_request(unsigned gpio, const char *label);
118#endif
119
1394f032 120#ifdef CONFIG_PM
bb84dbf6 121int bfin_pm_standby_ctrl(unsigned ctrl);
1efc80b5 122
bb84dbf6
MH
123static inline int bfin_pm_standby_setup(void)
124{
125 return bfin_pm_standby_ctrl(1);
126}
127
128static inline void bfin_pm_standby_restore(void)
129{
130 bfin_pm_standby_ctrl(0);
131}
1efc80b5
MH
132
133void bfin_gpio_pm_hibernate_restore(void);
134void bfin_gpio_pm_hibernate_suspend(void);
cfefe3c6
MH
135
136#ifndef CONFIG_BF54x
bb84dbf6 137int gpio_pm_wakeup_ctrl(unsigned gpio, unsigned ctrl);
1394f032
BW
138
139struct gpio_port_s {
140 unsigned short data;
1394f032 141 unsigned short maska;
1394f032 142 unsigned short maskb;
1394f032
BW
143 unsigned short dir;
144 unsigned short polar;
145 unsigned short edge;
146 unsigned short both;
147 unsigned short inen;
148
149 unsigned short fer;
581d62ab 150 unsigned short reserved;
1efc80b5 151 unsigned short mux;
1394f032 152};
cfefe3c6 153#endif /*CONFIG_BF54x*/
1394f032 154#endif /*CONFIG_PM*/
1394f032
BW
155/***********************************************************
156*
157* FUNCTIONS: Blackfin GPIO Driver
158*
159* INPUTS/OUTPUTS:
160* gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
161*
162*
163* DESCRIPTION: Blackfin GPIO Driver API
164*
165* CAUTION:
166*************************************************************
167* MODIFICATION HISTORY :
168**************************************************************/
169
a4f0b32c
MH
170int bfin_gpio_request(unsigned gpio, const char *label);
171void bfin_gpio_free(unsigned gpio);
9570ff4a
GY
172int bfin_gpio_irq_request(unsigned gpio, const char *label);
173void bfin_gpio_irq_free(unsigned gpio);
a4f0b32c
MH
174int bfin_gpio_direction_input(unsigned gpio);
175int bfin_gpio_direction_output(unsigned gpio, int value);
176int bfin_gpio_get_value(unsigned gpio);
177void bfin_gpio_set_value(unsigned gpio, int value);
1394f032 178
7f4f69f9
JE
179#include <asm/irq.h>
180#include <asm/errno.h>
181
a4f0b32c
MH
182#ifdef CONFIG_GPIOLIB
183#include <asm-generic/gpio.h> /* cansleep wrappers */
184
185static inline int gpio_get_value(unsigned int gpio)
186{
187 if (gpio < MAX_BLACKFIN_GPIOS)
188 return bfin_gpio_get_value(gpio);
189 else
190 return __gpio_get_value(gpio);
191}
192
193static inline void gpio_set_value(unsigned int gpio, int value)
194{
195 if (gpio < MAX_BLACKFIN_GPIOS)
196 bfin_gpio_set_value(gpio, value);
197 else
198 __gpio_set_value(gpio, value);
199}
200
201static inline int gpio_cansleep(unsigned int gpio)
202{
203 return __gpio_cansleep(gpio);
204}
205
7f4f69f9
JE
206static inline int gpio_to_irq(unsigned gpio)
207{
208 return __gpio_to_irq(gpio);
209}
210
a4f0b32c
MH
211#else /* !CONFIG_GPIOLIB */
212
213static inline int gpio_request(unsigned gpio, const char *label)
214{
215 return bfin_gpio_request(gpio, label);
216}
217
218static inline void gpio_free(unsigned gpio)
219{
220 return bfin_gpio_free(gpio);
221}
222
223static inline int gpio_direction_input(unsigned gpio)
224{
225 return bfin_gpio_direction_input(gpio);
226}
227
228static inline int gpio_direction_output(unsigned gpio, int value)
229{
230 return bfin_gpio_direction_output(gpio, value);
231}
232
aab2393e
MF
233static inline int gpio_set_debounce(unsigned gpio, unsigned debounce)
234{
235 return -EINVAL;
236}
237
a4f0b32c
MH
238static inline int gpio_get_value(unsigned gpio)
239{
240 return bfin_gpio_get_value(gpio);
241}
242
243static inline void gpio_set_value(unsigned gpio, int value)
244{
245 return bfin_gpio_set_value(gpio, value);
246}
1394f032 247
301af295
MH
248static inline int gpio_to_irq(unsigned gpio)
249{
e1312bfc
MH
250 if (likely(gpio < MAX_BLACKFIN_GPIOS))
251 return gpio + GPIO_IRQ_BASE;
252
253 return -EINVAL;
301af295
MH
254}
255
7f4f69f9
JE
256#include <asm-generic/gpio.h> /* cansleep wrappers */
257#endif /* !CONFIG_GPIOLIB */
258
301af295
MH
259static inline int irq_to_gpio(unsigned irq)
260{
261 return (irq - GPIO_IRQ_BASE);
262}
263
1394f032
BW
264#endif /* __ASSEMBLY__ */
265
266#endif /* __ARCH_BLACKFIN_GPIO_H__ */
This page took 0.340604 seconds and 5 git commands to generate.