-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel…
…/git/dtor/input * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: Input: ALPS - fix forward/back buttons reversed on Acer 5520-5290 Input: ALPS - put secondary device in proper place in sysfs Input: wacom - add support for Bamboo1, BambooFun, and Cintiq 12WX Input: document i8042.noloop Input: add keyboard notifier documentation Input: ads7846 - fix uninitialized var warning Input: i8042 - add SNI RM support Input: i8042 - add Lenovo 3000 N100 to nomux blacklist Input: i8042 - fix warning on non-x86 builds Input: cobalt_btns - assorted fixes
- Loading branch information
Showing
13 changed files
with
183 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
Keyboard notifier | ||
|
||
One can use register_keyboard_notifier to get called back on keyboard | ||
events (see kbd_keycode() function for details). The passed structure is | ||
keyboard_notifier_param: | ||
|
||
- 'vc' always provide the VC for which the keyboard event applies; | ||
- 'down' is 1 for a key press event, 0 for a key release; | ||
- 'shift' is the current modifier state, mask bit indexes are KG_*; | ||
- 'value' depends on the type of event. | ||
|
||
- KBD_KEYCODE events are always sent before other events, value is the keycode. | ||
- KBD_UNBOUND_KEYCODE events are sent if the keycode is not bound to a keysym. | ||
value is the keycode. | ||
- KBD_UNICODE events are sent if the keycode -> keysym translation produced a | ||
unicode character. value is the unicode value. | ||
- KBD_KEYSYM events are sent if the keycode -> keysym translation produced a | ||
non-unicode character. value is the keysym. | ||
- KBD_POST_KEYSYM events are sent after the treatment of non-unicode keysyms. | ||
That permits one to inspect the resulting LEDs for instance. | ||
|
||
For each kind of event but the last, the callback may return NOTIFY_STOP in | ||
order to "eat" the event: the notify loop is stopped and the keyboard event is | ||
dropped. | ||
|
||
In a rough C snippet, we have: | ||
|
||
kbd_keycode(keycode) { | ||
... | ||
params.value = keycode; | ||
if (notifier_call_chain(KBD_KEYCODE,¶ms) == NOTIFY_STOP) | ||
|| !bound) { | ||
notifier_call_chain(KBD_UNBOUND_KEYCODE,¶ms); | ||
return; | ||
} | ||
|
||
if (unicode) { | ||
param.value = unicode; | ||
if (notifier_call_chain(KBD_UNICODE,¶ms) == NOTIFY_STOP) | ||
return; | ||
emit unicode; | ||
return; | ||
} | ||
|
||
params.value = keysym; | ||
if (notifier_call_chain(KBD_KEYSYM,¶ms) == NOTIFY_STOP) | ||
return; | ||
apply keysym; | ||
notifier_call_chain(KBD_POST_KEYSYM,¶ms); | ||
} | ||
|
||
NOTE: This notifier is usually called from interrupt context. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
#ifndef _I8042_SNIRM_H | ||
#define _I8042_SNIRM_H | ||
|
||
#include <asm/sni.h> | ||
|
||
/* | ||
* 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. | ||
*/ | ||
|
||
/* | ||
* Names. | ||
*/ | ||
|
||
#define I8042_KBD_PHYS_DESC "onboard/serio0" | ||
#define I8042_AUX_PHYS_DESC "onboard/serio1" | ||
#define I8042_MUX_PHYS_DESC "onboard/serio%d" | ||
|
||
/* | ||
* IRQs. | ||
*/ | ||
static int i8042_kbd_irq; | ||
static int i8042_aux_irq; | ||
#define I8042_KBD_IRQ i8042_kbd_irq | ||
#define I8042_AUX_IRQ i8042_aux_irq | ||
|
||
static void __iomem *kbd_iobase; | ||
|
||
#define I8042_COMMAND_REG (kbd_iobase + 0x64UL) | ||
#define I8042_DATA_REG (kbd_iobase + 0x60UL) | ||
|
||
static inline int i8042_read_data(void) | ||
{ | ||
return readb(kbd_iobase + 0x60UL); | ||
} | ||
|
||
static inline int i8042_read_status(void) | ||
{ | ||
return readb(kbd_iobase + 0x64UL); | ||
} | ||
|
||
static inline void i8042_write_data(int val) | ||
{ | ||
writeb(val, kbd_iobase + 0x60UL); | ||
} | ||
|
||
static inline void i8042_write_command(int val) | ||
{ | ||
writeb(val, kbd_iobase + 0x64UL); | ||
} | ||
static inline int i8042_platform_init(void) | ||
{ | ||
/* RM200 is strange ... */ | ||
if (sni_brd_type == SNI_BRD_RM200) { | ||
kbd_iobase = ioremap(0x16000000, 4); | ||
i8042_kbd_irq = 33; | ||
i8042_aux_irq = 44; | ||
} else { | ||
kbd_iobase = ioremap(0x14000000, 4); | ||
i8042_kbd_irq = 1; | ||
i8042_aux_irq = 12; | ||
} | ||
if (!kbd_iobase) | ||
return -ENOMEM; | ||
|
||
return 0; | ||
} | ||
|
||
static inline void i8042_platform_exit(void) | ||
{ | ||
|
||
} | ||
|
||
#endif /* _I8042_SNIRM_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.