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