Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
1e0afb28
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1e0afb28
编写于
6月 26, 2006
作者:
D
Dmitry Torokhov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Input: fix formatting to better follow CodingStyle
Signed-off-by:
N
Dmitry Torokhov
<
dtor@mail.ru
>
上级
f60d2b11
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
119 addition
and
61 deletion
+119
-61
drivers/input/evdev.c
drivers/input/evdev.c
+8
-2
drivers/input/input.c
drivers/input/input.c
+25
-12
drivers/input/joydev.c
drivers/input/joydev.c
+45
-24
drivers/input/mousedev.c
drivers/input/mousedev.c
+27
-15
drivers/input/tsdev.c
drivers/input/tsdev.c
+14
-8
未找到文件。
drivers/input/evdev.c
浏览文件 @
1e0afb28
...
...
@@ -78,14 +78,19 @@ static int evdev_fasync(int fd, struct file *file, int on)
{
int
retval
;
struct
evdev_list
*
list
=
file
->
private_data
;
retval
=
fasync_helper
(
fd
,
file
,
on
,
&
list
->
fasync
);
return
retval
<
0
?
retval
:
0
;
}
static
int
evdev_flush
(
struct
file
*
file
,
fl_owner_t
id
)
static
int
evdev_flush
(
struct
file
*
file
,
fl_owner_t
id
)
{
struct
evdev_list
*
list
=
file
->
private_data
;
if
(
!
list
->
evdev
->
exist
)
return
-
ENODEV
;
if
(
!
list
->
evdev
->
exist
)
return
-
ENODEV
;
return
input_flush_device
(
&
list
->
evdev
->
handle
,
file
);
}
...
...
@@ -300,6 +305,7 @@ static ssize_t evdev_read(struct file * file, char __user * buffer, size_t count
static
unsigned
int
evdev_poll
(
struct
file
*
file
,
poll_table
*
wait
)
{
struct
evdev_list
*
list
=
file
->
private_data
;
poll_wait
(
file
,
&
list
->
evdev
->
wait
,
wait
);
return
((
list
->
head
==
list
->
tail
)
?
0
:
(
POLLIN
|
POLLRDNORM
))
|
(
list
->
evdev
->
exist
?
0
:
(
POLLHUP
|
POLLERR
));
...
...
drivers/input/input.c
浏览文件 @
1e0afb28
...
...
@@ -64,11 +64,13 @@ void input_event(struct input_dev *dev, unsigned int type, unsigned int code, in
case
EV_SYN
:
switch
(
code
)
{
case
SYN_CONFIG
:
if
(
dev
->
event
)
dev
->
event
(
dev
,
type
,
code
,
value
);
if
(
dev
->
event
)
dev
->
event
(
dev
,
type
,
code
,
value
);
break
;
case
SYN_REPORT
:
if
(
dev
->
sync
)
return
;
if
(
dev
->
sync
)
return
;
dev
->
sync
=
1
;
break
;
}
...
...
@@ -137,7 +139,8 @@ void input_event(struct input_dev *dev, unsigned int type, unsigned int code, in
if
(
code
>
MSC_MAX
||
!
test_bit
(
code
,
dev
->
mscbit
))
return
;
if
(
dev
->
event
)
dev
->
event
(
dev
,
type
,
code
,
value
);
if
(
dev
->
event
)
dev
->
event
(
dev
,
type
,
code
,
value
);
break
;
...
...
@@ -147,7 +150,9 @@ void input_event(struct input_dev *dev, unsigned int type, unsigned int code, in
return
;
change_bit
(
code
,
dev
->
led
);
if
(
dev
->
event
)
dev
->
event
(
dev
,
type
,
code
,
value
);
if
(
dev
->
event
)
dev
->
event
(
dev
,
type
,
code
,
value
);
break
;
...
...
@@ -159,21 +164,25 @@ void input_event(struct input_dev *dev, unsigned int type, unsigned int code, in
if
(
!!
test_bit
(
code
,
dev
->
snd
)
!=
!!
value
)
change_bit
(
code
,
dev
->
snd
);
if
(
dev
->
event
)
dev
->
event
(
dev
,
type
,
code
,
value
);
if
(
dev
->
event
)
dev
->
event
(
dev
,
type
,
code
,
value
);
break
;
case
EV_REP
:
if
(
code
>
REP_MAX
||
value
<
0
||
dev
->
rep
[
code
]
==
value
)
return
;
if
(
code
>
REP_MAX
||
value
<
0
||
dev
->
rep
[
code
]
==
value
)
return
;
dev
->
rep
[
code
]
=
value
;
if
(
dev
->
event
)
dev
->
event
(
dev
,
type
,
code
,
value
);
if
(
dev
->
event
)
dev
->
event
(
dev
,
type
,
code
,
value
);
break
;
case
EV_FF
:
if
(
dev
->
event
)
dev
->
event
(
dev
,
type
,
code
,
value
);
if
(
dev
->
event
)
dev
->
event
(
dev
,
type
,
code
,
value
);
break
;
}
...
...
@@ -336,9 +345,11 @@ static inline void input_wakeup_procfs_readers(void)
static
unsigned
int
input_proc_devices_poll
(
struct
file
*
file
,
poll_table
*
wait
)
{
int
state
=
input_devices_state
;
poll_wait
(
file
,
&
input_devices_poll_wait
,
wait
);
if
(
state
!=
input_devices_state
)
return
POLLIN
|
POLLRDNORM
;
return
0
;
}
...
...
@@ -972,9 +983,10 @@ int input_register_device(struct input_dev *dev)
void
input_unregister_device
(
struct
input_dev
*
dev
)
{
struct
list_head
*
node
,
*
next
;
struct
list_head
*
node
,
*
next
;
if
(
!
dev
)
return
;
if
(
!
dev
)
return
;
del_timer_sync
(
&
dev
->
timer
);
...
...
@@ -1005,7 +1017,8 @@ void input_register_handler(struct input_handler *handler)
struct
input_handle
*
handle
;
struct
input_device_id
*
id
;
if
(
!
handler
)
return
;
if
(
!
handler
)
return
;
INIT_LIST_HEAD
(
&
handler
->
h_list
);
...
...
@@ -1025,7 +1038,7 @@ void input_register_handler(struct input_handler *handler)
void
input_unregister_handler
(
struct
input_handler
*
handler
)
{
struct
list_head
*
node
,
*
next
;
struct
list_head
*
node
,
*
next
;
list_for_each_safe
(
node
,
next
,
&
handler
->
h_list
)
{
struct
input_handle
*
handle
=
to_handle_h
(
node
);
...
...
drivers/input/joydev.c
浏览文件 @
1e0afb28
...
...
@@ -81,10 +81,7 @@ static int joydev_correct(int value, struct js_corr *corr)
return
0
;
}
if
(
value
<
-
32767
)
return
-
32767
;
if
(
value
>
32767
)
return
32767
;
return
value
;
return
value
<
-
32767
?
-
32767
:
(
value
>
32767
?
32767
:
value
);
}
static
void
joydev_event
(
struct
input_handle
*
handle
,
unsigned
int
type
,
unsigned
int
code
,
int
value
)
...
...
@@ -96,7 +93,8 @@ static void joydev_event(struct input_handle *handle, unsigned int type, unsigne
switch
(
type
)
{
case
EV_KEY
:
if
(
code
<
BTN_MISC
||
value
==
2
)
return
;
if
(
code
<
BTN_MISC
||
value
==
2
)
return
;
event
.
type
=
JS_EVENT_BUTTON
;
event
.
number
=
joydev
->
keymap
[
code
-
BTN_MISC
];
event
.
value
=
value
;
...
...
@@ -106,7 +104,8 @@ static void joydev_event(struct input_handle *handle, unsigned int type, unsigne
event
.
type
=
JS_EVENT_AXIS
;
event
.
number
=
joydev
->
absmap
[
code
];
event
.
value
=
joydev_correct
(
value
,
joydev
->
corr
+
event
.
number
);
if
(
event
.
value
==
joydev
->
abs
[
event
.
number
])
return
;
if
(
event
.
value
==
joydev
->
abs
[
event
.
number
])
return
;
joydev
->
abs
[
event
.
number
]
=
event
.
value
;
break
;
...
...
@@ -134,7 +133,9 @@ static int joydev_fasync(int fd, struct file *file, int on)
{
int
retval
;
struct
joydev_list
*
list
=
file
->
private_data
;
retval
=
fasync_helper
(
fd
,
file
,
on
,
&
list
->
fasync
);
return
retval
<
0
?
retval
:
0
;
}
...
...
@@ -222,12 +223,12 @@ static ssize_t joydev_read(struct file *file, char __user *buf, size_t count, lo
return
sizeof
(
struct
JS_DATA_TYPE
);
}
if
(
list
->
startup
==
joydev
->
nabs
+
joydev
->
nkey
&&
list
->
head
==
list
->
tail
&&
(
file
->
f_flags
&
O_NONBLOCK
))
return
-
EAGAIN
;
if
(
list
->
startup
==
joydev
->
nabs
+
joydev
->
nkey
&&
list
->
head
==
list
->
tail
&&
(
file
->
f_flags
&
O_NONBLOCK
))
return
-
EAGAIN
;
retval
=
wait_event_interruptible
(
list
->
joydev
->
wait
,
!
list
->
joydev
->
exist
||
!
list
->
joydev
->
exist
||
list
->
startup
<
joydev
->
nabs
+
joydev
->
nkey
||
list
->
head
!=
list
->
tail
);
...
...
@@ -276,8 +277,9 @@ static ssize_t joydev_read(struct file *file, char __user *buf, size_t count, lo
static
unsigned
int
joydev_poll
(
struct
file
*
file
,
poll_table
*
wait
)
{
struct
joydev_list
*
list
=
file
->
private_data
;
poll_wait
(
file
,
&
list
->
joydev
->
wait
,
wait
);
return
((
list
->
head
!=
list
->
tail
||
list
->
startup
<
list
->
joydev
->
nabs
+
list
->
joydev
->
nkey
)
?
return
((
list
->
head
!=
list
->
tail
||
list
->
startup
<
list
->
joydev
->
nabs
+
list
->
joydev
->
nkey
)
?
(
POLLIN
|
POLLRDNORM
)
:
0
)
|
(
list
->
joydev
->
exist
?
0
:
(
POLLHUP
|
POLLERR
));
}
...
...
@@ -291,20 +293,26 @@ static int joydev_ioctl_common(struct joydev *joydev, unsigned int cmd, void __u
case
JS_SET_CAL
:
return
copy_from_user
(
&
joydev
->
glue
.
JS_CORR
,
argp
,
sizeof
(
joydev
->
glue
.
JS_CORR
))
?
-
EFAULT
:
0
;
case
JS_GET_CAL
:
return
copy_to_user
(
argp
,
&
joydev
->
glue
.
JS_CORR
,
sizeof
(
joydev
->
glue
.
JS_CORR
))
?
-
EFAULT
:
0
;
case
JS_SET_TIMEOUT
:
return
get_user
(
joydev
->
glue
.
JS_TIMEOUT
,
(
s32
__user
*
)
argp
);
case
JS_GET_TIMEOUT
:
return
put_user
(
joydev
->
glue
.
JS_TIMEOUT
,
(
s32
__user
*
)
argp
);
case
JSIOCGVERSION
:
return
put_user
(
JS_VERSION
,
(
__u32
__user
*
)
argp
);
case
JSIOCGAXES
:
return
put_user
(
joydev
->
nabs
,
(
__u8
__user
*
)
argp
);
case
JSIOCGBUTTONS
:
return
put_user
(
joydev
->
nkey
,
(
__u8
__user
*
)
argp
);
case
JSIOCSCORR
:
if
(
copy_from_user
(
joydev
->
corr
,
argp
,
sizeof
(
joydev
->
corr
[
0
])
*
joydev
->
nabs
))
...
...
@@ -314,38 +322,49 @@ static int joydev_ioctl_common(struct joydev *joydev, unsigned int cmd, void __u
joydev
->
abs
[
i
]
=
joydev_correct
(
dev
->
abs
[
j
],
joydev
->
corr
+
i
);
}
return
0
;
case
JSIOCGCORR
:
return
copy_to_user
(
argp
,
joydev
->
corr
,
sizeof
(
joydev
->
corr
[
0
])
*
joydev
->
nabs
)
?
-
EFAULT
:
0
;
case
JSIOCSAXMAP
:
if
(
copy_from_user
(
joydev
->
abspam
,
argp
,
sizeof
(
__u8
)
*
(
ABS_MAX
+
1
)))
return
-
EFAULT
;
for
(
i
=
0
;
i
<
joydev
->
nabs
;
i
++
)
{
if
(
joydev
->
abspam
[
i
]
>
ABS_MAX
)
return
-
EINVAL
;
if
(
joydev
->
abspam
[
i
]
>
ABS_MAX
)
return
-
EINVAL
;
joydev
->
absmap
[
joydev
->
abspam
[
i
]]
=
i
;
}
return
0
;
case
JSIOCGAXMAP
:
return
copy_to_user
(
argp
,
joydev
->
abspam
,
sizeof
(
__u8
)
*
(
ABS_MAX
+
1
))
?
-
EFAULT
:
0
;
case
JSIOCSBTNMAP
:
if
(
copy_from_user
(
joydev
->
keypam
,
argp
,
sizeof
(
__u16
)
*
(
KEY_MAX
-
BTN_MISC
+
1
)))
return
-
EFAULT
;
for
(
i
=
0
;
i
<
joydev
->
nkey
;
i
++
)
{
if
(
joydev
->
keypam
[
i
]
>
KEY_MAX
||
joydev
->
keypam
[
i
]
<
BTN_MISC
)
return
-
EINVAL
;
if
(
joydev
->
keypam
[
i
]
>
KEY_MAX
||
joydev
->
keypam
[
i
]
<
BTN_MISC
)
return
-
EINVAL
;
joydev
->
keymap
[
joydev
->
keypam
[
i
]
-
BTN_MISC
]
=
i
;
}
return
0
;
case
JSIOCGBTNMAP
:
return
copy_to_user
(
argp
,
joydev
->
keypam
,
sizeof
(
__u16
)
*
(
KEY_MAX
-
BTN_MISC
+
1
))
?
-
EFAULT
:
0
;
default:
if
((
cmd
&
~
(
_IOC_SIZEMASK
<<
_IOC_SIZESHIFT
))
==
JSIOCGNAME
(
0
))
{
int
len
;
if
(
!
dev
->
name
)
return
0
;
if
(
!
dev
->
name
)
return
0
;
len
=
strlen
(
dev
->
name
)
+
1
;
if
(
len
>
_IOC_SIZE
(
cmd
))
len
=
_IOC_SIZE
(
cmd
);
if
(
copy_to_user
(
argp
,
dev
->
name
,
len
))
return
-
EFAULT
;
if
(
len
>
_IOC_SIZE
(
cmd
))
len
=
_IOC_SIZE
(
cmd
);
if
(
copy_to_user
(
argp
,
dev
->
name
,
len
))
return
-
EFAULT
;
return
len
;
}
}
...
...
@@ -362,7 +381,9 @@ static long joydev_compat_ioctl(struct file *file, unsigned int cmd, unsigned lo
struct
JS_DATA_SAVE_TYPE_32
ds32
;
int
err
;
if
(
!
joydev
->
exist
)
return
-
ENODEV
;
if
(
!
joydev
->
exist
)
return
-
ENODEV
;
switch
(
cmd
)
{
case
JS_SET_TIMELIMIT
:
err
=
get_user
(
tmp32
,
(
s32
__user
*
)
arg
);
...
...
@@ -395,8 +416,7 @@ static long joydev_compat_ioctl(struct file *file, unsigned int cmd, unsigned lo
ds32
.
JS_SAVE
=
joydev
->
glue
.
JS_SAVE
;
ds32
.
JS_CORR
=
joydev
->
glue
.
JS_CORR
;
err
=
copy_to_user
(
argp
,
&
ds32
,
sizeof
(
ds32
))
?
-
EFAULT
:
0
;
err
=
copy_to_user
(
argp
,
&
ds32
,
sizeof
(
ds32
))
?
-
EFAULT
:
0
;
break
;
default:
...
...
@@ -412,7 +432,8 @@ static int joydev_ioctl(struct inode *inode, struct file *file, unsigned int cmd
struct
joydev
*
joydev
=
list
->
joydev
;
void
__user
*
argp
=
(
void
__user
*
)
arg
;
if
(
!
joydev
->
exist
)
return
-
ENODEV
;
if
(
!
joydev
->
exist
)
return
-
ENODEV
;
switch
(
cmd
)
{
case
JS_SET_TIMELIMIT
:
...
...
@@ -546,8 +567,8 @@ static struct input_device_id joydev_blacklist[] = {
.
flags
=
INPUT_DEVICE_ID_MATCH_EVBIT
|
INPUT_DEVICE_ID_MATCH_KEYBIT
,
.
evbit
=
{
BIT
(
EV_KEY
)
},
.
keybit
=
{
[
LONG
(
BTN_TOUCH
)]
=
BIT
(
BTN_TOUCH
)
},
},
/* Avoid itouchpads, touchscreens and tablets */
{
}
,
/* Terminating entry */
},
/* Avoid itouchpads, touchscreens and tablets */
{
}
/* Terminating entry */
};
static
struct
input_device_id
joydev_ids
[]
=
{
...
...
@@ -566,7 +587,7 @@ static struct input_device_id joydev_ids[] = {
.
evbit
=
{
BIT
(
EV_ABS
)
},
.
absbit
=
{
BIT
(
ABS_THROTTLE
)
},
},
{
}
,
/* Terminating entry */
{
}
/* Terminating entry */
};
MODULE_DEVICE_TABLE
(
input
,
joydev_ids
);
...
...
@@ -579,7 +600,7 @@ static struct input_handler joydev_handler = {
.
minor
=
JOYDEV_MINOR_BASE
,
.
name
=
"joydev"
,
.
id_table
=
joydev_ids
,
.
blacklist
=
joydev_blacklist
,
.
blacklist
=
joydev_blacklist
,
};
static
int
__init
joydev_init
(
void
)
...
...
drivers/input/mousedev.c
浏览文件 @
1e0afb28
...
...
@@ -123,7 +123,9 @@ static void mousedev_touchpad_event(struct input_dev *dev, struct mousedev *mous
if
(
mousedev
->
touch
)
{
size
=
dev
->
absmax
[
ABS_X
]
-
dev
->
absmin
[
ABS_X
];
if
(
size
==
0
)
size
=
256
*
2
;
if
(
size
==
0
)
size
=
256
*
2
;
switch
(
code
)
{
case
ABS_X
:
fx
(
0
)
=
value
;
...
...
@@ -155,18 +157,24 @@ static void mousedev_abs_event(struct input_dev *dev, struct mousedev *mousedev,
switch
(
code
)
{
case
ABS_X
:
size
=
dev
->
absmax
[
ABS_X
]
-
dev
->
absmin
[
ABS_X
];
if
(
size
==
0
)
size
=
xres
?
:
1
;
if
(
value
>
dev
->
absmax
[
ABS_X
])
value
=
dev
->
absmax
[
ABS_X
];
if
(
value
<
dev
->
absmin
[
ABS_X
])
value
=
dev
->
absmin
[
ABS_X
];
if
(
size
==
0
)
size
=
xres
?
:
1
;
if
(
value
>
dev
->
absmax
[
ABS_X
])
value
=
dev
->
absmax
[
ABS_X
];
if
(
value
<
dev
->
absmin
[
ABS_X
])
value
=
dev
->
absmin
[
ABS_X
];
mousedev
->
packet
.
x
=
((
value
-
dev
->
absmin
[
ABS_X
])
*
xres
)
/
size
;
mousedev
->
packet
.
abs_event
=
1
;
break
;
case
ABS_Y
:
size
=
dev
->
absmax
[
ABS_Y
]
-
dev
->
absmin
[
ABS_Y
];
if
(
size
==
0
)
size
=
yres
?
:
1
;
if
(
value
>
dev
->
absmax
[
ABS_Y
])
value
=
dev
->
absmax
[
ABS_Y
];
if
(
value
<
dev
->
absmin
[
ABS_Y
])
value
=
dev
->
absmin
[
ABS_Y
];
if
(
size
==
0
)
size
=
yres
?
:
1
;
if
(
value
>
dev
->
absmax
[
ABS_Y
])
value
=
dev
->
absmax
[
ABS_Y
];
if
(
value
<
dev
->
absmin
[
ABS_Y
])
value
=
dev
->
absmin
[
ABS_Y
];
mousedev
->
packet
.
y
=
yres
-
((
value
-
dev
->
absmin
[
ABS_Y
])
*
yres
)
/
size
;
mousedev
->
packet
.
abs_event
=
1
;
break
;
...
...
@@ -202,7 +210,7 @@ static void mousedev_key_event(struct mousedev *mousedev, unsigned int code, int
case
BTN_SIDE
:
index
=
3
;
break
;
case
BTN_4
:
case
BTN_EXTRA
:
index
=
4
;
break
;
default:
return
;
default:
return
;
}
if
(
value
)
{
...
...
@@ -285,10 +293,9 @@ static void mousedev_touchpad_touch(struct mousedev *mousedev, int value)
mousedev
->
touch
=
mousedev
->
pkt_count
=
0
;
mousedev
->
frac_dx
=
0
;
mousedev
->
frac_dy
=
0
;
}
else
if
(
!
mousedev
->
touch
)
mousedev
->
touch
=
jiffies
;
}
else
if
(
!
mousedev
->
touch
)
mousedev
->
touch
=
jiffies
;
}
static
void
mousedev_event
(
struct
input_handle
*
handle
,
unsigned
int
type
,
unsigned
int
code
,
int
value
)
...
...
@@ -327,7 +334,7 @@ static void mousedev_event(struct input_handle *handle, unsigned int type, unsig
mousedev
->
pkt_count
++
;
/* Input system eats duplicate events, but we need all of them
* to do correct averaging so apply present one forward
*/
*/
fx
(
0
)
=
fx
(
1
);
fy
(
0
)
=
fy
(
1
);
}
...
...
@@ -346,7 +353,9 @@ static int mousedev_fasync(int fd, struct file *file, int on)
{
int
retval
;
struct
mousedev_list
*
list
=
file
->
private_data
;
retval
=
fasync_helper
(
fd
,
file
,
on
,
&
list
->
fasync
);
return
retval
<
0
?
retval
:
0
;
}
...
...
@@ -507,14 +516,16 @@ static ssize_t mousedev_write(struct file * file, const char __user * buffer, si
list
->
imexseq
=
0
;
list
->
mode
=
MOUSEDEV_EMUL_EXPS
;
}
}
else
list
->
imexseq
=
0
;
}
else
list
->
imexseq
=
0
;
if
(
c
==
mousedev_imps_seq
[
list
->
impsseq
])
{
if
(
++
list
->
impsseq
==
MOUSEDEV_SEQ_LEN
)
{
list
->
impsseq
=
0
;
list
->
mode
=
MOUSEDEV_EMUL_IMPS
;
}
}
else
list
->
impsseq
=
0
;
}
else
list
->
impsseq
=
0
;
list
->
ps2
[
0
]
=
0xfa
;
...
...
@@ -598,6 +609,7 @@ static ssize_t mousedev_read(struct file * file, char __user * buffer, size_t co
static
unsigned
int
mousedev_poll
(
struct
file
*
file
,
poll_table
*
wait
)
{
struct
mousedev_list
*
list
=
file
->
private_data
;
poll_wait
(
file
,
&
list
->
mousedev
->
wait
,
wait
);
return
((
list
->
ready
||
list
->
buffer
)
?
(
POLLIN
|
POLLRDNORM
)
:
0
)
|
(
list
->
mousedev
->
exist
?
0
:
(
POLLHUP
|
POLLERR
));
...
...
drivers/input/tsdev.c
浏览文件 @
1e0afb28
...
...
@@ -35,7 +35,7 @@
* e-mail - mail your message to <jsimmons@infradead.org>.
*/
#define TSDEV_MINOR_BASE
128
#define TSDEV_MINOR_BASE 128
#define TSDEV_MINORS 32
/* First 16 devices are h3600_ts compatible; second 16 are h3600_tsraw */
#define TSDEV_MINOR_MASK 15
...
...
@@ -230,6 +230,7 @@ static ssize_t tsdev_read(struct file *file, char __user *buffer, size_t count,
static
unsigned
int
tsdev_poll
(
struct
file
*
file
,
poll_table
*
wait
)
{
struct
tsdev_list
*
list
=
file
->
private_data
;
poll_wait
(
file
,
&
list
->
tsdev
->
wait
,
wait
);
return
((
list
->
head
==
list
->
tail
)
?
0
:
(
POLLIN
|
POLLRDNORM
))
|
(
list
->
tsdev
->
exist
?
0
:
(
POLLHUP
|
POLLERR
));
...
...
@@ -248,11 +249,13 @@ static int tsdev_ioctl(struct inode *inode, struct file *file,
sizeof
(
struct
ts_calibration
)))
retval
=
-
EFAULT
;
break
;
case
TS_SET_CAL
:
if
(
copy_from_user
(
&
tsdev
->
cal
,
(
void
__user
*
)
arg
,
sizeof
(
struct
ts_calibration
)))
retval
=
-
EFAULT
;
break
;
default:
retval
=
-
EINVAL
;
break
;
...
...
@@ -284,9 +287,11 @@ static void tsdev_event(struct input_handle *handle, unsigned int type,
case
ABS_X
:
tsdev
->
x
=
value
;
break
;
case
ABS_Y
:
tsdev
->
y
=
value
;
break
;
case
ABS_PRESSURE
:
if
(
value
>
handle
->
dev
->
absmax
[
ABS_PRESSURE
])
value
=
handle
->
dev
->
absmax
[
ABS_PRESSURE
];
...
...
@@ -307,6 +312,7 @@ static void tsdev_event(struct input_handle *handle, unsigned int type,
else
if
(
tsdev
->
x
>
xres
)
tsdev
->
x
=
xres
;
break
;
case
REL_Y
:
tsdev
->
y
+=
value
;
if
(
tsdev
->
y
<
0
)
...
...
@@ -323,6 +329,7 @@ static void tsdev_event(struct input_handle *handle, unsigned int type,
case
0
:
tsdev
->
pressure
=
0
;
break
;
case
1
:
if
(
!
tsdev
->
pressure
)
tsdev
->
pressure
=
1
;
...
...
@@ -370,9 +377,8 @@ static struct input_handle *tsdev_connect(struct input_handler *handler,
struct
class_device
*
cdev
;
int
minor
,
delta
;
for
(
minor
=
0
;
minor
<
TSDEV_MINORS
/
2
&&
tsdev_table
[
minor
];
minor
++
);
if
(
minor
>=
TSDEV_MINORS
/
2
)
{
for
(
minor
=
0
;
minor
<
TSDEV_MINORS
/
2
&&
tsdev_table
[
minor
];
minor
++
);
if
(
minor
>=
TSDEV_MINORS
/
2
)
{
printk
(
KERN_ERR
"tsdev: You have way too many touchscreens
\n
"
);
return
NULL
;
...
...
@@ -444,22 +450,22 @@ static struct input_device_id tsdev_ids[] = {
.
evbit
=
{
BIT
(
EV_KEY
)
|
BIT
(
EV_REL
)
},
.
keybit
=
{
[
LONG
(
BTN_LEFT
)]
=
BIT
(
BTN_LEFT
)
},
.
relbit
=
{
BIT
(
REL_X
)
|
BIT
(
REL_Y
)
},
},
/* A mouse like device, at least one button, two relative axes */
},
/* A mouse like device, at least one button, two relative axes */
{
.
flags
=
INPUT_DEVICE_ID_MATCH_EVBIT
|
INPUT_DEVICE_ID_MATCH_KEYBIT
|
INPUT_DEVICE_ID_MATCH_ABSBIT
,
.
evbit
=
{
BIT
(
EV_KEY
)
|
BIT
(
EV_ABS
)
},
.
keybit
=
{
[
LONG
(
BTN_TOUCH
)]
=
BIT
(
BTN_TOUCH
)
},
.
absbit
=
{
BIT
(
ABS_X
)
|
BIT
(
ABS_Y
)
},
},
/* A tablet like device, at least touch detection, two absolute axes */
},
/* A tablet like device, at least touch detection, two absolute axes */
{
.
flags
=
INPUT_DEVICE_ID_MATCH_EVBIT
|
INPUT_DEVICE_ID_MATCH_ABSBIT
,
.
evbit
=
{
BIT
(
EV_ABS
)
},
.
absbit
=
{
BIT
(
ABS_X
)
|
BIT
(
ABS_Y
)
|
BIT
(
ABS_PRESSURE
)
},
},
/* A tablet like device with several gradations of pressure */
},
/* A tablet like device with several gradations of pressure */
{}
,
/* Terminating entry */
{}
/* Terminating entry */
};
MODULE_DEVICE_TABLE
(
input
,
tsdev_ids
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录