Merge master.kernel.org:/pub/scm/linux/kernel/git/dtor/input
* master.kernel.org:/pub/scm/linux/kernel/git/dtor/input: (26 commits) Input: add support for Braille devices Input: synaptics - limit rate to 40pps on Toshiba Protege M300 Input: gamecon - add SNES mouse support Input: make modalias code respect allowed buffer size Input: convert /proc handling to seq_file Input: limit attributes' output to PAGE_SIZE Input: gameport - fix memory leak Input: serio - fix memory leak Input: zaurus keyboard driver updates Input: i8042 - fix logic around pnp_register_driver() Input: ns558 - fix logic around pnp_register_driver() Input: pcspkr - separate device and driver registration Input: atkbd - allow disabling on X86_PC (if EMBEDDED) Input: atkbd - disable softrepeat for dumb keyboards Input: atkbd - fix complaints about 'releasing unknown key 0x7f' Input: HID - fix duplicate key mapping for Logitech UltraX remote Input: use kzalloc() throughout the code Input: fix input_free_device() implementation Input: initialize serio and gameport at subsystem level Input: uinput - semaphore to mutex conversion ...
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/timer.h>
|
||||
|
||||
@@ -40,7 +41,7 @@ struct gameport {
|
||||
struct gameport *parent, *child;
|
||||
|
||||
struct gameport_driver *drv;
|
||||
struct semaphore drv_sem; /* protects serio->drv so attributes can pin driver */
|
||||
struct mutex drv_mutex; /* protects serio->drv so attributes can pin driver */
|
||||
|
||||
struct device dev;
|
||||
unsigned int registered; /* port has been fully registered with driver core */
|
||||
@@ -137,12 +138,12 @@ static inline void gameport_set_drvdata(struct gameport *gameport, void *data)
|
||||
*/
|
||||
static inline int gameport_pin_driver(struct gameport *gameport)
|
||||
{
|
||||
return down_interruptible(&gameport->drv_sem);
|
||||
return mutex_lock_interruptible(&gameport->drv_mutex);
|
||||
}
|
||||
|
||||
static inline void gameport_unpin_driver(struct gameport *gameport)
|
||||
{
|
||||
up(&gameport->drv_sem);
|
||||
mutex_unlock(&gameport->drv_mutex);
|
||||
}
|
||||
|
||||
void __gameport_register_driver(struct gameport_driver *drv, struct module *owner);
|
||||
|
||||
+16
-7
@@ -421,7 +421,7 @@ struct input_absinfo {
|
||||
#define BTN_GEAR_UP 0x151
|
||||
|
||||
#define KEY_OK 0x160
|
||||
#define KEY_SELECT 0x161
|
||||
#define KEY_SELECT 0x161
|
||||
#define KEY_GOTO 0x162
|
||||
#define KEY_CLEAR 0x163
|
||||
#define KEY_POWER2 0x164
|
||||
@@ -512,6 +512,15 @@ struct input_absinfo {
|
||||
#define KEY_FN_S 0x1e3
|
||||
#define KEY_FN_B 0x1e4
|
||||
|
||||
#define KEY_BRL_DOT1 0x1f1
|
||||
#define KEY_BRL_DOT2 0x1f2
|
||||
#define KEY_BRL_DOT3 0x1f3
|
||||
#define KEY_BRL_DOT4 0x1f4
|
||||
#define KEY_BRL_DOT5 0x1f5
|
||||
#define KEY_BRL_DOT6 0x1f6
|
||||
#define KEY_BRL_DOT7 0x1f7
|
||||
#define KEY_BRL_DOT8 0x1f8
|
||||
|
||||
/* We avoid low common keys in module aliases so they don't get huge. */
|
||||
#define KEY_MIN_INTERESTING KEY_MUTE
|
||||
#define KEY_MAX 0x1ff
|
||||
@@ -929,7 +938,7 @@ struct input_dev {
|
||||
|
||||
struct input_handle *grab;
|
||||
|
||||
struct semaphore sem; /* serializes open and close operations */
|
||||
struct mutex mutex; /* serializes open and close operations */
|
||||
unsigned int users;
|
||||
|
||||
struct class_device cdev;
|
||||
@@ -995,11 +1004,6 @@ static inline void init_input_dev(struct input_dev *dev)
|
||||
|
||||
struct input_dev *input_allocate_device(void);
|
||||
|
||||
static inline void input_free_device(struct input_dev *dev)
|
||||
{
|
||||
kfree(dev);
|
||||
}
|
||||
|
||||
static inline struct input_dev *input_get_device(struct input_dev *dev)
|
||||
{
|
||||
return to_input_dev(class_device_get(&dev->cdev));
|
||||
@@ -1010,6 +1014,11 @@ static inline void input_put_device(struct input_dev *dev)
|
||||
class_device_put(&dev->cdev);
|
||||
}
|
||||
|
||||
static inline void input_free_device(struct input_dev *dev)
|
||||
{
|
||||
input_put_device(dev);
|
||||
}
|
||||
|
||||
int input_register_device(struct input_dev *);
|
||||
void input_unregister_device(struct input_dev *);
|
||||
|
||||
|
||||
@@ -135,6 +135,8 @@ static inline void chg_vc_kbd_led(struct kbd_struct * kbd, int flag)
|
||||
|
||||
#define U(x) ((x) ^ 0xf000)
|
||||
|
||||
#define BRL_UC_ROW 0x2800
|
||||
|
||||
/* keyboard.c */
|
||||
|
||||
struct console;
|
||||
|
||||
@@ -44,6 +44,7 @@ extern unsigned short plain_map[NR_KEYS];
|
||||
#define KT_ASCII 9
|
||||
#define KT_LOCK 10
|
||||
#define KT_SLOCK 12
|
||||
#define KT_BRL 14
|
||||
|
||||
#define K(t,v) (((t)<<8)|(v))
|
||||
#define KTYP(x) ((x) >> 8)
|
||||
@@ -427,5 +428,17 @@ extern unsigned short plain_map[NR_KEYS];
|
||||
|
||||
#define NR_LOCK 8
|
||||
|
||||
#define K_BRL_BLANK K(KT_BRL, 0)
|
||||
#define K_BRL_DOT1 K(KT_BRL, 1)
|
||||
#define K_BRL_DOT2 K(KT_BRL, 2)
|
||||
#define K_BRL_DOT3 K(KT_BRL, 3)
|
||||
#define K_BRL_DOT4 K(KT_BRL, 4)
|
||||
#define K_BRL_DOT5 K(KT_BRL, 5)
|
||||
#define K_BRL_DOT6 K(KT_BRL, 6)
|
||||
#define K_BRL_DOT7 K(KT_BRL, 7)
|
||||
#define K_BRL_DOT8 K(KT_BRL, 8)
|
||||
|
||||
#define NR_BRL 9
|
||||
|
||||
#define MAX_DIACR 256
|
||||
#endif
|
||||
|
||||
@@ -28,7 +28,7 @@ struct ps2dev {
|
||||
struct serio *serio;
|
||||
|
||||
/* Ensures that only one command is executing at a time */
|
||||
struct semaphore cmd_sem;
|
||||
struct mutex cmd_mutex;
|
||||
|
||||
/* Used to signal completion from interrupt handler */
|
||||
wait_queue_head_t wait;
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
|
||||
@@ -42,7 +43,7 @@ struct serio {
|
||||
struct serio *parent, *child;
|
||||
|
||||
struct serio_driver *drv; /* accessed from interrupt, must be protected by serio->lock and serio->sem */
|
||||
struct semaphore drv_sem; /* protects serio->drv so attributes can pin driver */
|
||||
struct mutex drv_mutex; /* protects serio->drv so attributes can pin driver */
|
||||
|
||||
struct device dev;
|
||||
unsigned int registered; /* port has been fully registered with driver core */
|
||||
@@ -151,17 +152,17 @@ static inline void serio_continue_rx(struct serio *serio)
|
||||
*/
|
||||
static inline int serio_pin_driver(struct serio *serio)
|
||||
{
|
||||
return down_interruptible(&serio->drv_sem);
|
||||
return mutex_lock_interruptible(&serio->drv_mutex);
|
||||
}
|
||||
|
||||
static inline void serio_pin_driver_uninterruptible(struct serio *serio)
|
||||
{
|
||||
down(&serio->drv_sem);
|
||||
mutex_lock(&serio->drv_mutex);
|
||||
}
|
||||
|
||||
static inline void serio_unpin_driver(struct serio *serio)
|
||||
{
|
||||
up(&serio->drv_sem);
|
||||
mutex_unlock(&serio->drv_mutex);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
|
||||
*
|
||||
*
|
||||
* Changes/Revisions:
|
||||
* 0.2 16/10/2004 (Micah Dowty <micah@navi.cx>)
|
||||
* - added force feedback support
|
||||
@@ -51,7 +51,7 @@ struct uinput_request {
|
||||
|
||||
struct uinput_device {
|
||||
struct input_dev *dev;
|
||||
struct semaphore sem;
|
||||
struct mutex mutex;
|
||||
enum uinput_state state;
|
||||
wait_queue_head_t waitq;
|
||||
unsigned char ready;
|
||||
|
||||
Reference in New Issue
Block a user