home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / arm / mach-sa1100 / include / mach / gpio.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.7 KB  |  69 lines

  1. /*
  2.  * arch/arm/mach-sa1100/include/mach/gpio.h
  3.  *
  4.  * SA1100 GPIO wrappers for arch-neutral GPIO calls
  5.  *
  6.  * Written by Philipp Zabel <philipp.zabel@gmail.com>
  7.  *
  8.  * This program is free software; you can redistribute it and/or modify
  9.  * it under the terms of the GNU General Public License as published by
  10.  * the Free Software Foundation; either version 2 of the License, or
  11.  * (at your option) any later version.
  12.  *
  13.  * This program is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16.  * GNU General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU General Public License
  19.  * along with this program; if not, write to the Free Software
  20.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  21.  *
  22.  */
  23.  
  24. #ifndef __ASM_ARCH_SA1100_GPIO_H
  25. #define __ASM_ARCH_SA1100_GPIO_H
  26.  
  27. #include <mach/hardware.h>
  28. #include <asm/irq.h>
  29. #include <asm-generic/gpio.h>
  30.  
  31. static inline int gpio_get_value(unsigned gpio)
  32. {
  33.     if (__builtin_constant_p(gpio) && (gpio <= GPIO_MAX))
  34.         return GPLR & GPIO_GPIO(gpio);
  35.     else
  36.         return __gpio_get_value(gpio);
  37. }
  38.  
  39. static inline void gpio_set_value(unsigned gpio, int value)
  40. {
  41.     if (__builtin_constant_p(gpio) && (gpio <= GPIO_MAX))
  42.         if (value)
  43.             GPSR = GPIO_GPIO(gpio);
  44.         else
  45.             GPCR = GPIO_GPIO(gpio);
  46.     else
  47.         __gpio_set_value(gpio, value);
  48. }
  49.  
  50. #define gpio_cansleep    __gpio_cansleep
  51.  
  52. static inline unsigned gpio_to_irq(unsigned gpio)
  53. {
  54.     if (gpio < 11)
  55.         return IRQ_GPIO0 + gpio;
  56.     else
  57.         return IRQ_GPIO11 - 11 + gpio;
  58. }
  59.  
  60. static inline unsigned irq_to_gpio(unsigned irq)
  61. {
  62.     if (irq < IRQ_GPIO11_27)
  63.         return irq - IRQ_GPIO0;
  64.     else
  65.         return irq - IRQ_GPIO11 + 11;
  66. }
  67.  
  68. #endif
  69.