aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/s3c24xx/patches-2.6.24/1131-fix-jack-interrupt-debounce-loss-window.patch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1131-fix-jack-interrupt-debounce-loss-window.patch.patch')
-rw-r--r--target/linux/s3c24xx/patches-2.6.24/1131-fix-jack-interrupt-debounce-loss-window.patch.patch82
1 files changed, 0 insertions, 82 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1131-fix-jack-interrupt-debounce-loss-window.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1131-fix-jack-interrupt-debounce-loss-window.patch.patch
deleted file mode 100644
index b2a49ed21b..0000000000
--- a/target/linux/s3c24xx/patches-2.6.24/1131-fix-jack-interrupt-debounce-loss-window.patch.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 4c445577b8f471612389007e5265c7dbfb2c487b Mon Sep 17 00:00:00 2001
-From: Andy Green <andy@openmoko.com>
-Date: Sun, 13 Apr 2008 07:25:59 +0100
-Subject: [PATCH] fix-jack-interrupt-debounce-loss-window.patch
-
-Make sure we can't lose a jack interrupt in debounce, despite it is
-a one-in-a-million thing that just needs replug to clear
-
-Signed-off-by: Andy Green <andy@openmoko.com>
----
- drivers/input/keyboard/neo1973kbd.c | 50 +++++++++++++++++++++++-----------
- 1 files changed, 34 insertions(+), 16 deletions(-)
-
-diff --git a/drivers/input/keyboard/neo1973kbd.c b/drivers/input/keyboard/neo1973kbd.c
-index a1fc7a3..8b9a420 100644
---- a/drivers/input/keyboard/neo1973kbd.c
-+++ b/drivers/input/keyboard/neo1973kbd.c
-@@ -62,27 +62,45 @@ static irqreturn_t neo1973kbd_hold_irq(int irq, void *dev_id)
- static void neo1973kbd_debounce_jack(struct work_struct *work)
- {
- struct neo1973kbd *kbd = container_of(work, struct neo1973kbd, work);
--
-- /* we wait out any multiple interrupt stuttering in 100ms lumps */
-+ unsigned long flags;
-+ int loop = 0;
-
- do {
-- kbd->hp_irq_count_in_work = kbd->hp_irq_count;
-- msleep(100);
-- } while (kbd->hp_irq_count != kbd->hp_irq_count_in_work);
--
-- /* no new interrupts on jack for 100ms... ok we will report it */
--
-- input_report_switch(kbd->input,
-- SW_HEADPHONE_INSERT,
-- gpio_get_value(irq_to_gpio(kbd->jack_irq)));
-- input_sync(kbd->input);
--
-- /* next time we get an interrupt on jack we need new work action */
-- kbd->work_in_progress = 0;
-+ /*
-+ * we wait out any multiple interrupt
-+ * stuttering in 100ms lumps
-+ */
-+ do {
-+ kbd->hp_irq_count_in_work = kbd->hp_irq_count;
-+ msleep(100);
-+ } while (kbd->hp_irq_count != kbd->hp_irq_count_in_work);
-+ /*
-+ * no new interrupts on jack for 100ms...
-+ * ok we will report it
-+ */
-+ input_report_switch(kbd->input, SW_HEADPHONE_INSERT,
-+ gpio_get_value(irq_to_gpio(kbd->jack_irq)));
-+ input_sync(kbd->input);
-+ /*
-+ * we go around the outer loop again if we detect that more
-+ * interrupts came while we are servicing here. But we have
-+ * to sequence it carefully with interrupts off
-+ */
-+ local_save_flags(flags);
-+ /* no interrupts during this work means we can exit the work */
-+ loop = !!(kbd->hp_irq_count != kbd->hp_irq_count_in_work);
-+ if (!loop)
-+ kbd->work_in_progress = 0;
-+ local_irq_restore(flags);
-+ /*
-+ * interrupt that comes here will either queue a new work action
-+ * since work_in_progress is cleared now, or be dealt with
-+ * when we loop.
-+ */
-+ } while (loop);
- }
-
-
--
- static irqreturn_t neo1973kbd_headphone_irq(int irq, void *dev_id)
- {
- struct neo1973kbd *neo1973kbd_data = dev_id;
---
-1.5.6.5
-