linux/arch/mips/include/asm/mach-bcm47xx/gpio.h
<<
>>
Prefs
   1/*
   2 * This file is subject to the terms and conditions of the GNU General Public
   3 * License.  See the file "COPYING" in the main directory of this archive
   4 * for more details.
   5 *
   6 * Copyright (C) 2007 Aurelien Jarno <aurelien@aurel32.net>
   7 */
   8
   9#ifndef __BCM47XX_GPIO_H
  10#define __BCM47XX_GPIO_H
  11
  12#include <linux/ssb/ssb_embedded.h>
  13#include <asm/mach-bcm47xx/bcm47xx.h>
  14
  15#define BCM47XX_EXTIF_GPIO_LINES        5
  16#define BCM47XX_CHIPCO_GPIO_LINES       16
  17
  18extern int gpio_request(unsigned gpio, const char *label);
  19extern void gpio_free(unsigned gpio);
  20extern int gpio_to_irq(unsigned gpio);
  21
  22static inline int gpio_get_value(unsigned gpio)
  23{
  24        return ssb_gpio_in(&ssb_bcm47xx, 1 << gpio);
  25}
  26
  27static inline void gpio_set_value(unsigned gpio, int value)
  28{
  29        ssb_gpio_out(&ssb_bcm47xx, 1 << gpio, value ? 1 << gpio : 0);
  30}
  31
  32static inline int gpio_direction_input(unsigned gpio)
  33{
  34        ssb_gpio_outen(&ssb_bcm47xx, 1 << gpio, 0);
  35        return 0;
  36}
  37
  38static inline int gpio_direction_output(unsigned gpio, int value)
  39{
  40        /* first set the gpio out value */
  41        ssb_gpio_out(&ssb_bcm47xx, 1 << gpio, value ? 1 << gpio : 0);
  42        /* then set the gpio mode */
  43        ssb_gpio_outen(&ssb_bcm47xx, 1 << gpio, 1 << gpio);
  44        return 0;
  45}
  46
  47static inline int gpio_intmask(unsigned gpio, int value)
  48{
  49        ssb_gpio_intmask(&ssb_bcm47xx, 1 << gpio,
  50                         value ? 1 << gpio : 0);
  51        return 0;
  52}
  53
  54static inline int gpio_polarity(unsigned gpio, int value)
  55{
  56        ssb_gpio_polarity(&ssb_bcm47xx, 1 << gpio,
  57                          value ? 1 << gpio : 0);
  58        return 0;
  59}
  60
  61
  62/* cansleep wrappers */
  63#include <asm-generic/gpio.h>
  64
  65#endif /* __BCM47XX_GPIO_H */
  66