diff options
author | Imre Kaloz <kaloz@openwrt.org> | 2010-11-02 12:01:56 +0000 |
---|---|---|
committer | Imre Kaloz <kaloz@openwrt.org> | 2010-11-02 12:01:56 +0000 |
commit | 4c543cfd895ab6735711fc658cbd9f83b8aad1a7 (patch) | |
tree | 54663ffb1aa866c861c4ee55472ef51a6a34fe8a /target/linux/ixp4xx/patches-2.6.34/402-ixp4xx_gpiolib.patch | |
parent | abb1a5781fc7f1b7ae192176faa1690ac83bfbc5 (diff) | |
download | master-187ad058-4c543cfd895ab6735711fc658cbd9f83b8aad1a7.tar.gz master-187ad058-4c543cfd895ab6735711fc658cbd9f83b8aad1a7.tar.bz2 master-187ad058-4c543cfd895ab6735711fc658cbd9f83b8aad1a7.zip |
[ixp4xx]: support only 2.6.32 and 2.6.36
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@23773 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ixp4xx/patches-2.6.34/402-ixp4xx_gpiolib.patch')
-rw-r--r-- | target/linux/ixp4xx/patches-2.6.34/402-ixp4xx_gpiolib.patch | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/target/linux/ixp4xx/patches-2.6.34/402-ixp4xx_gpiolib.patch b/target/linux/ixp4xx/patches-2.6.34/402-ixp4xx_gpiolib.patch deleted file mode 100644 index 5fb5edba46..0000000000 --- a/target/linux/ixp4xx/patches-2.6.34/402-ixp4xx_gpiolib.patch +++ /dev/null @@ -1,136 +0,0 @@ ---- a/arch/arm/mach-ixp4xx/common.c -+++ b/arch/arm/mach-ixp4xx/common.c -@@ -36,6 +36,7 @@ - #include <asm/pgtable.h> - #include <asm/page.h> - #include <asm/irq.h> -+#include <asm/gpio.h> - - #include <asm/mach/map.h> - #include <asm/mach/irq.h> -@@ -375,12 +376,50 @@ static struct platform_device *ixp46x_de - unsigned long ixp4xx_exp_bus_size; - EXPORT_SYMBOL(ixp4xx_exp_bus_size); - -+static int ixp4xx_gpio_direction_input(struct gpio_chip *chip, unsigned gpio) -+{ -+ gpio_line_config(gpio, IXP4XX_GPIO_IN); -+ return 0; -+} -+ -+static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, int level) -+{ -+ gpio_line_set(gpio, level); -+ gpio_line_config(gpio, IXP4XX_GPIO_OUT); -+ return 0; -+} -+ -+static int ixp4xx_gpio_get_value(struct gpio_chip *chip, unsigned gpio) -+{ -+ int value; -+ -+ gpio_line_get(gpio, &value); -+ return value; -+} -+ -+static void ixp4xx_gpio_set_value(struct gpio_chip *chip, unsigned gpio, int value) -+{ -+ gpio_line_set(gpio, value); -+} -+ -+static struct gpio_chip ixp4xx_gpio_chip = { -+ .label = "IXP4XX_GPIO_CHIP", -+ .direction_input = ixp4xx_gpio_direction_input, -+ .direction_output = ixp4xx_gpio_direction_output, -+ .get = ixp4xx_gpio_get_value, -+ .set = ixp4xx_gpio_set_value, -+ .base = 0, -+ .ngpio = 16, -+}; -+ - void __init ixp4xx_sys_init(void) - { - ixp4xx_exp_bus_size = SZ_16M; - - platform_add_devices(ixp4xx_devices, ARRAY_SIZE(ixp4xx_devices)); - -+ gpiochip_add(&ixp4xx_gpio_chip); -+ - if (cpu_is_ixp46x()) { - int region; - ---- a/arch/arm/Kconfig -+++ b/arch/arm/Kconfig -@@ -434,6 +434,7 @@ config ARCH_IXP4XX - select GENERIC_GPIO - select GENERIC_TIME - select GENERIC_CLOCKEVENTS -+ select ARCH_REQUIRE_GPIOLIB - help - Support for Intel's IXP4XX (XScale) family of processors. - ---- a/arch/arm/mach-ixp4xx/include/mach/gpio.h -+++ b/arch/arm/mach-ixp4xx/include/mach/gpio.h -@@ -27,47 +27,31 @@ - - #include <linux/kernel.h> - #include <mach/hardware.h> -+#include <asm-generic/gpio.h> /* cansleep wrappers */ - --static inline int gpio_request(unsigned gpio, const char *label) --{ -- return 0; --} -- --static inline void gpio_free(unsigned gpio) --{ -- might_sleep(); -- -- return; --} -- --static inline int gpio_direction_input(unsigned gpio) --{ -- gpio_line_config(gpio, IXP4XX_GPIO_IN); -- return 0; --} -- --static inline int gpio_direction_output(unsigned gpio, int level) --{ -- gpio_line_set(gpio, level); -- gpio_line_config(gpio, IXP4XX_GPIO_OUT); -- return 0; --} -+#define NR_BUILTIN_GPIO 16 - - static inline int gpio_get_value(unsigned gpio) - { -- int value; -- -- gpio_line_get(gpio, &value); -- -- return value; -+ if (gpio < NR_BUILTIN_GPIO) -+ { -+ int value; -+ gpio_line_get(gpio, &value); -+ return value; -+ } -+ else -+ return __gpio_get_value(gpio); - } - - static inline void gpio_set_value(unsigned gpio, int value) - { -- gpio_line_set(gpio, value); -+ if (gpio < NR_BUILTIN_GPIO) -+ gpio_line_set(gpio, value); -+ else -+ __gpio_set_value(gpio, value); - } - --#include <asm-generic/gpio.h> /* cansleep wrappers */ -+#define gpio_cansleep __gpio_cansleep - - extern int gpio_to_irq(int gpio); - extern int irq_to_gpio(unsigned int irq); |