Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
gsplhtlxg
clone-Linux
提交
ddc5d341
C
clone-Linux
项目概览
gsplhtlxg
/
clone-Linux
通知
2
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
clone-Linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ddc5d341
编写于
4月 26, 2006
作者:
D
Dmitry Torokhov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Input: move input_device_id to mod_devicetable.h
Signed-off-by:
N
Dmitry Torokhov
<
dtor@mail.ru
>
上级
77426d72
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
122 addition
and
74 deletion
+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
未找到文件。
drivers/input/input.c
浏览文件 @
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
浏览文件 @
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>
...
...
@@ -577,15 +575,15 @@ struct input_absinfo {
* Switch events
*/
#define SW_0 0x00
#define SW_1 0x01
#define SW_2 0x02
#define SW_3 0x03
#define SW_4 0x04
#define SW_5 0x05
#define SW_6 0x06
#define SW_7 0x07
#define SW_MAX 0x0f
#define SW_0
0x00
#define SW_1
0x01
#define SW_2
0x02
#define SW_3
0x03
#define SW_4
0x04
#define SW_5
0x05
#define SW_6
0x06
#define SW_7
0x07
#define SW_MAX
0x0f
/*
* Misc events
...
...
@@ -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
浏览文件 @
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
浏览文件 @
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
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录