2 * File: arch/blackfin/kernel/bfin_gpio.h
4 * Author: Michael Hennerich (hennerich@blackfin.uclinux.org)
10 * Copyright 2004-2008 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
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
84 #ifndef __ARCH_BLACKFIN_GPIO_H__
85 #define __ARCH_BLACKFIN_GPIO_H__
87 #define gpio_bank(x) ((x) >> 4)
88 #define gpio_bit(x) (1<<((x) & 0xF))
89 #define gpio_sub_n(x) ((x) & 0xF)
91 #define GPIO_BANKSIZE 16
143 #define PERIPHERAL_USAGE 1
146 #if defined(BF518_FAMILY)
147 #define MAX_BLACKFIN_GPIOS 40
190 #define PORT_F GPIO_PF0
191 #define PORT_G GPIO_PG0
192 #define PORT_H GPIO_PH0
198 #define MAX_BLACKFIN_GPIOS 16
219 #if defined(BF538_FAMILY)
221 * For now only support PORTF GPIOs.
222 * PORT C,D and E are for peripheral usage only
224 #define MAX_BLACKFIN_GPIOS 16
226 #define GPIO_PF0 0 /* PF */
242 #define GPIO_PC0 16 /* PC */
250 #define GPIO_PD0 32 /* PD */
264 #define GPIO_PE0 48 /* PE */
281 #define PORT_F GPIO_PF0
282 #define PORT_C GPIO_PC0
283 #define PORT_D GPIO_PD0
284 #define PORT_E GPIO_PE0
287 #if defined(BF527_FAMILY) || defined(BF537_FAMILY)
288 #define MAX_BLACKFIN_GPIOS 48
339 #define PORT_F GPIO_PF0
340 #define PORT_G GPIO_PG0
341 #define PORT_H GPIO_PH0
346 #include <mach/gpio.h>
350 #define MAX_BLACKFIN_GPIOS 48
401 #define PORT_FIO0 GPIO_0
402 #define PORT_FIO1 GPIO_16
403 #define PORT_FIO2 GPIO_32
408 /***********************************************************
410 * FUNCTIONS: Blackfin General Purpose Ports Access Functions
413 * gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
416 * DESCRIPTION: These functions abstract direct register access
417 * to Blackfin processor General Purpose
420 * CAUTION: These functions do not belong to the GPIO Driver API
421 *************************************************************
422 * MODIFICATION HISTORY :
423 **************************************************************/
426 void set_gpio_dir(unsigned, unsigned short);
427 void set_gpio_inen(unsigned, unsigned short);
428 void set_gpio_polar(unsigned, unsigned short);
429 void set_gpio_edge(unsigned, unsigned short);
430 void set_gpio_both(unsigned, unsigned short);
431 void set_gpio_data(unsigned, unsigned short);
432 void set_gpio_maska(unsigned, unsigned short);
433 void set_gpio_maskb(unsigned, unsigned short);
434 void set_gpio_toggle(unsigned);
435 void set_gpiop_dir(unsigned, unsigned short);
436 void set_gpiop_inen(unsigned, unsigned short);
437 void set_gpiop_polar(unsigned, unsigned short);
438 void set_gpiop_edge(unsigned, unsigned short);
439 void set_gpiop_both(unsigned, unsigned short);
440 void set_gpiop_data(unsigned, unsigned short);
441 void set_gpiop_maska(unsigned, unsigned short);
442 void set_gpiop_maskb(unsigned, unsigned short);
443 unsigned short get_gpio_dir(unsigned);
444 unsigned short get_gpio_inen(unsigned);
445 unsigned short get_gpio_polar(unsigned);
446 unsigned short get_gpio_edge(unsigned);
447 unsigned short get_gpio_both(unsigned);
448 unsigned short get_gpio_maska(unsigned);
449 unsigned short get_gpio_maskb(unsigned);
450 unsigned short get_gpio_data(unsigned);
451 unsigned short get_gpiop_dir(unsigned);
452 unsigned short get_gpiop_inen(unsigned);
453 unsigned short get_gpiop_polar(unsigned);
454 unsigned short get_gpiop_edge(unsigned);
455 unsigned short get_gpiop_both(unsigned);
456 unsigned short get_gpiop_maska(unsigned);
457 unsigned short get_gpiop_maskb(unsigned);
458 unsigned short get_gpiop_data(unsigned);
462 unsigned short dummy1;
463 unsigned short data_clear;
464 unsigned short dummy2;
465 unsigned short data_set;
466 unsigned short dummy3;
467 unsigned short toggle;
468 unsigned short dummy4;
469 unsigned short maska;
470 unsigned short dummy5;
471 unsigned short maska_clear;
472 unsigned short dummy6;
473 unsigned short maska_set;
474 unsigned short dummy7;
475 unsigned short maska_toggle;
476 unsigned short dummy8;
477 unsigned short maskb;
478 unsigned short dummy9;
479 unsigned short maskb_clear;
480 unsigned short dummy10;
481 unsigned short maskb_set;
482 unsigned short dummy11;
483 unsigned short maskb_toggle;
484 unsigned short dummy12;
486 unsigned short dummy13;
487 unsigned short polar;
488 unsigned short dummy14;
490 unsigned short dummy15;
492 unsigned short dummy16;
499 unsigned int bfin_pm_standby_setup(void);
500 void bfin_pm_standby_restore(void);
502 void bfin_gpio_pm_hibernate_restore(void);
503 void bfin_gpio_pm_hibernate_suspend(void);
506 #define PM_WAKE_RISING 0x1
507 #define PM_WAKE_FALLING 0x2
508 #define PM_WAKE_HIGH 0x4
509 #define PM_WAKE_LOW 0x8
510 #define PM_WAKE_BOTH_EDGES (PM_WAKE_RISING | PM_WAKE_FALLING)
511 #define PM_WAKE_IGNORE 0xF0
513 int gpio_pm_wakeup_request(unsigned gpio, unsigned char type);
514 void gpio_pm_wakeup_free(unsigned gpio);
518 unsigned short maska;
519 unsigned short maskb;
521 unsigned short polar;
527 unsigned short reserved;
530 #endif /*CONFIG_BF54x*/
532 /***********************************************************
534 * FUNCTIONS: Blackfin GPIO Driver
537 * gpio - GPIO Number between 0 and MAX_BLACKFIN_GPIOS
540 * DESCRIPTION: Blackfin GPIO Driver API
543 *************************************************************
544 * MODIFICATION HISTORY :
545 **************************************************************/
547 int gpio_request(unsigned, const char *);
548 void gpio_free(unsigned);
550 void gpio_set_value(unsigned gpio, int arg);
551 int gpio_get_value(unsigned gpio);
554 #define gpio_set_value(gpio, value) set_gpio_data(gpio, value)
557 int gpio_direction_input(unsigned gpio);
558 int gpio_direction_output(unsigned gpio, int value);
560 #include <asm-generic/gpio.h> /* cansleep wrappers */
563 static inline int gpio_to_irq(unsigned gpio)
565 return (gpio + GPIO_IRQ_BASE);
568 static inline int irq_to_gpio(unsigned irq)
570 return (irq - GPIO_IRQ_BASE);
573 #endif /* __ASSEMBLY__ */
575 #endif /* __ARCH_BLACKFIN_GPIO_H__ */