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
168 #define MAX_BLACKFIN_GPIOS 48
219 #define PORT_F GPIO_PF0
220 #define PORT_G GPIO_PG0
221 #define PORT_H GPIO_PH0
226 #include <asm-blackfin/mach-bf548/gpio.h>
230 #define MAX_BLACKFIN_GPIOS 48
281 #define PORT_FIO0 GPIO_0
282 #define PORT_FIO1 GPIO_16
283 #define PORT_FIO2 GPIO_32
288 /***********************************************************
290 * FUNCTIONS: Blackfin General Purpose Ports Access Functions
293 * gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
296 * DESCRIPTION: These functions abstract direct register access
297 * to Blackfin processor General Purpose
300 * CAUTION: These functions do not belong to the GPIO Driver API
301 *************************************************************
302 * MODIFICATION HISTORY :
303 **************************************************************/
306 void set_gpio_dir(unsigned short, unsigned short);
307 void set_gpio_inen(unsigned short, unsigned short);
308 void set_gpio_polar(unsigned short, unsigned short);
309 void set_gpio_edge(unsigned short, unsigned short);
310 void set_gpio_both(unsigned short, unsigned short);
311 void set_gpio_data(unsigned short, unsigned short);
312 void set_gpio_maska(unsigned short, unsigned short);
313 void set_gpio_maskb(unsigned short, unsigned short);
314 void set_gpio_toggle(unsigned short);
315 void set_gpiop_dir(unsigned short, unsigned short);
316 void set_gpiop_inen(unsigned short, unsigned short);
317 void set_gpiop_polar(unsigned short, unsigned short);
318 void set_gpiop_edge(unsigned short, unsigned short);
319 void set_gpiop_both(unsigned short, unsigned short);
320 void set_gpiop_data(unsigned short, unsigned short);
321 void set_gpiop_maska(unsigned short, unsigned short);
322 void set_gpiop_maskb(unsigned short, unsigned short);
323 unsigned short get_gpio_dir(unsigned short);
324 unsigned short get_gpio_inen(unsigned short);
325 unsigned short get_gpio_polar(unsigned short);
326 unsigned short get_gpio_edge(unsigned short);
327 unsigned short get_gpio_both(unsigned short);
328 unsigned short get_gpio_maska(unsigned short);
329 unsigned short get_gpio_maskb(unsigned short);
330 unsigned short get_gpio_data(unsigned short);
331 unsigned short get_gpiop_dir(unsigned short);
332 unsigned short get_gpiop_inen(unsigned short);
333 unsigned short get_gpiop_polar(unsigned short);
334 unsigned short get_gpiop_edge(unsigned short);
335 unsigned short get_gpiop_both(unsigned short);
336 unsigned short get_gpiop_maska(unsigned short);
337 unsigned short get_gpiop_maskb(unsigned short);
338 unsigned short get_gpiop_data(unsigned short);
342 unsigned short dummy1;
343 unsigned short data_clear;
344 unsigned short dummy2;
345 unsigned short data_set;
346 unsigned short dummy3;
347 unsigned short toggle;
348 unsigned short dummy4;
349 unsigned short maska;
350 unsigned short dummy5;
351 unsigned short maska_clear;
352 unsigned short dummy6;
353 unsigned short maska_set;
354 unsigned short dummy7;
355 unsigned short maska_toggle;
356 unsigned short dummy8;
357 unsigned short maskb;
358 unsigned short dummy9;
359 unsigned short maskb_clear;
360 unsigned short dummy10;
361 unsigned short maskb_set;
362 unsigned short dummy11;
363 unsigned short maskb_toggle;
364 unsigned short dummy12;
366 unsigned short dummy13;
367 unsigned short polar;
368 unsigned short dummy14;
370 unsigned short dummy15;
372 unsigned short dummy16;
378 #define PM_WAKE_RISING 0x1
379 #define PM_WAKE_FALLING 0x2
380 #define PM_WAKE_HIGH 0x4
381 #define PM_WAKE_LOW 0x8
382 #define PM_WAKE_BOTH_EDGES (PM_WAKE_RISING | PM_WAKE_FALLING)
384 int gpio_pm_wakeup_request(unsigned short gpio, unsigned char type);
385 void gpio_pm_wakeup_free(unsigned short gpio);
386 unsigned int gpio_pm_setup(void);
387 void gpio_pm_restore(void);
391 unsigned short data_clear;
392 unsigned short data_set;
393 unsigned short toggle;
394 unsigned short maska;
395 unsigned short maska_clear;
396 unsigned short maska_set;
397 unsigned short maska_toggle;
398 unsigned short maskb;
399 unsigned short maskb_clear;
400 unsigned short maskb_set;
401 unsigned short maskb_toggle;
403 unsigned short polar;
409 unsigned short reserved;
413 /***********************************************************
415 * FUNCTIONS: Blackfin GPIO Driver
418 * gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
421 * DESCRIPTION: Blackfin GPIO Driver API
424 *************************************************************
425 * MODIFICATION HISTORY :
426 **************************************************************/
428 int gpio_request(unsigned short, const char *);
429 void gpio_free(unsigned short);
431 void gpio_set_value(unsigned short gpio, unsigned short arg);
432 unsigned short gpio_get_value(unsigned short gpio);
435 #define gpio_get_value(gpio) get_gpio_data(gpio)
436 #define gpio_set_value(gpio, value) set_gpio_data(gpio, value)
439 void gpio_direction_input(unsigned short gpio);
440 void gpio_direction_output(unsigned short gpio);
442 #include <asm-generic/gpio.h> /* cansleep wrappers */
445 static inline int gpio_to_irq(unsigned gpio)
447 return (gpio + GPIO_IRQ_BASE);
450 static inline int irq_to_gpio(unsigned irq)
452 return (irq - GPIO_IRQ_BASE);
455 #endif /* __ASSEMBLY__ */
457 #endif /* __ARCH_BLACKFIN_GPIO_H__ */