View | Details | Raw Unified
Collapse All | Expand All

(-) linux/include/linux/input.h (-51 / +53 lines)
 Lines 12-19    Link Here 
#ifdef __KERNEL__
#ifdef __KERNEL__
#include <linux/time.h>
#include <linux/time.h>
#include <linux/list.h>
#include <linux/list.h>
#include <linux/device.h>
#include <linux/mod_devicetable.h>
#else
#else
#include <sys/time.h>
#include <sys/time.h>
#include <sys/ioctl.h>
#include <sys/ioctl.h>
 Lines 577-591   struct input_absinfo { Link Here 
 * Switch events
 * Switch events
 */
 */
#define SW_0		0x00
#define SW_0			0x00
#define SW_1		0x01
#define SW_1			0x01
#define SW_2		0x02
#define SW_2			0x02
#define SW_3		0x03
#define SW_3			0x03
#define SW_4		0x04
#define SW_4			0x04
#define SW_5		0x05
#define SW_5			0x05
#define SW_6		0x06
#define SW_6			0x06
#define SW_7		0x07
#define SW_7			0x07
#define SW_MAX		0x0f
#define SW_MAX			0x0f
/*
/*
 * Misc events
 * Misc events
 Lines 805-856   struct ff_effect { Link Here 
#define FF_MAX		0x7f
#define FF_MAX		0x7f
struct input_device_id {
	kernel_ulong_t flags;
	struct input_id id;
	kernel_ulong_t evbit[EV_MAX/BITS_PER_LONG+1];
	kernel_ulong_t keybit[KEY_MAX/BITS_PER_LONG+1];
	kernel_ulong_t relbit[REL_MAX/BITS_PER_LONG+1];
	kernel_ulong_t absbit[ABS_MAX/BITS_PER_LONG+1];
	kernel_ulong_t mscbit[MSC_MAX/BITS_PER_LONG+1];
	kernel_ulong_t ledbit[LED_MAX/BITS_PER_LONG+1];
	kernel_ulong_t sndbit[SND_MAX/BITS_PER_LONG+1];
	kernel_ulong_t ffbit[FF_MAX/BITS_PER_LONG+1];
	kernel_ulong_t swbit[SW_MAX/BITS_PER_LONG+1];
	kernel_ulong_t driver_info;
};
/*
 * Structure for hotplug & device<->driver matching.
 */
#define INPUT_DEVICE_ID_MATCH_BUS	1
#define INPUT_DEVICE_ID_MATCH_VENDOR	2
#define INPUT_DEVICE_ID_MATCH_PRODUCT	4
#define INPUT_DEVICE_ID_MATCH_VERSION	8
#define INPUT_DEVICE_ID_MATCH_EVBIT	0x010
#define INPUT_DEVICE_ID_MATCH_KEYBIT	0x020
#define INPUT_DEVICE_ID_MATCH_RELBIT	0x040
#define INPUT_DEVICE_ID_MATCH_ABSBIT	0x080
#define INPUT_DEVICE_ID_MATCH_MSCIT	0x100
#define INPUT_DEVICE_ID_MATCH_LEDBIT	0x200
#define INPUT_DEVICE_ID_MATCH_SNDBIT	0x400
#define INPUT_DEVICE_ID_MATCH_FFBIT	0x800
#define INPUT_DEVICE_ID_MATCH_SWBIT	0x1000
#ifdef __KERNEL__
#ifdef __KERNEL__
/*
/*
 * In-kernel definitions.
 * In-kernel definitions.
 */
 */
#include <linux/device.h>
#include <linux/fs.h>
#include <linux/fs.h>
#include <linux/timer.h>
#include <linux/timer.h>
#include <linux/mod_devicetable.h>
#define NBITS(x) (((x)/BITS_PER_LONG)+1)
#define NBITS(x) (((x)/BITS_PER_LONG)+1)
#define BIT(x)	(1UL<<((x)%BITS_PER_LONG))
#define BIT(x)	(1UL<<((x)%BITS_PER_LONG))
 Lines 951-959   struct input_dev { Link Here 
};
};
#define to_input_dev(d) container_of(d, struct input_dev, cdev)
#define to_input_dev(d) container_of(d, struct input_dev, cdev)
#define INPUT_DEVICE_ID_MATCH_DEVICE\
/*
 * Verify that we are in sync with input_device_id mod_devicetable.h #defines
 */
