aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/lantiq/patches-3.0/520-register_buttons.patch
blob: df48d7cfd9f548d5f03c8ddee0f4a878615ffea7 (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
--- a/arch/mips/lantiq/xway/devices.c
+++ b/arch/mips/lantiq/xway/devices.c
@@ -131,6 +131,26 @@ ltq_register_madwifi_eep(void)
 	lantiq_emulate_madwifi_eep = 1;
 }
 
+/* gpio buttons */
+static struct gpio_buttons_platform_data ltq_gpio_buttons_platform_data;
+
+static struct platform_device ltq_gpio_buttons_platform_device =
+{
+	.name = "gpio-buttons",
+	.id = 0,
+	.dev = {
+		.platform_data = (void *) &ltq_gpio_buttons_platform_data,
+	},
+};
+
+void __init
+ltq_register_gpio_buttons(struct gpio_button *buttons, int cnt)
+{
+	ltq_gpio_buttons_platform_data.buttons = buttons;
+	ltq_gpio_buttons_platform_data.nbuttons = cnt;
+	platform_device_register(&ltq_gpio_buttons_platform_device);
+}
+
 static struct resource ltq_spi_resources[] = {
 	{
 		.start  = LTQ_SSC_BASE_ADDR,
--- a/arch/mips/lantiq/xway/devices.h
+++ b/arch/mips/lantiq/xway/devices.h
@@ -12,6 +12,7 @@
 #include "../devices.h"
 #include <linux/phy.h>
 #include <linux/spi/spi.h>
+#include <linux/gpio_buttons.h>
 
 extern void ltq_register_gpio(void);
 extern void ltq_register_gpio_stp(void);
@@ -20,5 +21,6 @@ extern void ltq_register_etop(struct ltq
 extern void ltq_register_spi(struct ltq_spi_platform_data *pdata,
 	struct spi_board_info const *info, unsigned n);
 extern void ltq_register_madwifi_eep(void);
+extern void ltq_register_gpio_buttons(struct gpio_button *buttons, int cnt);
 
 #endif