Add gpio_is_valid() for bcm47xx Index: linux-2.6.25.10/arch/mips/bcm47xx/gpio.c =================================================================== --- linux-2.6.25.10.orig/arch/mips/bcm47xx/gpio.c 2008-07-20 20:48:44.000000000 +0200 +++ linux-2.6.25.10/arch/mips/bcm47xx/gpio.c 2008-07-20 20:57:55.000000000 +0200 @@ -77,3 +77,15 @@ int bcm47xx_gpio_direction_output(unsign } EXPORT_SYMBOL_GPL(bcm47xx_gpio_direction_output); +int bcm47xx_gpio_is_valid(int gpio) +{ + if (ssb_bcm47xx.chipco.dev) { + if (gpio >= 0 && gpio < BCM47XX_CHIPCO_GPIO_LINES) + return 1; + } else if (ssb_bcm47xx.extif.dev) { + if (gpio >= 0 && gpio < BCM47XX_EXTIF_GPIO_LINES) + return 1; + } + return 0; +} +EXPORT_SYMBOL_GPL(bcm47xx_gpio_is_valid); Index: linux-2.6.25.10/include/asm-mips/mach-bcm47xx/gpio.h =================================================================== --- linux-2.6.25.10.orig/include/asm-mips/mach-bcm47xx/gpio.h 2008-07-20 20:48:44.000000000 +0200 +++ linux-2.6.25.10/include/asm-mips/mach-bcm47xx/gpio.h 2008-07-20 20:49:20.000000000 +0200 @@ -17,6 +17,7 @@ extern int bcm47xx_gpio_get_value(unsign extern void bcm47xx_gpio_set_value(unsigned gpio, int value); extern int bcm47xx_gpio_direction_input(unsigned gpio); extern int bcm47xx_gpio_direction_output(unsigned gpio, int value); +extern int bcm47xx_gpio_is_valid(int gpio); static inline int gpio_request(unsigned gpio, const char *label) { @@ -52,6 +53,10 @@ static inline int gpio_direction_output( return bcm47xx_gpio_direction_output(gpio, value); } +static inline int gpio_is_valid(int gpio) +{ + return bcm47xx_gpio_is_valid(gpio); +} /* cansleep wrappers */ #include