diff options
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1110-Add-GPIO-IRQ-for-the-s3c2410-and-add-irq_to_gpio.patch')
-rw-r--r-- | target/linux/s3c24xx/patches-2.6.24/1110-Add-GPIO-IRQ-for-the-s3c2410-and-add-irq_to_gpio.patch | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1110-Add-GPIO-IRQ-for-the-s3c2410-and-add-irq_to_gpio.patch b/target/linux/s3c24xx/patches-2.6.24/1110-Add-GPIO-IRQ-for-the-s3c2410-and-add-irq_to_gpio.patch deleted file mode 100644 index 4b94d76ac4..0000000000 --- a/target/linux/s3c24xx/patches-2.6.24/1110-Add-GPIO-IRQ-for-the-s3c2410-and-add-irq_to_gpio.patch +++ /dev/null @@ -1,132 +0,0 @@ -From 5134afd82f568f1eae133069bc9298e731546bc1 Mon Sep 17 00:00:00 2001 -From: Holger Freyther <zecke@openmoko.org> -Date: Sun, 13 Apr 2008 07:25:54 +0100 -Subject: [PATCH] Add GPIO -> IRQ for the s3c2410 and add irq_to_gpio to the gpio.h of the Samsung SoC - -Use this irq_to_gpio in the neo1973 keyboard driver ---- - arch/arm/plat-s3c24xx/gpio.c | 17 +++++++++++++++++ - drivers/input/keyboard/neo1973kbd.c | 19 ++++++------------- - include/asm-arm/arch-s3c2410/gpio.h | 1 + - include/asm-arm/arch-s3c2410/hardware.h | 2 ++ - 4 files changed, 26 insertions(+), 13 deletions(-) - -diff --git a/arch/arm/plat-s3c24xx/gpio.c b/arch/arm/plat-s3c24xx/gpio.c -index 7cab212..dfdb33a 100644 ---- a/arch/arm/plat-s3c24xx/gpio.c -+++ b/arch/arm/plat-s3c24xx/gpio.c -@@ -188,6 +188,23 @@ int s3c2410_gpio_getirq(unsigned int pin) - - EXPORT_SYMBOL(s3c2410_gpio_getirq); - -+int s3c2410_irq_to_gpio(unsigned int irq) -+{ -+ /* not valid interrupts */ -+ if (irq > 15 + IRQ_EINT8) -+ return -1; -+ -+ if (irq < IRQ_EINT4) -+ return (irq - IRQ_EINT0) + S3C2410_GPF0; -+ -+ if (irq < IRQ_EINT8) -+ return (irq - IRQ_EINT4) + S3C2410_GPF4; -+ -+ return (irq - IRQ_EINT8) + S3C2410_GPG0; -+} -+ -+EXPORT_SYMBOL(s3c2410_irq_to_gpio); -+ - static void pretty_dump(u32 cfg, u32 state, u32 pull, - const char ** function_names_2, - const char ** function_names_3, -diff --git a/drivers/input/keyboard/neo1973kbd.c b/drivers/input/keyboard/neo1973kbd.c -index b413bc8..06fa8e0 100644 ---- a/drivers/input/keyboard/neo1973kbd.c -+++ b/drivers/input/keyboard/neo1973kbd.c -@@ -28,16 +28,13 @@ - struct neo1973kbd { - struct input_dev *input; - unsigned int suspended; -- int gpio_aux; -- int gpio_hold; -- int gpio_jack; - }; - - static irqreturn_t neo1973kbd_aux_irq(int irq, void *dev_id) - { - struct neo1973kbd *neo1973kbd_data = dev_id; - -- int key_pressed = !gpio_get_value(neo1973kbd_data->gpio_aux); -+ int key_pressed = !gpio_get_value(irq_to_gpio(irq)); - input_report_key(neo1973kbd_data->input, KEY_PHONE, key_pressed); - input_sync(neo1973kbd_data->input); - -@@ -48,7 +45,7 @@ static irqreturn_t neo1973kbd_hold_irq(int irq, void *dev_id) - { - struct neo1973kbd *neo1973kbd_data = dev_id; - -- int key_pressed = gpio_get_value(neo1973kbd_data->gpio_hold); -+ int key_pressed = gpio_get_value(irq_to_gpio(irq)); - input_report_key(neo1973kbd_data->input, KEY_PAUSE, key_pressed); - input_sync(neo1973kbd_data->input); - -@@ -59,7 +56,7 @@ static irqreturn_t neo1973kbd_headphone_irq(int irq, void *dev_id) - { - struct neo1973kbd *neo1973kbd_data = dev_id; - -- int key_pressed = gpio_get_value(neo1973kbd_data->gpio_jack); -+ int key_pressed = gpio_get_value(irq_to_gpio(irq)); - input_report_switch(neo1973kbd_data->input, - SW_HEADPHONE_INSERT, key_pressed); - input_sync(neo1973kbd_data->input); -@@ -107,19 +104,15 @@ static int neo1973kbd_probe(struct platform_device *pdev) - if (pdev->resource[0].flags != 0) - return -EINVAL; - -- neo1973kbd->gpio_aux = pdev->resource[0].start; -- neo1973kbd->gpio_hold = pdev->resource[1].start; -- neo1973kbd->gpio_jack = pdev->resource[2].start; -- -- irq_aux = gpio_to_irq(neo1973kbd->gpio_aux); -+ irq_aux = gpio_to_irq(pdev->resource[0].start); - if (irq_aux < 0) - return -EINVAL; - -- irq_hold = gpio_to_irq(neo1973kbd->gpio_hold); -+ irq_hold = gpio_to_irq(pdev->resource[1].start); - if (irq_hold < 0) - return -EINVAL; - -- irq_jack = gpio_to_irq(neo1973kbd->gpio_jack); -+ irq_jack = gpio_to_irq(pdev->resource[2].start); - if (irq_jack < 0) - return -EINVAL; - -diff --git a/include/asm-arm/arch-s3c2410/gpio.h b/include/asm-arm/arch-s3c2410/gpio.h -index 7583895..9c8a338 100644 ---- a/include/asm-arm/arch-s3c2410/gpio.h -+++ b/include/asm-arm/arch-s3c2410/gpio.h -@@ -61,6 +61,7 @@ static inline int gpio_direction_output(unsigned gpio, int value) - #define gpio_to_irq(gpio) s3c2400_gpio_getirq(gpio) - #else - #define gpio_to_irq(gpio) s3c2410_gpio_getirq(gpio) -+#define irq_to_gpio(irq) s3c2410_irq_to_gpio(irq) - #endif - - /* FIXME implement irq_to_gpio() */ -diff --git a/include/asm-arm/arch-s3c2410/hardware.h b/include/asm-arm/arch-s3c2410/hardware.h -index 6dadf58..caea511 100644 ---- a/include/asm-arm/arch-s3c2410/hardware.h -+++ b/include/asm-arm/arch-s3c2410/hardware.h -@@ -50,6 +50,8 @@ extern unsigned int s3c2410_gpio_getcfg(unsigned int pin); - - extern int s3c2410_gpio_getirq(unsigned int pin); - -+extern int s3c2410_irq_to_gpio(unsigned int irq); -+ - #ifdef CONFIG_CPU_S3C2400 - - extern int s3c2400_gpio_getirq(unsigned int pin); --- -1.5.6.5 - |