aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm47xx/patches-2.6.25/710-add-gpio-is-valid.patch
blob: bca3b4eaae3b631673c669c69b9f7e9301a80130 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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 <asm-generic/gpio.h>