2 * File: arch/blackfin/kernel/bfin_gpio.h
4 * Author: Michael Hennerich (hennerich@blackfin.uclinux.org)
10 * Copyright 2004-2006 Analog Devices Inc.
12 * Bugs: Enter bugs at http://blackfin.uclinux.org/
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.
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.
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
31 * Number BF537/6/4 BF561 BF533/2/1
43 * GPIO_10 PF10 PF10 PF10
44 * GPIO_11 PF11 PF11 PF11
45 * GPIO_12 PF12 PF12 PF12
46 * GPIO_13 PF13 PF13 PF13
47 * GPIO_14 PF14 PF14 PF14
48 * GPIO_15 PF15 PF15 PF15
83 #ifndef __ARCH_BLACKFIN_GPIO_H__
84 #define __ARCH_BLACKFIN_GPIO_H__
86 #define gpio_bank(x) ((x) >> 4)
87 #define gpio_bit(x) (1<<((x) & 0xF))
88 #define gpio_sub_n(x) ((x) & 0xF)
90 #define GPIO_BANKSIZE 16
142 #define PERIPHERAL_USAGE 1
146 #define MAX_BLACKFIN_GPIOS 16
150 #define MAX_BLACKFIN_GPIOS 48
201 #define PORT_F GPIO_PF0
202 #define PORT_G GPIO_PG0
203 #define PORT_H GPIO_PH0
208 #define MAX_BLACKFIN_GPIOS 48
209 #define PORT_FIO0 GPIO_0
210 #define PORT_FIO1 GPIO_16
211 #define PORT_FIO2 GPIO_32
216 /***********************************************************
218 * FUNCTIONS: Blackfin General Purpose Ports Access Functions
221 * gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
224 * DESCRIPTION: These functions abstract direct register access
225 * to Blackfin processor General Purpose
228 * CAUTION: These functions do not belong to the GPIO Driver API
229 *************************************************************
230 * MODIFICATION HISTORY :
231 **************************************************************/
233 void set_gpio_dir(unsigned short, unsigned short);
234 void set_gpio_inen(unsigned short, unsigned short);
235 void set_gpio_polar(unsigned short, unsigned short);
236 void set_gpio_edge(unsigned short, unsigned short);
237 void set_gpio_both(unsigned short, unsigned short);
238 void set_gpio_data(unsigned short, unsigned short);
239 void set_gpio_maska(unsigned short, unsigned short);
240 void set_gpio_maskb(unsigned short, unsigned short);
241 void set_gpio_toggle(unsigned short);
242 void set_gpiop_dir(unsigned short, unsigned short);
243 void set_gpiop_inen(unsigned short, unsigned short);
244 void set_gpiop_polar(unsigned short, unsigned short);
245 void set_gpiop_edge(unsigned short, unsigned short);
246 void set_gpiop_both(unsigned short, unsigned short);
247 void set_gpiop_data(unsigned short, unsigned short);
248 void set_gpiop_maska(unsigned short, unsigned short);
249 void set_gpiop_maskb(unsigned short, unsigned short);
250 unsigned short get_gpio_dir(unsigned short);
251 unsigned short get_gpio_inen(unsigned short);
252 unsigned short get_gpio_polar(unsigned short);
253 unsigned short get_gpio_edge(unsigned short);
254 unsigned short get_gpio_both(unsigned short);
255 unsigned short get_gpio_maska(unsigned short);
256 unsigned short get_gpio_maskb(unsigned short);
257 unsigned short get_gpio_data(unsigned short);
258 unsigned short get_gpiop_dir(unsigned short);
259 unsigned short get_gpiop_inen(unsigned short);
260 unsigned short get_gpiop_polar(unsigned short);
261 unsigned short get_gpiop_edge(unsigned short);
262 unsigned short get_gpiop_both(unsigned short);
263 unsigned short get_gpiop_maska(unsigned short);
264 unsigned short get_gpiop_maskb(unsigned short);
265 unsigned short get_gpiop_data(unsigned short);
269 unsigned short dummy1
;
270 unsigned short data_clear
;
271 unsigned short dummy2
;
272 unsigned short data_set
;
273 unsigned short dummy3
;
274 unsigned short toggle
;
275 unsigned short dummy4
;
276 unsigned short maska
;
277 unsigned short dummy5
;
278 unsigned short maska_clear
;
279 unsigned short dummy6
;
280 unsigned short maska_set
;
281 unsigned short dummy7
;
282 unsigned short maska_toggle
;
283 unsigned short dummy8
;
284 unsigned short maskb
;
285 unsigned short dummy9
;
286 unsigned short maskb_clear
;
287 unsigned short dummy10
;
288 unsigned short maskb_set
;
289 unsigned short dummy11
;
290 unsigned short maskb_toggle
;
291 unsigned short dummy12
;
293 unsigned short dummy13
;
294 unsigned short polar
;
295 unsigned short dummy14
;
297 unsigned short dummy15
;
299 unsigned short dummy16
;
304 #define PM_WAKE_RISING 0x1
305 #define PM_WAKE_FALLING 0x2
306 #define PM_WAKE_HIGH 0x4
307 #define PM_WAKE_LOW 0x8
308 #define PM_WAKE_BOTH_EDGES (PM_WAKE_RISING | PM_WAKE_FALLING)
310 int gpio_pm_wakeup_request(unsigned short gpio
, unsigned char type
);
311 void gpio_pm_wakeup_free(unsigned short gpio
);
312 unsigned int gpio_pm_setup(void);
313 void gpio_pm_restore(void);
317 unsigned short data_clear
;
318 unsigned short data_set
;
319 unsigned short toggle
;
320 unsigned short maska
;
321 unsigned short maska_clear
;
322 unsigned short maska_set
;
323 unsigned short maska_toggle
;
324 unsigned short maskb
;
325 unsigned short maskb_clear
;
326 unsigned short maskb_set
;
327 unsigned short maskb_toggle
;
329 unsigned short polar
;
338 /***********************************************************
340 * FUNCTIONS: Blackfin GPIO Driver
343 * gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
346 * DESCRIPTION: Blackfin GPIO Driver API
349 *************************************************************
350 * MODIFICATION HISTORY :
351 **************************************************************/
353 int gpio_request(unsigned short, const char *);
354 void gpio_free(unsigned short);
356 void gpio_set_value(unsigned short gpio
, unsigned short arg
);
357 unsigned short gpio_get_value(unsigned short gpio
);
359 #define gpio_get_value(gpio) get_gpio_data(gpio)
360 #define gpio_set_value(gpio, value) set_gpio_data(gpio, value)
362 void gpio_direction_input(unsigned short gpio
);
363 void gpio_direction_output(unsigned short gpio
);
365 #endif /* __ASSEMBLY__ */
367 #endif /* __ARCH_BLACKFIN_GPIO_H__ */