Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 58483
b: refs/heads/master
c: a4da16d
h: refs/heads/master
i:
  58481: 5cb5f8e
  58479: b87e9ff
v: v3
  • Loading branch information
Eric Piel authored and Dmitry Torokhov committed Jul 10, 2007
1 parent 907321e commit 0e34e4b
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5035522d1a6b55f95e7e01c209b57f5d89f88b16
refs/heads/master: a4da16d3838669d7fb096ea5d1e4917e5ca4dc16
18 changes: 14 additions & 4 deletions trunk/drivers/input/misc/wistron_btns.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include <linux/init.h>
#include <linux/input.h>
#include <linux/interrupt.h>
#include <linux/jiffies.h>
#include <linux/kernel.h>
#include <linux/mc146818rtc.h>
#include <linux/module.h>
Expand All @@ -37,9 +38,10 @@
*/
#define MAX_POLL_ITERATIONS 64

#define POLL_FREQUENCY 10 /* Number of polls per second */
#define POLL_FREQUENCY 2 /* Number of polls per second when idle */
#define POLL_FREQUENCY_BURST 10 /* Polls per second when a key was recently pressed */

#if POLL_FREQUENCY > HZ
#if POLL_FREQUENCY_BURST > HZ
#error "POLL_FREQUENCY too high"
#endif

Expand Down Expand Up @@ -1079,6 +1081,8 @@ static void handle_key(u8 code)

static void poll_bios(unsigned long discard)
{
static unsigned long jiffies_last_press;
unsigned long jiffies_now = jiffies;
u8 qlen;
u16 val;

Expand All @@ -1087,11 +1091,17 @@ static void poll_bios(unsigned long discard)
if (qlen == 0)
break;
val = bios_pop_queue();
if (val != 0 && !discard)
if (val != 0 && !discard) {
handle_key((u8)val);
jiffies_last_press = jiffies_now;
}
}

mod_timer(&poll_timer, jiffies + HZ / POLL_FREQUENCY);
/* Increase precision if user is currently pressing keys (< 2s ago) */
if (time_after(jiffies_last_press, jiffies_now - (HZ * 2)))
mod_timer(&poll_timer, jiffies_now + HZ / POLL_FREQUENCY_BURST);
else
mod_timer(&poll_timer, jiffies_now + HZ / POLL_FREQUENCY);
}

static int __devinit wistron_probe(struct platform_device *dev)
Expand Down

0 comments on commit 0e34e4b

Please sign in to comment.