diff options
author | John Crispin <john@openwrt.org> | 2011-07-17 19:27:44 +0000 |
---|---|---|
committer | John Crispin <john@openwrt.org> | 2011-07-17 19:27:44 +0000 |
commit | 59063773328e02631c611efc34cf574c0abbeb42 (patch) | |
tree | 898e2625ceeabbeb76bb0595d7e08cfa9cde9362 /target/linux/lantiq/patches-2.6.39/520-register_buttons.patch | |
parent | 4da4c491a6fc76f40022c96e2f142f8ed9656ab1 (diff) | |
download | upstream-59063773328e02631c611efc34cf574c0abbeb42.tar.gz upstream-59063773328e02631c611efc34cf574c0abbeb42.tar.bz2 upstream-59063773328e02631c611efc34cf574c0abbeb42.zip |
* add gigasx76x update
* rebase patches
* add arv752DPW arv7525PD
* fixes gpio_keys
Signed-off-by: Luka Perkov <openwrt@lukaperkov.net>
Signed-off-by: John Crispin <blogic@openwrt.org>
SVN-Revision: 27665
Diffstat (limited to 'target/linux/lantiq/patches-2.6.39/520-register_buttons.patch')
-rw-r--r-- | target/linux/lantiq/patches-2.6.39/520-register_buttons.patch | 137 |
1 files changed, 96 insertions, 41 deletions
diff --git a/target/linux/lantiq/patches-2.6.39/520-register_buttons.patch b/target/linux/lantiq/patches-2.6.39/520-register_buttons.patch index 442df5d5ce..11097bab57 100644 --- a/target/linux/lantiq/patches-2.6.39/520-register_buttons.patch +++ b/target/linux/lantiq/patches-2.6.39/520-register_buttons.patch @@ -1,46 +1,101 @@ ---- a/arch/mips/lantiq/xway/devices.c -+++ b/arch/mips/lantiq/xway/devices.c -@@ -154,6 +154,26 @@ ltq_register_madwifi_eep(void) - lantiq_emulate_madwifi_eep = 1; - } +--- a/arch/mips/lantiq/Makefile ++++ b/arch/mips/lantiq/Makefile +@@ -4,7 +4,7 @@ + # under the terms of the GNU General Public License version 2 as published + # by the Free Software Foundation. -+/* gpio buttons */ -+static struct gpio_buttons_platform_data ltq_gpio_buttons_platform_data; +-obj-y := irq.o setup.o clk.o prom.o devices.o ++obj-y := irq.o setup.o clk.o prom.o devices.o dev-gpio-buttons.o + + obj-$(CONFIG_EARLY_PRINTK) += early_printk.o + +--- /dev/null ++++ b/arch/mips/lantiq/dev-gpio-buttons.c +@@ -0,0 +1,58 @@ ++/* ++ * Lantiq GPIO button support ++ * ++ * Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org> ++ * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published ++ * by the Free Software Foundation. ++ */ + -+static struct platform_device ltq_gpio_buttons_platform_device = -+{ -+ .name = "gpio-buttons", -+ .id = 0, -+ .dev = { -+ .platform_data = (void *) <q_gpio_buttons_platform_data, -+ }, -+}; -+ -+void __init -+ltq_register_gpio_buttons(struct gpio_button *buttons, int cnt) ++#include "linux/init.h" ++#include "linux/slab.h" ++#include <linux/platform_device.h> ++ ++#include "dev-gpio-buttons.h" ++ ++void __init ltq_register_gpio_keys_polled(int id, ++ unsigned poll_interval, ++ unsigned nbuttons, ++ struct gpio_keys_button *buttons) +{ -+ ltq_gpio_buttons_platform_data.buttons = buttons; -+ ltq_gpio_buttons_platform_data.nbuttons = cnt; -+ platform_device_register(<q_gpio_buttons_platform_device); ++ struct platform_device *pdev; ++ struct gpio_keys_platform_data pdata; ++ struct gpio_keys_button *p; ++ int err; ++ ++ p = kmalloc(nbuttons * sizeof(*p), GFP_KERNEL); ++ if (!p) ++ return; ++ ++ memcpy(p, buttons, nbuttons * sizeof(*p)); ++ ++ pdev = platform_device_alloc("gpio-keys-polled", id); ++ if (!pdev) ++ goto err_free_buttons; ++ ++ memset(&pdata, 0, sizeof(pdata)); ++ pdata.poll_interval = poll_interval; ++ pdata.nbuttons = nbuttons; ++ pdata.buttons = p; ++ ++ err = platform_device_add_data(pdev, &pdata, sizeof(pdata)); ++ if (err) ++ goto err_put_pdev; ++ ++ err = platform_device_add(pdev); ++ if (err) ++ goto err_put_pdev; ++ ++ return; ++ ++err_put_pdev: ++ platform_device_put(pdev); ++ ++err_free_buttons: ++ kfree(p); +} +--- /dev/null ++++ b/arch/mips/lantiq/dev-gpio-buttons.h +@@ -0,0 +1,26 @@ ++/* ++ * Lantiq GPIO button support ++ * ++ * Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org> ++ * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published ++ * by the Free Software Foundation. ++ */ + - 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 -@@ -11,6 +11,7 @@ - - #include "../devices.h" - #include <linux/phy.h> -+#include <linux/gpio_buttons.h> - - extern void ltq_register_gpio(void); - extern void ltq_register_gpio_stp(void); -@@ -18,5 +19,6 @@ extern void ltq_register_ase_asc(void); - extern void ltq_register_etop(struct ltq_eth_data *eth); - extern void ltq_register_gpio_ebu(unsigned int value); - extern void ltq_register_madwifi_eep(void); -+extern void ltq_register_gpio_buttons(struct gpio_button *buttons, int cnt); - - #endif ++#ifndef _LANTIQ_DEV_GPIO_BUTTONS_H ++#define _LANTIQ_DEV_GPIO_BUTTONS_H ++ ++#include <linux/input.h> ++#include <linux/gpio_keys.h> ++ ++#define LTQ_KEYS_POLL_INTERVAL 20 /* msecs */ ++#define LTQ_KEYS_DEBOUNCE_INTERVAL (3 * LTQ_KEYS_POLL_INTERVAL) ++ ++void ltq_register_gpio_keys_polled(int id, ++ unsigned poll_interval, ++ unsigned nbuttons, ++ struct gpio_keys_button *buttons); ++ ++#endif /* _LANTIQ_DEV_GPIO_BUTTONS_H */ |