Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/dtor/input
* 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/dtor/input: (65 commits) Input: gpio_keys - add support for switches (EV_SW) Input: cobalt_btns - convert to use polldev library Input: add skeleton for simple polled devices Input: update some documentation Input: wistron - fix typo in keymap for Acer TM610 Input: add input_set_capability() helper Input: i8042 - add Fujitsu touchscreen/touchpad PNP IDs Input: i8042 - add Panasonic CF-29 to nomux list Input: lifebook - split into 2 devices Input: lifebook - add signature of Panasonic CF-29 Input: lifebook - activate 6-byte protocol on select models Input: lifebook - work properly on Panasonic CF-18 Input: cobalt buttons - separate device and driver registration Input: ati_remote - make button repeat sensitivity configurable Input: pxa27x - do not use deprecated SA_INTERRUPT flag Input: ucb1400 - make delays configurable Input: misc devices - switch to using input_dev->dev.parent Input: joysticks - switch to using input_dev->dev.parent Input: touchscreens - switch to using input_dev->dev.parent Input: mice - switch to using input_dev->dev.parent ... Fixed up conflicts with core device model removal of "struct subsystem" manually. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
@@ -3,10 +3,11 @@
|
||||
|
||||
struct gpio_keys_button {
|
||||
/* Configuration parameters */
|
||||
int keycode;
|
||||
int code; /* input event code (KEY_*, SW_*) */
|
||||
int gpio;
|
||||
int active_low;
|
||||
char *desc;
|
||||
int type; /* input event type (EV_KEY, EV_SW) */
|
||||
};
|
||||
|
||||
struct gpio_keys_platform_data {
|
||||
|
||||
@@ -71,6 +71,7 @@ typedef struct {
|
||||
struct semaphore *semaphore; /* Semaphore to sleep on. */
|
||||
} act;
|
||||
} hp_sdc_transaction;
|
||||
int __hp_sdc_enqueue_transaction(hp_sdc_transaction *this);
|
||||
int hp_sdc_enqueue_transaction(hp_sdc_transaction *this);
|
||||
int hp_sdc_dequeue_transaction(hp_sdc_transaction *this);
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
#ifndef _INPUT_POLLDEV_H
|
||||
#define _INPUT_POLLDEV_H
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Dmitry Torokhov
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <linux/input.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
/**
|
||||
* struct input_polled_dev - simple polled input device
|
||||
* @private: private driver data
|
||||
* @flush: driver-supplied method that flushes device's state upon
|
||||
* opening (optional)
|
||||
* @poll: driver-supplied method that polls the device and posts
|
||||
* input events (mandatory).
|
||||
* @poll_interval: specifies how often the poll() method shoudl be called.
|
||||
* @input: input device structire associated with the polled device.
|
||||
* Must be properly initialized by the driver (id, name, phys, bits).
|
||||
*
|
||||
* Polled input device provides a skeleton for supporting simple input
|
||||
* devices that do not raise interrupts but have to be periodically
|
||||
* scanned or polled to detect changes in their state.
|
||||
*/
|
||||
struct input_polled_dev {
|
||||
void *private;
|
||||
|
||||
void (*flush)(struct input_polled_dev *dev);
|
||||
void (*poll)(struct input_polled_dev *dev);
|
||||
unsigned int poll_interval; /* msec */
|
||||
|
||||
struct input_dev *input;
|
||||
struct delayed_work work;
|
||||
};
|
||||
|
||||
struct input_polled_dev *input_allocate_polled_device(void);
|
||||
void input_free_polled_device(struct input_polled_dev *dev);
|
||||
int input_register_polled_device(struct input_polled_dev *dev);
|
||||
void input_unregister_polled_device(struct input_polled_dev *dev);
|
||||
|
||||
#endif
|
||||
+23
-29
@@ -506,6 +506,7 @@ struct input_absinfo {
|
||||
#define KEY_VOICEMAIL 0x1ac
|
||||
#define KEY_ADDRESSBOOK 0x1ad
|
||||
#define KEY_MESSENGER 0x1ae
|
||||
#define KEY_DISPLAYTOGGLE 0x1af /* Turn display (LCD) on and off */
|
||||
|
||||
#define KEY_DEL_EOL 0x1c0
|
||||
#define KEY_DEL_EOS 0x1c1
|
||||
@@ -914,33 +915,6 @@ struct ff_effect {
|
||||
#define BIT(x) (1UL<<((x)%BITS_PER_LONG))
|
||||
#define LONG(x) ((x)/BITS_PER_LONG)
|
||||
|
||||
#define INPUT_KEYCODE(dev, scancode) ((dev->keycodesize == 1) ? ((u8*)dev->keycode)[scancode] : \
|
||||
((dev->keycodesize == 2) ? ((u16*)dev->keycode)[scancode] : (((u32*)dev->keycode)[scancode])))
|
||||
|
||||
#define SET_INPUT_KEYCODE(dev, scancode, val) \
|
||||
({ unsigned __old; \
|
||||
switch (dev->keycodesize) { \
|
||||
case 1: { \
|
||||
u8 *k = (u8 *)dev->keycode; \
|
||||
__old = k[scancode]; \
|
||||
k[scancode] = val; \
|
||||
break; \
|
||||
} \
|
||||
case 2: { \
|
||||
u16 *k = (u16 *)dev->keycode; \
|
||||
__old = k[scancode]; \
|
||||
k[scancode] = val; \
|
||||
break; \
|
||||
} \
|
||||
default: { \
|
||||
u32 *k = (u32 *)dev->keycode; \
|
||||
__old = k[scancode]; \
|
||||
k[scancode] = val; \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
__old; })
|
||||
|
||||
struct input_dev {
|
||||
|
||||
void *private;
|
||||
@@ -963,6 +937,8 @@ struct input_dev {
|
||||
unsigned int keycodemax;
|
||||
unsigned int keycodesize;
|
||||
void *keycode;
|
||||
int (*setkeycode)(struct input_dev *dev, int scancode, int keycode);
|
||||
int (*getkeycode)(struct input_dev *dev, int scancode, int *keycode);
|
||||
|
||||
struct ff_device *ff;
|
||||
|
||||
@@ -997,6 +973,9 @@ struct input_dev {
|
||||
unsigned int users;
|
||||
|
||||
struct class_device cdev;
|
||||
union { /* temporarily so while we switching to struct device */
|
||||
struct device *parent;
|
||||
} dev;
|
||||
|
||||
struct list_head h_list;
|
||||
struct list_head node;
|
||||
@@ -1075,7 +1054,7 @@ struct input_handler {
|
||||
void *private;
|
||||
|
||||
void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value);
|
||||
struct input_handle* (*connect)(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id);
|
||||
int (*connect)(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id);
|
||||
void (*disconnect)(struct input_handle *handle);
|
||||
void (*start)(struct input_handle *handle);
|
||||
|
||||
@@ -1105,7 +1084,7 @@ struct input_handle {
|
||||
};
|
||||
|
||||
#define to_dev(n) container_of(n,struct input_dev,node)
|
||||
#define to_handler(n) container_of(n,struct input_handler,node);
|
||||
#define to_handler(n) container_of(n,struct input_handler,node)
|
||||
#define to_handle(n) container_of(n,struct input_handle,d_node)
|
||||
#define to_handle_h(n) container_of(n,struct input_handle,h_node)
|
||||
|
||||
@@ -1122,12 +1101,25 @@ static inline void input_put_device(struct input_dev *dev)
|
||||
class_device_put(&dev->cdev);
|
||||
}
|
||||
|
||||
static inline void *input_get_drvdata(struct input_dev *dev)
|
||||
{
|
||||
return dev->private;
|
||||
}
|
||||
|
||||
static inline void input_set_drvdata(struct input_dev *dev, void *data)
|
||||
{
|
||||
dev->private = data;
|
||||
}
|
||||
|
||||
int input_register_device(struct input_dev *);
|
||||
void input_unregister_device(struct input_dev *);
|
||||
|
||||
int input_register_handler(struct input_handler *);
|
||||
void input_unregister_handler(struct input_handler *);
|
||||
|
||||
int input_register_handle(struct input_handle *);
|
||||
void input_unregister_handle(struct input_handle *);
|
||||
|
||||
int input_grab_device(struct input_handle *);
|
||||
void input_release_device(struct input_handle *);
|
||||
|
||||
@@ -1169,6 +1161,8 @@ static inline void input_sync(struct input_dev *dev)
|
||||
input_event(dev, EV_SYN, SYN_REPORT, 0);
|
||||
}
|
||||
|
||||
void input_set_capability(struct input_dev *dev, unsigned int type, unsigned int code);
|
||||
|
||||
static inline void input_set_abs_params(struct input_dev *dev, int axis, int min, int max, int fuzz, int flat)
|
||||
{
|
||||
dev->absmin[axis] = min;
|
||||
|
||||
Reference in New Issue
Block a user