#if EV_MAX != INPUT_DEVICE_ID_EV_MAX
#error "EV_MAX and INPUT_DEVICE_ID_EV_MAX do not match"
#endif
#if KEY_MAX != INPUT_DEVICE_ID_KEY_MAX
#error "KEY_MAX and INPUT_DEVICE_ID_KEY_MAX do not match"
#endif
#if REL_MAX != INPUT_DEVICE_ID_REL_MAX
#error "REL_MAX and INPUT_DEVICE_ID_REL_MAX do not match"
#endif
#if ABS_MAX != INPUT_DEVICE_ID_ABS_MAX
#error "ABS_MAX and INPUT_DEVICE_ID_ABS_MAX do not match"
#endif
#if MSC_MAX != INPUT_DEVICE_ID_MSC_MAX
#error "MSC_MAX and INPUT_DEVICE_ID_MSC_MAX do not match"
#endif
#if LED_MAX != INPUT_DEVICE_ID_LED_MAX
#error "LED_MAX and INPUT_DEVICE_ID_LED_MAX do not match"
#endif
#if SND_MAX != INPUT_DEVICE_ID_SND_MAX
#error "SND_MAX and INPUT_DEVICE_ID_SND_MAX do not match"
#endif
#if FF_MAX != INPUT_DEVICE_ID_FF_MAX
#error "FF_MAX and INPUT_DEVICE_ID_FF_MAX do not match"
#endif
#if SW_MAX != INPUT_DEVICE_ID_SW_MAX
#error "SW_MAX and INPUT_DEVICE_ID_SW_MAX do not match"
#endif
#define INPUT_DEVICE_ID_MATCH_DEVICE \
	(INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT)
	(INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT)
#define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION\
#define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION \
	(INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION)
	(INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION)
