summaryrefslogtreecommitdiffstats
path: root/target/linux/ixp4xx/patches-2.6.33/302-avila_gpio_device.patch
blob: 7e3daaa89ee4a48b515de4b2a887007aa7d5eb31 (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
45
46
47
48
--- a/arch/arm/mach-ixp4xx/avila-setup.c
+++ b/arch/arm/mach-ixp4xx/avila-setup.c
@@ -237,10 +237,28 @@ static struct platform_device avila_latc
 	.dev.platform_data	= &avila_latch_leds_data,
 };
 
+static struct resource avila_gpio_resources[] = {
+	{
+		.name	= "gpio",
+		/* FIXME: gpio mask should be model specific */
+		.start	= AVILA_GPIO_MASK,
+		.end	= AVILA_GPIO_MASK,
+		.flags	= 0,
+	},
+};
+
+static struct platform_device avila_gpio = {
+	.name			= "GPIODEV",
+	.id			= -1,
+	.num_resources		= ARRAY_SIZE(avila_gpio_resources),
+	.resource		= avila_gpio_resources,
+};
+
 static struct platform_device *avila_devices[] __initdata = {
 	&avila_i2c_gpio,
 	&avila_flash,
-	&avila_uart
+	&avila_uart,
+	&avila_gpio,
 };
 
 static void __init avila_gw23xx_setup(void)
--- a/arch/arm/mach-ixp4xx/avila-setup.c
+++ b/arch/arm/mach-ixp4xx/avila-setup.c
@@ -38,6 +38,13 @@
 #define AVILA_SDA_PIN	7
 #define AVILA_SCL_PIN	6
 
+/* User LEDs */
+#define AVILA_GW23XX_LED_USER_GPIO     3
+#define AVILA_GW23X7_LED_USER_GPIO     4
+
+/* gpio mask used by platform device */
+#define AVILA_GPIO_MASK        (1 << 1) | (1 << 3) | (1 << 5) | (1 << 7) | (1 << 9)
+
 struct avila_board_info {
 	unsigned char	*model;
 	void		(*setup)(void);