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-ixp2000 / include / mach / gpio.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.3 KB  |  49 lines

  1. /*
  2.  * arch/arm/mach-ixp2000/include/mach/gpio.h
  3.  *
  4.  * Copyright (C) 2002 Intel Corporation.
  5.  *
  6.  * This program is free software, you can redistribute it and/or modify 
  7.  * it under the terms of the GNU General Public License version 2 as
  8.  * published by the Free Software Foundation.
  9.  */
  10.  
  11. /*
  12.  * IXP2000 GPIO in/out, edge/level detection for IRQs:
  13.  * IRQs are generated on Falling-edge, Rising-Edge, Level-low, Level-High
  14.  * or both Falling-edge and Rising-edge.  
  15.  * This must be called *before* the corresponding IRQ is registerd.
  16.  * Use this instead of directly setting the GPIO registers.
  17.  * GPIOs may also be used as GPIOs (e.g. for emulating i2c/smb)
  18.  */
  19. #ifndef __ASM_ARCH_GPIO_H
  20. #define __ASM_ARCH_GPIO_H
  21.  
  22. #ifndef __ASSEMBLY__
  23.  
  24. #define GPIO_IN                0
  25. #define GPIO_OUT            1
  26.  
  27. #define IXP2000_GPIO_LOW        0
  28. #define IXP2000_GPIO_HIGH        1
  29.  
  30. extern void gpio_line_config(int line, int direction);
  31.  
  32. static inline int gpio_line_get(int line)
  33. {
  34.     return (((*IXP2000_GPIO_PLR) >> line) & 1);
  35. }
  36.  
  37. static inline void gpio_line_set(int line, int value)
  38. {
  39.     if (value == IXP2000_GPIO_HIGH) {
  40.         ixp2000_reg_write(IXP2000_GPIO_POSR, 1 << line);
  41.     } else if (value == IXP2000_GPIO_LOW) {
  42.         ixp2000_reg_write(IXP2000_GPIO_POCR, 1 << line);
  43.     }
  44. }
  45.  
  46. #endif /* !__ASSEMBLY__ */
  47.  
  48. #endif /* ASM_ARCH_IXP2000_GPIO_H_ */
  49.