struct input_handle;
struct input_handle;
(-) linux/include/linux/mod_devicetable.h (+48 lines)
 Lines 249-252   struct i2c_device_id { Link Here 
	__u16 id;
	__u16 id;
};
};
/* Input */
#define INPUT_DEVICE_ID_EV_MAX		0x1f
#define INPUT_DEVICE_ID_KEY_MAX		0x1ff
#define INPUT_DEVICE_ID_REL_MAX		0x0f
#define INPUT_DEVICE_ID_ABS_MAX		0x3f
#define INPUT_DEVICE_ID_MSC_MAX		0x07
#define INPUT_DEVICE_ID_LED_MAX		0x0f
#define INPUT_DEVICE_ID_SND_MAX		0x07
#define INPUT_DEVICE_ID_FF_MAX		0x7f
#define INPUT_DEVICE_ID_SW_MAX		0x0f
#define INPUT_DEVICE_ID_MATCH_BUS	1
#define INPUT_DEVICE_ID_MATCH_VENDOR	2
#define INPUT_DEVICE_ID_MATCH_PRODUCT	4
#define INPUT_DEVICE_ID_MATCH_VERSION	8
#define INPUT_DEVICE_ID_MATCH_EVBIT	0x0010
#define INPUT_DEVICE_ID_MATCH_KEYBIT	0x0020
#define INPUT_DEVICE_ID_MATCH_RELBIT	0x0040
#define INPUT_DEVICE_ID_MATCH_ABSBIT	0x0080
#define INPUT_DEVICE_ID_MATCH_MSCIT	0x0100
#define INPUT_DEVICE_ID_MATCH_LEDBIT	0x0200
#define INPUT_DEVICE_ID_MATCH_SNDBIT	0x0400
#define INPUT_DEVICE_ID_MATCH_FFBIT	0x0800
#define INPUT_DEVICE_ID_MATCH_SWBIT	0x1000
struct input_device_id {
	kernel_ulong_t flags;
	__u16 bustype;
	__u16 vendor;
	__u16 product;
	__u16 version;
	kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1];
	kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1];
	kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1];
	kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1];
	kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1];
	kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1];
	kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1];
	kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1];
	kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1];
	kernel_ulong_t driver_info;
};
#endif /* LINUX_MOD_DEVICETABLE_H */
#endif /* LINUX_MOD_DEVICETABLE_H */
(-) linux/scripts/mod/file2alias.c (-19 / +17 lines)
 Lines 371-380   static void do_input(char *alias, Link Here 
		     kernel_ulong_t *arr, unsigned int min, unsigned int max)
		     kernel_ulong_t *arr, unsigned int min, unsigned int max)
{
{
	unsigned int i;
	unsigned int i;
	for (i = min; i < max; i++) {
		if (arr[i/BITS_PER_LONG] & (1 << (i%BITS_PER_LONG)))
	for (i = min; i < max; i++)
			sprintf(alias+strlen(alias), "%X,*", i);
		if (arr[i / BITS_PER_LONG] & (1 << (i%BITS_PER_LONG)))
	}
			sprintf(alias + strlen(alias), "%X,*", i);
}
}
/* input:b0v0p0e0-eXkXrXaXmXlXsXfXwX where X is comma-separated %02X. */
/* input:b0v0p0e0-eXkXrXaXmXlXsXfXwX where X is comma-separated %02X. */
 Lines 383-421   static int do_input_entry(const char *fi Link Here 
{
{
	sprintf(alias, "input:");
	sprintf(alias, "input:");
	ADD(alias, "b", id->flags&INPUT_DEVICE_ID_MATCH_BUS, id->id.bustype);
	ADD(alias, "b", id->flags & INPUT_DEVICE_ID_MATCH_BUS, id->bustype);
	ADD(alias, "v", id->flags&INPUT_DEVICE_ID_MATCH_VENDOR, id->id.vendor);
	ADD(alias, "v", id->flags & INPUT_DEVICE_ID_MATCH_VENDOR, id->vendor);
	ADD(alias, "p", id->flags&INPUT_DEVICE_ID_MATCH_PRODUCT,
	ADD(alias, "p", id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT, id->product);
	    id->id.product);
	ADD(alias, "e", id->flags & INPUT_DEVICE_ID_MATCH_VERSION, id->version);
	ADD(alias, "e", id->flags&INPUT_DEVICE_ID_MATCH_VERSION,
	    id->id.version);
	sprintf(alias + strlen(alias), "-e*");
	sprintf(alias + strlen(alias), "-e*");
	if (id->flags&INPUT_DEVICE_ID_MATCH_EVBIT)
	if (id->flags & INPUT_DEVICE_ID_MATCH_EVBIT)
		do_input(alias, id->evbit, 0, EV_MAX);
		do_input(alias, id->evbit, 0, EV_MAX);
	sprintf(alias + strlen(alias), "k*");
	sprintf(alias + strlen(alias), "k*");
	if (id->flags&INPUT_DEVICE_ID_MATCH_KEYBIT)
	if (id->flags & INPUT_DEVICE_ID_MATCH_KEYBIT)
		do_input(alias, id->keybit, KEY_MIN_INTERESTING, KEY_MAX);
		do_input(alias, id->keybit, KEY_MIN_INTERESTING, KEY_MAX);
	sprintf(alias + strlen(alias), "r*");
	sprintf(alias + strlen(alias), "r*");
	if (id->flags&INPUT_DEVICE_ID_MATCH_RELBIT)
	if (id->flags & INPUT_DEVICE_ID_MATCH_RELBIT)
		do_input(alias, id->relbit, 0, REL_MAX);
		do_input(alias, id->relbit, 0, REL_MAX);
	sprintf(alias + strlen(alias), "a*");
	sprintf(alias + strlen(alias), "a*");
	if (id->flags&INPUT_DEVICE_ID_MATCH_ABSBIT)
	if (id->flags & INPUT_DEVICE_ID_MATCH_ABSBIT)
		do_input(alias, id->absbit, 0, ABS_MAX);
		do_input(alias, id->absbit, 0, ABS_MAX);
	sprintf(alias + strlen(alias), "m*");
	sprintf(alias + strlen(alias), "m*");
	if (id->flags&INPUT_DEVICE_ID_MATCH_MSCIT)
	if (id->flags & INPUT_DEVICE_ID_MATCH_MSCIT)
		do_input(alias, id->mscbit, 0, MSC_MAX);
		do_input(alias, id->mscbit, 0, MSC_MAX);
	sprintf(alias + strlen(alias), "l*");
	sprintf(alias + strlen(alias), "l*");
	if (id->flags&INPUT_DEVICE_ID_MATCH_LEDBIT)
	if (id->flags & INPUT_DEVICE_ID_MATCH_LEDBIT)
		do_input(alias, id->ledbit, 0, LED_MAX);
		do_input(alias, id->ledbit, 0, LED_MAX);
	sprintf(alias + strlen(alias), "s*");
	sprintf(alias + strlen(alias), "s*");
	if (id->flags&INPUT_DEVICE_ID_MATCH_SNDBIT)
	if (id->flags & INPUT_DEVICE_ID_MATCH_SNDBIT)
		do_input(alias, id->sndbit, 0, SND_MAX);
		do_input(alias, id->sndbit, 0, SND_MAX);
	sprintf(alias + strlen(alias), "f*");
	sprintf(alias + strlen(alias), "f*");
	if (id->flags&INPUT_DEVICE_ID_MATCH_FFBIT)
	if (id->flags & INPUT_DEVICE_ID_MATCH_FFBIT)
		do_input(alias, id->ffbit, 0, FF_MAX);
		do_input(alias, id->ffbit, 0, FF_MAX);
	sprintf(alias + strlen(alias), "w*");
	sprintf(alias + strlen(alias), "w*");
	if (id->flags&INPUT_DEVICE_ID_MATCH_SWBIT)
	if (id->flags & INPUT_DEVICE_ID_MATCH_SWBIT)
		do_input(alias, id->swbit, 0, SW_MAX);
		do_input(alias, id->swbit, 0, SW_MAX);
	return 1;
	return 1;
}
}
(-) linux/drivers/input/input.c (-4 / +4 lines)
 Lines 286-304   static struct input_device_id *input_mat Link Here 
	for (; id->flags || id->driver_info; id++) {
	for (; id->flags || id->driver_info; id++) {
		if (id->flags & INPUT_DEVICE_ID_MATCH_BUS)
		if (id->flags & INPUT_DEVICE_ID_MATCH_BUS)
			if (id->id.bustype != dev->id.bustype)
			if (id->bustype != dev->id.bustype)
				continue;
				continue;
		if (id->flags & INPUT_DEVICE_ID_MATCH_VENDOR)
		if (id->flags & INPUT_DEVICE_ID_MATCH_VENDOR)
			if (id->id.vendor != dev->id.vendor)
			if (id->vendor != dev->id.vendor)
				continue;
				continue;
		if (id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT)
		if (id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT)
			if (id->id.product != dev->id.product)
			if (id->product != dev->id.product)
				continue;
				continue;
		if (id->flags & INPUT_DEVICE_ID_MATCH_VERSION)
		if (id->flags & INPUT_DEVICE_ID_MATCH_VERSION)
			if (id->id.version != dev->id.version)
			if (id->version != dev->id.version)
				continue;
				continue;
		MATCH_BIT(evbit,  EV_MAX);
		MATCH_BIT(evbit,  EV_MAX);