Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
ddc5d341
Commit
ddc5d341
authored
Apr 26, 2006
by
Dmitry Torokhov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Input: move input_device_id to mod_devicetable.h
Signed-off-by:
Dmitry Torokhov
<
dtor@mail.ru
>
parent
77426d72
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
122 additions
and
74 deletions
+122
-74
drivers/input/input.c
drivers/input/input.c
+4
-4
include/linux/input.h
include/linux/input.h
+53
-51
include/linux/mod_devicetable.h
include/linux/mod_devicetable.h
+48
-0
scripts/mod/file2alias.c
scripts/mod/file2alias.c
+17
-19
No files found.
drivers/input/input.c
View file @
ddc5d341
...
...
@@ -286,19 +286,19 @@ static struct input_device_id *input_match_device(struct input_device_id *id, st
for
(;
id
->
flags
||
id
->
driver_info
;
id
++
)
{
if
(
id
->
flags
&
INPUT_DEVICE_ID_MATCH_BUS
)
if
(
id
->
id
.
bustype
!=
dev
->
id
.
bustype
)
if
(
id
->
bustype
!=
dev
->
id
.
bustype
)
continue
;
if
(
id
->
flags
&
INPUT_DEVICE_ID_MATCH_VENDOR
)
if
(
id
->
id
.
vendor
!=
dev
->
id
.
vendor
)
if
(
id
->
vendor
!=
dev
->
id
.
vendor
)
continue
;
if
(
id
->
flags
&
INPUT_DEVICE_ID_MATCH_PRODUCT
)
if
(
id
->
id
.
product
!=
dev
->
id
.
product
)
if
(
id
->
product
!=
dev
->
id
.
product
)
continue
;
if
(
id
->
flags
&
INPUT_DEVICE_ID_MATCH_VERSION
)
if
(
id
->
id
.
version
!=
dev
->
id
.
version
)
if
(
id
->
version
!=
dev
->
id
.
version
)
continue
;
MATCH_BIT
(
evbit
,
EV_MAX
);
...
...
include/linux/input.h
View file @
ddc5d341
...
...
@@ -12,8 +12,6 @@
#ifdef __KERNEL__
#include <linux/time.h>
#include <linux/list.h>
#include <linux/device.h>
#include <linux/mod_devicetable.h>
#else
#include <sys/time.h>
#include <sys/ioctl.h>
...
...
@@ -805,52 +803,16 @@ struct ff_effect {
#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__
/*
* In-kernel definitions.
*/
#include <linux/device.h>
#include <linux/fs.h>
#include <linux/timer.h>
#include <linux/mod_devicetable.h>
#define NBITS(x) (((x)/BITS_PER_LONG)+1)
#define BIT(x) (1UL<<((x)%BITS_PER_LONG))
...
...
@@ -951,9 +913,49 @@ struct input_dev {
};
#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)
#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)
struct
input_handle
;
...
...
include/linux/mod_devicetable.h
View file @
ddc5d341
...
...
@@ -249,4 +249,52 @@ struct i2c_device_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 */
scripts/mod/file2alias.c
View file @
ddc5d341
...
...
@@ -374,10 +374,10 @@ static void do_input(char *alias,
kernel_ulong_t
*
arr
,
unsigned
int
min
,
unsigned
int
max
)
{
unsigned
int
i
;
for
(
i
=
min
;
i
<
max
;
i
++
)
{
if
(
arr
[
i
/
BITS_PER_LONG
]
&
(
1
<<
(
i
%
BITS_PER_LONG
))
)
sprintf
(
alias
+
strlen
(
alias
),
"%X,*"
,
i
);
}
for
(
i
=
min
;
i
<
max
;
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. */
...
...
@@ -386,39 +386,37 @@ static int do_input_entry(const char *filename, struct input_device_id *id,
{
sprintf
(
alias
,
"input:"
);
ADD
(
alias
,
"b"
,
id
->
flags
&
INPUT_DEVICE_ID_MATCH_BUS
,
id
->
id
.
bustype
);
ADD
(
alias
,
"v"
,
id
->
flags
&
INPUT_DEVICE_ID_MATCH_VENDOR
,
id
->
id
.
vendor
);
ADD
(
alias
,
"p"
,
id
->
flags
&
INPUT_DEVICE_ID_MATCH_PRODUCT
,
id
->
id
.
product
);
ADD
(
alias
,
"e"
,
id
->
flags
&
INPUT_DEVICE_ID_MATCH_VERSION
,
id
->
id
.
version
);
ADD
(
alias
,
"b"
,
id
->
flags
&
INPUT_DEVICE_ID_MATCH_BUS
,
id
->
bustype
);
ADD
(
alias
,
"v"
,
id
->
flags
&
INPUT_DEVICE_ID_MATCH_VENDOR
,
id
->
vendor
);
ADD
(
alias
,
"p"
,
id
->
flags
&
INPUT_DEVICE_ID_MATCH_PRODUCT
,
id
->
product
);
ADD
(
alias
,
"e"
,
id
->
flags
&
INPUT_DEVICE_ID_MATCH_VERSION
,
id
->
version
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
return
1
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment