Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
05f091ab
K
Kernel
项目概览
openeuler
/
Kernel
12 个月 前同步成功
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
05f091ab
编写于
5月 29, 2005
作者:
D
Dmitry Torokhov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Input: whitespace fixes in drivers/usb/input
Signed-off-by:
N
Dmitry Torokhov
<
dtor@mail.ru
>
上级
ab0c3443
变更
15
展开全部
隐藏空白更改
内联
并排
Showing
15 changed file
with
300 addition
and
308 deletion
+300
-308
drivers/usb/input/aiptek.c
drivers/usb/input/aiptek.c
+9
-9
drivers/usb/input/ati_remote.c
drivers/usb/input/ati_remote.c
+110
-111
drivers/usb/input/hid-core.c
drivers/usb/input/hid-core.c
+2
-2
drivers/usb/input/hid-debug.h
drivers/usb/input/hid-debug.h
+8
-8
drivers/usb/input/hid-input.c
drivers/usb/input/hid-input.c
+8
-8
drivers/usb/input/hid-lgff.c
drivers/usb/input/hid-lgff.c
+9
-9
drivers/usb/input/hid.h
drivers/usb/input/hid.h
+9
-9
drivers/usb/input/hiddev.c
drivers/usb/input/hiddev.c
+28
-28
drivers/usb/input/itmtouch.c
drivers/usb/input/itmtouch.c
+24
-31
drivers/usb/input/kbtab.c
drivers/usb/input/kbtab.c
+3
-3
drivers/usb/input/powermate.c
drivers/usb/input/powermate.c
+15
-15
drivers/usb/input/usbkbd.c
drivers/usb/input/usbkbd.c
+9
-9
drivers/usb/input/usbmouse.c
drivers/usb/input/usbmouse.c
+10
-10
drivers/usb/input/wacom.c
drivers/usb/input/wacom.c
+23
-23
drivers/usb/input/xpad.c
drivers/usb/input/xpad.c
+33
-33
未找到文件。
drivers/usb/input/aiptek.c
浏览文件 @
05f091ab
/*
* Native support for the Aiptek HyperPen USB Tablets
* (4000U/5000U/6000U/8000U/12000U)
*
*
* Copyright (c) 2001 Chris Atenasio <chris@crud.net>
* Copyright (c) 2002-2004 Bryan W. Headley <bwheadley@earthlink.net>
*
...
...
@@ -31,7 +31,7 @@
* - Added support for the sysfs interface, deprecating the
* procfs interface for 2.5.x kernel. Also added support for
* Wheel command. Bryan W. Headley July-15-2003.
* v1.2 - Reworked jitter timer as a kernel thread.
* v1.2 - Reworked jitter timer as a kernel thread.
* Bryan W. Headley November-28-2003/Jan-10-2004.
* v1.3 - Repaired issue of kernel thread going nuts on single-processor
* machines, introduced programmableDelay as a command line
...
...
@@ -49,10 +49,10 @@
* NOTE:
* This kernel driver is augmented by the "Aiptek" XFree86 input
* driver for your X server, as well as the Gaiptek GUI Front-end
* "Tablet Manager".
* These three products are highly interactive with one another,
* "Tablet Manager".
* These three products are highly interactive with one another,
* so therefore it's easier to document them all as one subsystem.
* Please visit the project's "home page", located at,
* Please visit the project's "home page", located at,
* http://aiptektablet.sourceforge.net.
*
* This program is free software; you can redistribute it and/or modify
...
...
@@ -156,7 +156,7 @@
* Command/Data Description Return Bytes Return Value
* 0x10/0x00 SwitchToMouse 0
* 0x10/0x01 SwitchToTablet 0
* 0x18/0x04 SetResolution 0
* 0x18/0x04 SetResolution 0
* 0x12/0xFF AutoGainOn 0
* 0x17/0x00 FilterOn 0
* 0x01/0x00 GetXExtension 2 MaxX
...
...
@@ -247,7 +247,7 @@
#define AIPTEK_DIAGNOSTIC_SENDING_ABSOLUTE_IN_RELATIVE 2
#define AIPTEK_DIAGNOSTIC_TOOL_DISALLOWED 3
/* Time to wait (in ms) to help mask hand jittering
/* Time to wait (in ms) to help mask hand jittering
* when pressing the stylus buttons.
*/
#define AIPTEK_JITTER_DELAY_DEFAULT 50
...
...
@@ -791,7 +791,7 @@ static void aiptek_irq(struct urb *urb, struct pt_regs *regs)
* specific Aiptek model numbers, because there has been overlaps,
* use, and reuse of id's in existing models. Certain models have
* been known to use more than one ID, indicative perhaps of
* manufacturing revisions. In any event, we consider these
* manufacturing revisions. In any event, we consider these
* IDs to not be model-specific nor unique.
*/
static
const
struct
usb_device_id
aiptek_ids
[]
=
{
...
...
@@ -840,7 +840,7 @@ static void aiptek_close(struct input_dev *inputdev)
}
/***********************************************************************
* aiptek_set_report and aiptek_get_report() are borrowed from Linux 2.4.x,
* aiptek_set_report and aiptek_get_report() are borrowed from Linux 2.4.x,
* where they were known as usb_set_report and usb_get_report.
*/
static
int
...
...
drivers/usb/input/ati_remote.c
浏览文件 @
05f091ab
此差异已折叠。
点击以展开。
drivers/usb/input/hid-core.c
浏览文件 @
05f091ab
...
...
@@ -232,7 +232,7 @@ static int hid_add_field(struct hid_parser *parser, unsigned report_type, unsign
report
->
size
+=
parser
->
global
.
report_size
*
parser
->
global
.
report_count
;
if
(
!
parser
->
local
.
usage_index
)
/* Ignore padding fields */
return
0
;
return
0
;
usages
=
max_t
(
int
,
parser
->
local
.
usage_index
,
parser
->
global
.
report_count
);
...
...
@@ -1622,7 +1622,7 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf)
/* Change the polling interval of mice. */
if
(
hid
->
collection
->
usage
==
HID_GD_MOUSE
&&
hid_mousepoll_interval
>
0
)
interval
=
hid_mousepoll_interval
;
if
(
endpoint
->
bEndpointAddress
&
USB_DIR_IN
)
{
if
(
hid
->
urbin
)
continue
;
...
...
drivers/usb/input/hid-debug.h
浏览文件 @
05f091ab
...
...
@@ -67,7 +67,7 @@ static const struct hid_usage_entry hid_usage_table[] = {
{
0
,
0x44
,
"Vbry"
},
{
0
,
0x45
,
"Vbrz"
},
{
0
,
0x46
,
"Vno"
},
{
0
,
0x80
,
"SystemControl"
},
{
0
,
0x80
,
"SystemControl"
},
{
0
,
0x81
,
"SystemPowerDown"
},
{
0
,
0x82
,
"SystemSleep"
},
{
0
,
0x83
,
"SystemWakeUp"
},
...
...
@@ -347,7 +347,7 @@ __inline__ static void tab(int n) {
static
void
hid_dump_field
(
struct
hid_field
*
field
,
int
n
)
{
int
j
;
if
(
field
->
physical
)
{
tab
(
n
);
printk
(
"Physical("
);
...
...
@@ -408,7 +408,7 @@ static void hid_dump_field(struct hid_field *field, int n) {
printk
(
"%s"
,
units
[
sys
][
i
]);
if
(
nibble
!=
1
)
{
/* This is a _signed_ nibble(!) */
int
val
=
nibble
&
0x7
;
if
(
nibble
&
0x08
)
val
=
-
((
0x7
&
~
val
)
+
1
);
...
...
@@ -443,7 +443,7 @@ static void __attribute__((unused)) hid_dump_device(struct hid_device *device) {
struct
list_head
*
list
;
unsigned
i
,
k
;
static
char
*
table
[]
=
{
"INPUT"
,
"OUTPUT"
,
"FEATURE"
};
for
(
i
=
0
;
i
<
HID_REPORT_TYPES
;
i
++
)
{
report_enum
=
device
->
report_enum
+
i
;
list
=
report_enum
->
report_list
.
next
;
...
...
@@ -664,8 +664,8 @@ static char *keys[KEY_MAX + 1] = {
static
char
*
relatives
[
REL_MAX
+
1
]
=
{
[
REL_X
]
=
"X"
,
[
REL_Y
]
=
"Y"
,
[
REL_Z
]
=
"Z"
,
[
REL_HWHEEL
]
=
"HWheel"
,
[
REL_DIAL
]
=
"Dial"
,
[
REL_WHEEL
]
=
"Wheel"
,
[
REL_MISC
]
=
"Misc"
,
[
REL_DIAL
]
=
"Dial"
,
[
REL_WHEEL
]
=
"Wheel"
,
[
REL_MISC
]
=
"Misc"
,
};
static
char
*
absolutes
[
ABS_MAX
+
1
]
=
{
...
...
@@ -690,9 +690,9 @@ static char *misc[MSC_MAX + 1] = {
};
static
char
*
leds
[
LED_MAX
+
1
]
=
{
[
LED_NUML
]
=
"NumLock"
,
[
LED_CAPSL
]
=
"CapsLock"
,
[
LED_NUML
]
=
"NumLock"
,
[
LED_CAPSL
]
=
"CapsLock"
,
[
LED_SCROLLL
]
=
"ScrollLock"
,
[
LED_COMPOSE
]
=
"Compose"
,
[
LED_KANA
]
=
"Kana"
,
[
LED_SLEEP
]
=
"Sleep"
,
[
LED_KANA
]
=
"Kana"
,
[
LED_SLEEP
]
=
"Sleep"
,
[
LED_SUSPEND
]
=
"Suspend"
,
[
LED_MUTE
]
=
"Mute"
,
[
LED_MISC
]
=
"Misc"
,
};
...
...
drivers/usb/input/hid-input.c
浏览文件 @
05f091ab
...
...
@@ -164,7 +164,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
case
HID_GD_X
:
case
HID_GD_Y
:
case
HID_GD_Z
:
case
HID_GD_RX
:
case
HID_GD_RY
:
case
HID_GD_RZ
:
case
HID_GD_SLIDER
:
case
HID_GD_DIAL
:
case
HID_GD_WHEEL
:
if
(
field
->
flags
&
HID_MAIN_ITEM_RELATIVE
)
if
(
field
->
flags
&
HID_MAIN_ITEM_RELATIVE
)
map_rel
(
usage
->
hid
&
0xf
);
else
map_abs
(
usage
->
hid
&
0xf
);
...
...
@@ -297,7 +297,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
case
HID_UP_MSVENDOR
:
goto
ignore
;
case
HID_UP_PID
:
set_bit
(
EV_FF
,
input
->
evbit
);
...
...
@@ -349,7 +349,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
goto
ignore
;
if
((
device
->
quirks
&
(
HID_QUIRK_2WHEEL_MOUSE_HACK_7
|
HID_QUIRK_2WHEEL_MOUSE_HACK_5
))
&&
(
usage
->
type
==
EV_REL
)
&&
(
usage
->
code
==
REL_WHEEL
))
(
usage
->
type
==
EV_REL
)
&&
(
usage
->
code
==
REL_WHEEL
))
set_bit
(
REL_HWHEEL
,
bit
);
if
(((
device
->
quirks
&
HID_QUIRK_2WHEEL_MOUSE_HACK_5
)
&&
(
usage
->
hid
==
0x00090005
))
...
...
@@ -365,11 +365,11 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
a
=
field
->
logical_minimum
=
0
;
b
=
field
->
logical_maximum
=
255
;
}
if
(
field
->
application
==
HID_GD_GAMEPAD
||
field
->
application
==
HID_GD_JOYSTICK
)
input_set_abs_params
(
input
,
usage
->
code
,
a
,
b
,
(
b
-
a
)
>>
8
,
(
b
-
a
)
>>
4
);
else
input_set_abs_params
(
input
,
usage
->
code
,
a
,
b
,
0
,
0
);
}
if
(
usage
->
hat_min
<
usage
->
hat_max
||
usage
->
hat_dir
)
{
...
...
@@ -420,7 +420,7 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct
return
;
}
if
(
usage
->
hat_min
<
usage
->
hat_max
||
usage
->
hat_dir
)
{
if
(
usage
->
hat_min
<
usage
->
hat_max
||
usage
->
hat_dir
)
{
int
hat_dir
=
usage
->
hat_dir
;
if
(
!
hat_dir
)
hat_dir
=
(
value
-
usage
->
hat_min
)
*
8
/
(
usage
->
hat_max
-
usage
->
hat_min
+
1
)
+
1
;
...
...
@@ -551,7 +551,7 @@ int hidinput_connect(struct hid_device *hid)
for
(
i
=
0
;
i
<
hid
->
maxcollection
;
i
++
)
if
(
hid
->
collection
[
i
].
type
==
HID_COLLECTION_APPLICATION
||
hid
->
collection
[
i
].
type
==
HID_COLLECTION_PHYSICAL
)
if
(
IS_INPUT_APPLICATION
(
hid
->
collection
[
i
].
usage
))
if
(
IS_INPUT_APPLICATION
(
hid
->
collection
[
i
].
usage
))
break
;
if
(
i
==
hid
->
maxcollection
)
...
...
@@ -592,7 +592,7 @@ int hidinput_connect(struct hid_device *hid)
for
(
j
=
0
;
j
<
report
->
field
[
i
]
->
maxusage
;
j
++
)
hidinput_configure_usage
(
hidinput
,
report
->
field
[
i
],
report
->
field
[
i
]
->
usage
+
j
);
if
(
hid
->
quirks
&
HID_QUIRK_MULTI_INPUT
)
{
/* This will leave hidinput NULL, so that it
* allocates another one if we have more inputs on
...
...
drivers/usb/input/hid-lgff.c
浏览文件 @
05f091ab
...
...
@@ -94,7 +94,7 @@ struct lgff_device {
isn't really necessary */
unsigned
long
flags
[
1
];
/* Contains various information about the
state of the driver for this device */
state of the driver for this device */
struct
timer_list
timer
;
};
...
...
@@ -234,7 +234,7 @@ static struct hid_report* hid_lgff_duplicate_report(struct hid_report* report)
kfree
(
ret
);
return
NULL
;
}
memset
(
ret
->
field
[
0
]
->
value
,
0
,
sizeof
(
s32
[
8
]));
memset
(
ret
->
field
[
0
]
->
value
,
0
,
sizeof
(
s32
[
8
]));
return
ret
;
}
...
...
@@ -295,11 +295,11 @@ static int hid_lgff_event(struct hid_device *hid, struct input_dev* input,
unsigned
long
flags
;
if
(
type
!=
EV_FF
)
return
-
EINVAL
;
if
(
!
LGFF_CHECK_OWNERSHIP
(
code
,
lgff
))
return
-
EACCES
;
if
(
!
LGFF_CHECK_OWNERSHIP
(
code
,
lgff
))
return
-
EACCES
;
if
(
value
<
0
)
return
-
EINVAL
;
spin_lock_irqsave
(
&
lgff
->
lock
,
flags
);
if
(
value
>
0
)
{
if
(
test_bit
(
EFFECT_STARTED
,
effect
->
flags
))
{
spin_unlock_irqrestore
(
&
lgff
->
lock
,
flags
);
...
...
@@ -345,7 +345,7 @@ static int hid_lgff_flush(struct input_dev *dev, struct file *file)
and perform ioctls on the same fd all at the same time */
if
(
current
->
pid
==
lgff
->
effects
[
i
].
owner
&&
test_bit
(
EFFECT_USED
,
lgff
->
effects
[
i
].
flags
))
{
if
(
hid_lgff_erase
(
dev
,
i
))
warn
(
"erase effect %d failed"
,
i
);
}
...
...
@@ -378,7 +378,7 @@ static int hid_lgff_upload_effect(struct input_dev* input,
struct
lgff_effect
new
;
int
id
;
unsigned
long
flags
;
dbg
(
"ioctl rumble"
);
if
(
!
test_bit
(
effect
->
type
,
input
->
ffbit
))
return
-
EINVAL
;
...
...
@@ -441,7 +441,7 @@ static void hid_lgff_timer(unsigned long timer_data)
spin_lock_irqsave
(
&
lgff
->
lock
,
flags
);
for
(
i
=
0
;
i
<
LGFF_EFFECTS
;
++
i
)
{
for
(
i
=
0
;
i
<
LGFF_EFFECTS
;
++
i
)
{
struct
lgff_effect
*
effect
=
lgff
->
effects
+
i
;
if
(
test_bit
(
EFFECT_PLAYING
,
effect
->
flags
))
{
...
...
@@ -491,7 +491,7 @@ static void hid_lgff_timer(unsigned long timer_data)
set_bit
(
EFFECT_PLAYING
,
lgff
->
effects
[
i
].
flags
);
}
}
}
}
#define CLAMP(x) if (x < 0) x = 0; if (x > 0xff) x = 0xff
...
...
@@ -524,5 +524,5 @@ static void hid_lgff_timer(unsigned long timer_data)
add_timer
(
&
lgff
->
timer
);
}
spin_unlock_irqrestore
(
&
lgff
->
lock
,
flags
);
spin_unlock_irqrestore
(
&
lgff
->
lock
,
flags
);
}
drivers/usb/input/hid.h
浏览文件 @
05f091ab
...
...
@@ -118,7 +118,7 @@ struct hid_item {
#define HID_MAIN_ITEM_CONSTANT 0x001
#define HID_MAIN_ITEM_VARIABLE 0x002
#define HID_MAIN_ITEM_RELATIVE 0x004
#define HID_MAIN_ITEM_WRAP 0x008
#define HID_MAIN_ITEM_WRAP 0x008
#define HID_MAIN_ITEM_NONLINEAR 0x010
#define HID_MAIN_ITEM_NO_PREFERRED 0x020
#define HID_MAIN_ITEM_NULL_STATE 0x040
...
...
@@ -172,14 +172,14 @@ struct hid_item {
#define HID_USAGE_PAGE 0xffff0000
#define HID_UP_UNDEFINED 0x00000000
#define HID_UP_GENDESK
0x00010000
#define HID_UP_KEYBOARD
0x00070000
#define HID_UP_LED
0x00080000
#define HID_UP_BUTTON
0x00090000
#define HID_UP_ORDINAL
0x000a0000
#define HID_UP_GENDESK 0x00010000
#define HID_UP_KEYBOARD
0x00070000
#define HID_UP_LED 0x00080000
#define HID_UP_BUTTON 0x00090000
#define HID_UP_ORDINAL 0x000a0000
#define HID_UP_CONSUMER 0x000c0000
#define HID_UP_DIGITIZER
0x000d0000
#define HID_UP_PID
0x000f0000
#define HID_UP_DIGITIZER 0x000d0000
#define HID_UP_PID 0x000f0000
#define HID_UP_HPVENDOR 0xff7f0000
#define HID_UP_MSVENDOR 0xff000000
...
...
@@ -406,7 +406,7 @@ struct hid_device { /* device report descriptor */
dma_addr_t
outbuf_dma
;
/* Output buffer dma */
spinlock_t
outlock
;
/* Output fifo spinlock */
unsigned
claimed
;
/* Claimed by hidinput, hiddev? */
unsigned
claimed
;
/* Claimed by hidinput, hiddev? */
unsigned
quirks
;
/* Various quirks the device can pull on us */
struct
list_head
inputs
;
/* The list of inputs */
...
...
drivers/usb/input/hiddev.c
浏览文件 @
05f091ab
...
...
@@ -95,7 +95,7 @@ hiddev_lookup_report(struct hid_device *hid, struct hiddev_report_info *rinfo)
return
NULL
;
rinfo
->
report_id
=
((
struct
hid_report
*
)
list
)
->
id
;
break
;
case
HID_REPORT_ID_NEXT
:
list
=
(
struct
list_head
*
)
report_enum
->
report_id_hash
[
rinfo
->
report_id
&
HID_REPORT_ID_MASK
];
...
...
@@ -106,7 +106,7 @@ hiddev_lookup_report(struct hid_device *hid, struct hiddev_report_info *rinfo)
return
NULL
;
rinfo
->
report_id
=
((
struct
hid_report
*
)
list
)
->
id
;
break
;
default:
return
NULL
;
}
...
...
@@ -158,7 +158,7 @@ static void hiddev_send_event(struct hid_device *hid,
if
(
uref
->
field_index
!=
HID_FIELD_INDEX_NONE
||
(
list
->
flags
&
HIDDEV_FLAG_REPORT
)
!=
0
)
{
list
->
buffer
[
list
->
head
]
=
*
uref
;
list
->
head
=
(
list
->
head
+
1
)
&
list
->
head
=
(
list
->
head
+
1
)
&
(
HIDDEV_BUFFER_SIZE
-
1
);
kill_fasync
(
&
list
->
fasync
,
SIGIO
,
POLL_IN
);
}
...
...
@@ -179,9 +179,9 @@ void hiddev_hid_event(struct hid_device *hid, struct hid_field *field,
unsigned
type
=
field
->
report_type
;
struct
hiddev_usage_ref
uref
;
uref
.
report_type
=
uref
.
report_type
=
(
type
==
HID_INPUT_REPORT
)
?
HID_REPORT_TYPE_INPUT
:
((
type
==
HID_OUTPUT_REPORT
)
?
HID_REPORT_TYPE_OUTPUT
:
((
type
==
HID_OUTPUT_REPORT
)
?
HID_REPORT_TYPE_OUTPUT
:
((
type
==
HID_FEATURE_REPORT
)
?
HID_REPORT_TYPE_FEATURE
:
0
));
uref
.
report_id
=
field
->
report
->
id
;
uref
.
field_index
=
field
->
index
;
...
...
@@ -199,9 +199,9 @@ void hiddev_report_event(struct hid_device *hid, struct hid_report *report)
struct
hiddev_usage_ref
uref
;
memset
(
&
uref
,
0
,
sizeof
(
uref
));
uref
.
report_type
=
uref
.
report_type
=
(
type
==
HID_INPUT_REPORT
)
?
HID_REPORT_TYPE_INPUT
:
((
type
==
HID_OUTPUT_REPORT
)
?
HID_REPORT_TYPE_OUTPUT
:
((
type
==
HID_OUTPUT_REPORT
)
?
HID_REPORT_TYPE_OUTPUT
:
((
type
==
HID_FEATURE_REPORT
)
?
HID_REPORT_TYPE_FEATURE
:
0
));
uref
.
report_id
=
report
->
id
;
uref
.
field_index
=
HID_FIELD_INDEX_NONE
;
...
...
@@ -236,7 +236,7 @@ static int hiddev_release(struct inode * inode, struct file * file)
*
listptr
=
(
*
listptr
)
->
next
;
if
(
!--
list
->
hiddev
->
open
)
{
if
(
list
->
hiddev
->
exist
)
if
(
list
->
hiddev
->
exist
)
hid_close
(
list
->
hiddev
->
hid
);
else
kfree
(
list
->
hiddev
);
...
...
@@ -303,7 +303,7 @@ static ssize_t hiddev_read(struct file * file, char __user * buffer, size_t coun
if
(
list
->
head
==
list
->
tail
)
{
add_wait_queue
(
&
list
->
hiddev
->
wait
,
&
wait
);
set_current_state
(
TASK_INTERRUPTIBLE
);
while
(
list
->
head
==
list
->
tail
)
{
if
(
file
->
f_flags
&
O_NONBLOCK
)
{
retval
=
-
EAGAIN
;
...
...
@@ -317,7 +317,7 @@ static ssize_t hiddev_read(struct file * file, char __user * buffer, size_t coun
retval
=
-
EIO
;
break
;
}
schedule
();
}
...
...
@@ -329,7 +329,7 @@ static ssize_t hiddev_read(struct file * file, char __user * buffer, size_t coun
return
retval
;
while
(
list
->
head
!=
list
->
tail
&&
while
(
list
->
head
!=
list
->
tail
&&
retval
+
event_size
<=
count
)
{
if
((
list
->
flags
&
HIDDEV_FLAG_UREF
)
==
0
)
{
if
(
list
->
buffer
[
list
->
tail
].
field_index
!=
...
...
@@ -405,10 +405,10 @@ static int hiddev_ioctl(struct inode *inode, struct file *file, unsigned int cmd
return
-
EINVAL
;
for
(
i
=
0
;
i
<
hid
->
maxcollection
;
i
++
)
if
(
hid
->
collection
[
i
].
type
==
if
(
hid
->
collection
[
i
].
type
==
HID_COLLECTION_APPLICATION
&&
arg
--
==
0
)
break
;
if
(
i
==
hid
->
maxcollection
)
return
-
EINVAL
;
...
...
@@ -562,7 +562,7 @@ static int hiddev_ioctl(struct inode *inode, struct file *file, unsigned int cmd
if
(
!
uref_multi
)
return
-
ENOMEM
;
uref
=
&
uref_multi
->
uref
;
if
(
copy_from_user
(
uref
,
user_arg
,
sizeof
(
*
uref
)))
if
(
copy_from_user
(
uref
,
user_arg
,
sizeof
(
*
uref
)))
goto
fault
;
rinfo
.
report_type
=
uref
->
report_type
;
...
...
@@ -595,7 +595,7 @@ static int hiddev_ioctl(struct inode *inode, struct file *file, unsigned int cmd
return
-
ENOMEM
;
uref
=
&
uref_multi
->
uref
;
if
(
cmd
==
HIDIOCGUSAGES
||
cmd
==
HIDIOCSUSAGES
)
{
if
(
copy_from_user
(
uref_multi
,
user_arg
,
if
(
copy_from_user
(
uref_multi
,
user_arg
,
sizeof
(
*
uref_multi
)))
goto
fault
;
}
else
{
...
...
@@ -603,7 +603,7 @@ static int hiddev_ioctl(struct inode *inode, struct file *file, unsigned int cmd
goto
fault
;
}
if
(
cmd
!=
HIDIOCGUSAGE
&&
if
(
cmd
!=
HIDIOCGUSAGE
&&
cmd
!=
HIDIOCGUSAGES
&&
uref
->
report_type
==
HID_REPORT_TYPE_INPUT
)
goto
inval
;
...
...
@@ -651,16 +651,16 @@ static int hiddev_ioctl(struct inode *inode, struct file *file, unsigned int cmd
return
field
->
usage
[
uref
->
usage_index
].
collection_index
;
case
HIDIOCGUSAGES
:
for
(
i
=
0
;
i
<
uref_multi
->
num_values
;
i
++
)
uref_multi
->
values
[
i
]
=
uref_multi
->
values
[
i
]
=
field
->
value
[
uref
->
usage_index
+
i
];
if
(
copy_to_user
(
user_arg
,
uref_multi
,
if
(
copy_to_user
(
user_arg
,
uref_multi
,
sizeof
(
*
uref_multi
)))
goto
fault
;
goto
goodreturn
;
case
HIDIOCSUSAGES
:
for
(
i
=
0
;
i
<
uref_multi
->
num_values
;
i
++
)
field
->
value
[
uref
->
usage_index
+
i
]
=
uref_multi
->
values
[
i
];
field
->
value
[
uref
->
usage_index
+
i
]
=
uref_multi
->
values
[
i
];
goto
goodreturn
;
}
...
...
@@ -670,7 +670,7 @@ static int hiddev_ioctl(struct inode *inode, struct file *file, unsigned int cmd
fault:
kfree
(
uref_multi
);
return
-
EFAULT
;
inval:
inval:
kfree
(
uref_multi
);
return
-
EINVAL
;
...
...
@@ -734,7 +734,7 @@ static struct usb_class_driver hiddev_class = {
.
name
=
"usb/hid/hiddev%d"
,
.
fops
=
&
hiddev_fops
,
.
mode
=
S_IFCHR
|
S_IRUGO
|
S_IWUSR
,
.
minor_base
=
HIDDEV_MINOR_BASE
,
.
minor_base
=
HIDDEV_MINOR_BASE
,
};
/*
...
...
@@ -747,7 +747,7 @@ int hiddev_connect(struct hid_device *hid)
int
retval
;
for
(
i
=
0
;
i
<
hid
->
maxcollection
;
i
++
)
if
(
hid
->
collection
[
i
].
type
==
if
(
hid
->
collection
[
i
].
type
==
HID_COLLECTION_APPLICATION
&&
!
IS_INPUT_APPLICATION
(
hid
->
collection
[
i
].
usage
))
break
;
...
...
@@ -755,11 +755,11 @@ int hiddev_connect(struct hid_device *hid)
if
(
i
==
hid
->
maxcollection
&&
(
hid
->
quirks
&
HID_QUIRK_HIDDEV
)
==
0
)
return
-
1
;
if
(
!
(
hiddev
=
kmalloc
(
sizeof
(
struct
hiddev
),
GFP_KERNEL
)))
if
(
!
(
hiddev
=
kmalloc
(
sizeof
(
struct
hiddev
),
GFP_KERNEL
)))
return
-
1
;
memset
(
hiddev
,
0
,
sizeof
(
struct
hiddev
));
retval
=
usb_register_dev
(
hid
->
intf
,
&
hiddev_class
);
retval
=
usb_register_dev
(
hid
->
intf
,
&
hiddev_class
);
if
(
retval
)
{
err
(
"Not able to get a minor for this device."
);
kfree
(
hiddev
);
...
...
@@ -768,12 +768,12 @@ int hiddev_connect(struct hid_device *hid)
init_waitqueue_head
(
&
hiddev
->
wait
);
hiddev_table
[
hid
->
intf
->
minor
-
HIDDEV_MINOR_BASE
]
=
hiddev
;
hiddev_table
[
hid
->
intf
->
minor
-
HIDDEV_MINOR_BASE
]
=
hiddev
;
hiddev
->
hid
=
hid
;
hiddev
->
exist
=
1
;
hid
->
minor
=
hid
->
intf
->
minor
;
hid
->
minor
=
hid
->
intf
->
minor
;
hid
->
hiddev
=
hiddev
;
return
0
;
...
...
@@ -818,7 +818,7 @@ void hiddev_disconnect(struct hid_device *hid)
/* We never attach in this manner, and rely on HID to connect us. This
* is why there is no disconnect routine defined in the usb_driver either.
*/
static
int
hiddev_usbd_probe
(
struct
usb_interface
*
intf
,
static
int
hiddev_usbd_probe
(
struct
usb_interface
*
intf
,
const
struct
usb_device_id
*
hiddev_info
)
{
return
-
ENODEV
;
...
...
drivers/usb/input/itmtouch.c
浏览文件 @
05f091ab
...
...
@@ -18,14 +18,14 @@
* Based upon original work by Chris Collins <xfire-itmtouch@xware.cx>.
*
* Kudos to ITM for providing me with the datasheet for the panel,
* even though it was a day later than I had finished writing this
* even though it was a day later than I had finished writing this
* driver.
*
*
* It has meant that I've been able to correct my interpretation of the
* protocol packets however.
*
*
* CC -- 2003/9/29
*
*
* History
* 1.0 & 1.1 2003 (CC) vojtech@suse.cz
* Original version for 2.4.x kernels
...
...
@@ -33,10 +33,10 @@
* 1.2 02/03/2005 (HCE) hc@mivu.no
* Complete rewrite to support Linux 2.6.10, thanks to mtouchusb.c for hints.
* Unfortunately no calibration support at this time.
*
*
* 1.2.1 09/03/2005 (HCE) hc@mivu.no
* Code cleanup and adjusting syntax to start matching kernel standards
*
*
*****************************************************************************/
#include <linux/config.h>
...
...
@@ -71,7 +71,7 @@ MODULE_DESCRIPTION( DRIVER_DESC );
MODULE_LICENSE
(
DRIVER_LICENSE
);
struct
itmtouch_dev
{
struct
usb_device
*
usbdev
;
/* usb device */
struct
usb_device
*
usbdev
;
/* usb device */
struct
input_dev
inputdev
;
/* input device */
struct
urb
*
readurb
;
/* urb */
char
rbuf
[
ITM_BUFSIZE
];
/* data */
...
...
@@ -121,7 +121,7 @@ static void itmtouch_irq(struct urb *urb, struct pt_regs *regs)
input_report_abs
(
dev
,
ABS_X
,
(
data
[
0
]
&
0x1F
)
<<
7
|
(
data
[
3
]
&
0x7F
));
input_report_abs
(
dev
,
ABS_Y
,
(
data
[
1
]
&
0x1F
)
<<
7
|
(
data
[
4
]
&
0x7F
));
}
input_report_abs
(
dev
,
ABS_PRESSURE
,
(
data
[
2
]
&
1
)
<<
7
|
(
data
[
5
]
&
0x7F
));
input_report_key
(
dev
,
BTN_TOUCH
,
~
data
[
7
]
&
0x20
);
input_sync
(
dev
);
...
...
@@ -142,8 +142,7 @@ static int itmtouch_open(struct input_dev *input)
itmtouch
->
readurb
->
dev
=
itmtouch
->
usbdev
;
if
(
usb_submit_urb
(
itmtouch
->
readurb
,
GFP_KERNEL
))
{
if
(
usb_submit_urb
(
itmtouch
->
readurb
,
GFP_KERNEL
))
{
itmtouch
->
users
--
;
return
-
EIO
;
}
...
...
@@ -178,13 +177,13 @@ static int itmtouch_probe(struct usb_interface *intf, const struct usb_device_id
}
itmtouch
->
usbdev
=
udev
;
itmtouch
->
inputdev
.
private
=
itmtouch
;
itmtouch
->
inputdev
.
open
=
itmtouch_open
;
itmtouch
->
inputdev
.
close
=
itmtouch_close
;
usb_make_path
(
udev
,
path
,
PATH_SIZE
);
itmtouch
->
inputdev
.
evbit
[
0
]
=
BIT
(
EV_KEY
)
|
BIT
(
EV_ABS
);
itmtouch
->
inputdev
.
absbit
[
0
]
=
BIT
(
ABS_X
)
|
BIT
(
ABS_Y
)
|
BIT
(
ABS_PRESSURE
);
itmtouch
->
inputdev
.
keybit
[
LONG
(
BTN_TOUCH
)]
=
BIT
(
BTN_TOUCH
);
...
...
@@ -194,12 +193,12 @@ static int itmtouch_probe(struct usb_interface *intf, const struct usb_device_id
itmtouch
->
inputdev
.
id
.
bustype
=
BUS_USB
;
itmtouch
->
inputdev
.
id
.
vendor
=
udev
->
descriptor
.
idVendor
;
itmtouch
->
inputdev
.
id
.
product
=
udev
->
descriptor
.
idProduct
;
itmtouch
->
inputdev
.
id
.
version
=
udev
->
descriptor
.
bcdDevice
;
itmtouch
->
inputdev
.
id
.
version
=
udev
->
descriptor
.
bcdDevice
;
itmtouch
->
inputdev
.
dev
=
&
intf
->
dev
;
if
(
!
strlen
(
itmtouch
->
name
))
sprintf
(
itmtouch
->
name
,
"USB ITM touchscreen"
);
/* device limits */
/* as specified by the ITM datasheet, X and Y are 12bit,
* Z (pressure) is 8 bit. However, the fields are defined up
...
...
@@ -212,26 +211,20 @@ static int itmtouch_probe(struct usb_interface *intf, const struct usb_device_id
/* initialise the URB so we can read from the transport stream */
pipe
=
usb_rcvintpipe
(
itmtouch
->
usbdev
,
endpoint
->
bEndpointAddress
);
maxp
=
usb_maxpacket
(
udev
,
pipe
,
usb_pipeout
(
pipe
));
if
(
maxp
>
ITM_BUFSIZE
)
maxp
=
ITM_BUFSIZE
;
itmtouch
->
readurb
=
usb_alloc_urb
(
0
,
GFP_KERNEL
);
if
(
!
itmtouch
->
readurb
)
{
dbg
(
"%s - usb_alloc_urb failed: itmtouch->readurb"
,
__FUNCTION__
);
kfree
(
itmtouch
);
return
-
ENOMEM
;
}
usb_fill_int_urb
(
itmtouch
->
readurb
,
itmtouch
->
usbdev
,
pipe
,
itmtouch
->
rbuf
,
maxp
,
itmtouch_irq
,
itmtouch
,
endpoint
->
bInterval
);
usb_fill_int_urb
(
itmtouch
->
readurb
,
itmtouch
->
usbdev
,
pipe
,
itmtouch
->
rbuf
,
maxp
,
itmtouch_irq
,
itmtouch
,
endpoint
->
bInterval
);
input_register_device
(
&
itmtouch
->
inputdev
);
...
...
@@ -242,7 +235,7 @@ static int itmtouch_probe(struct usb_interface *intf, const struct usb_device_id
}
static
void
itmtouch_disconnect
(
struct
usb_interface
*
intf
)
{
{
struct
itmtouch_dev
*
itmtouch
=
usb_get_intfdata
(
intf
);
usb_set_intfdata
(
intf
,
NULL
);
...
...
@@ -258,11 +251,11 @@ static void itmtouch_disconnect(struct usb_interface *intf)
MODULE_DEVICE_TABLE
(
usb
,
itmtouch_ids
);
static
struct
usb_driver
itmtouch_driver
=
{
.
owner
=
THIS_MODULE
,
.
name
=
"itmtouch"
,
.
probe
=
itmtouch_probe
,
.
disconnect
=
itmtouch_disconnect
,
.
id_table
=
itmtouch_ids
,
.
owner
=
THIS_MODULE
,
.
name
=
"itmtouch"
,
.
probe
=
itmtouch_probe
,
.
disconnect
=
itmtouch_disconnect
,
.
id_table
=
itmtouch_ids
,
};
static
int
__init
itmtouch_init
(
void
)
...
...
drivers/usb/input/kbtab.c
浏览文件 @
05f091ab
...
...
@@ -79,12 +79,12 @@ static void kbtab_irq(struct urb *urb, struct pt_regs *regs)
/*input_report_key(dev, BTN_TOUCH , data[0] & 0x01);*/
input_report_key
(
dev
,
BTN_RIGHT
,
data
[
0
]
&
0x02
);
if
(
-
1
==
kb_pressure_click
){
if
(
-
1
==
kb_pressure_click
)
{
input_report_abs
(
dev
,
ABS_PRESSURE
,
kbtab
->
pressure
);
}
else
{
input_report_key
(
dev
,
BTN_LEFT
,
(
kbtab
->
pressure
>
kb_pressure_click
)
?
1
:
0
);
};
input_sync
(
dev
);
exit:
...
...
@@ -161,7 +161,7 @@ static int kbtab_probe(struct usb_interface *intf, const struct usb_device_id *i
kbtab
->
dev
.
absmax
[
ABS_X
]
=
0x2000
;
kbtab
->
dev
.
absmax
[
ABS_Y
]
=
0x1750
;
kbtab
->
dev
.
absmax
[
ABS_PRESSURE
]
=
0xff
;
kbtab
->
dev
.
absfuzz
[
ABS_X
]
=
4
;
kbtab
->
dev
.
absfuzz
[
ABS_Y
]
=
4
;
...
...
drivers/usb/input/powermate.c
浏览文件 @
05f091ab
...
...
@@ -10,7 +10,7 @@
* back to the host when polled by the USB controller.
*
* Testing with the knob I have has shown that it measures approximately 94 "clicks"
* for one full rotation. Testing with my High Speed Rotation Actuator (ok, it was
* for one full rotation. Testing with my High Speed Rotation Actuator (ok, it was
* a variable speed cordless electric drill) has shown that the device can measure
* speeds of up to 7 clicks either clockwise or anticlockwise between pollings from
* the host. If it counts more than 7 clicks before it is polled, it will wrap back
...
...
@@ -120,9 +120,9 @@ static void powermate_irq(struct urb *urb, struct pt_regs *regs)
/* Decide if we need to issue a control message and do so. Must be called with pm->lock taken */
static
void
powermate_sync_state
(
struct
powermate_device
*
pm
)
{
if
(
pm
->
requires_update
==
0
)
if
(
pm
->
requires_update
==
0
)
return
;
/* no updates are required */
if
(
pm
->
config
->
status
==
-
EINPROGRESS
)
if
(
pm
->
config
->
status
==
-
EINPROGRESS
)
return
;
/* an update is already in progress; it'll issue this update when it completes */
if
(
pm
->
requires_update
&
UPDATE_PULSE_ASLEEP
){
...
...
@@ -142,7 +142,7 @@ static void powermate_sync_state(struct powermate_device *pm)
2: multiply the speed
the argument only has an effect for operations 0 and 2, and ranges between
1 (least effect) to 255 (maximum effect).
thus, several states are equivalent and are coalesced into one state.
we map this onto a range from 0 to 510, with:
...
...
@@ -151,7 +151,7 @@ static void powermate_sync_state(struct powermate_device *pm)
256 -- 510 -- use multiple (510 = fastest).
Only values of 'arg' quite close to 255 are particularly useful/spectacular.
*/
*/
if
(
pm
->
pulse_speed
<
255
){
op
=
0
;
// divide
arg
=
255
-
pm
->
pulse_speed
;
...
...
@@ -199,14 +199,14 @@ static void powermate_config_complete(struct urb *urb, struct pt_regs *regs)
if
(
urb
->
status
)
printk
(
KERN_ERR
"powermate: config urb returned %d
\n
"
,
urb
->
status
);
spin_lock_irqsave
(
&
pm
->
lock
,
flags
);
powermate_sync_state
(
pm
);
spin_unlock_irqrestore
(
&
pm
->
lock
,
flags
);
}
/* Set the LED up as described and begin the sync with the hardware if required */
static
void
powermate_pulse_led
(
struct
powermate_device
*
pm
,
int
static_brightness
,
int
pulse_speed
,
static
void
powermate_pulse_led
(
struct
powermate_device
*
pm
,
int
static_brightness
,
int
pulse_speed
,
int
pulse_table
,
int
pulse_asleep
,
int
pulse_awake
)
{
unsigned
long
flags
;
...
...
@@ -229,7 +229,7 @@ static void powermate_pulse_led(struct powermate_device *pm, int static_brightne
/* mark state updates which are required */
if
(
static_brightness
!=
pm
->
static_brightness
){
pm
->
static_brightness
=
static_brightness
;
pm
->
requires_update
|=
UPDATE_STATIC_BRIGHTNESS
;
pm
->
requires_update
|=
UPDATE_STATIC_BRIGHTNESS
;
}
if
(
pulse_asleep
!=
pm
->
pulse_asleep
){
pm
->
pulse_asleep
=
pulse_asleep
;
...
...
@@ -246,7 +246,7 @@ static void powermate_pulse_led(struct powermate_device *pm, int static_brightne
}
powermate_sync_state
(
pm
);
spin_unlock_irqrestore
(
&
pm
->
lock
,
flags
);
}
...
...
@@ -257,19 +257,19 @@ static int powermate_input_event(struct input_dev *dev, unsigned int type, unsig
struct
powermate_device
*
pm
=
dev
->
private
;
if
(
type
==
EV_MSC
&&
code
==
MSC_PULSELED
){
/*
/*
bits 0- 7: 8 bits: LED brightness
bits 8-16: 9 bits: pulsing speed modifier (0 ... 510); 0-254 = slower, 255 = standard, 256-510 = faster.
bits 17-18: 2 bits: pulse table (0, 1, 2 valid)
bit 19: 1 bit : pulse whilst asleep?
bit 20: 1 bit : pulse constantly?
*/
*/
int
static_brightness
=
command
&
0xFF
;
// bits 0-7
int
pulse_speed
=
(
command
>>
8
)
&
0x1FF
;
// bits 8-16
int
pulse_table
=
(
command
>>
17
)
&
0x3
;
// bits 17-18
int
pulse_asleep
=
(
command
>>
19
)
&
0x1
;
// bit 19
int
pulse_awake
=
(
command
>>
20
)
&
0x1
;
// bit 20
powermate_pulse_led
(
pm
,
static_brightness
,
pulse_speed
,
pulse_table
,
pulse_asleep
,
pulse_awake
);
}
...
...
@@ -378,7 +378,7 @@ static int powermate_probe(struct usb_interface *intf, const struct usb_device_i
switch
(
le16_to_cpu
(
udev
->
descriptor
.
idProduct
))
{
case
POWERMATE_PRODUCT_NEW
:
pm
->
input
.
name
=
pm_name_powermate
;
break
;
case
POWERMATE_PRODUCT_OLD
:
pm
->
input
.
name
=
pm_name_soundknob
;
break
;
default:
default:
pm
->
input
.
name
=
pm_name_soundknob
;
printk
(
KERN_WARNING
"powermate: unknown product id %04x
\n
"
,
le16_to_cpu
(
udev
->
descriptor
.
idProduct
));
...
...
@@ -402,11 +402,11 @@ static int powermate_probe(struct usb_interface *intf, const struct usb_device_i
usb_make_path
(
udev
,
path
,
64
);
snprintf
(
pm
->
phys
,
64
,
"%s/input0"
,
path
);
printk
(
KERN_INFO
"input: %s on %s
\n
"
,
pm
->
input
.
name
,
pm
->
input
.
phys
);
/* force an update of everything */
pm
->
requires_update
=
UPDATE_PULSE_ASLEEP
|
UPDATE_PULSE_AWAKE
|
UPDATE_PULSE_MODE
|
UPDATE_STATIC_BRIGHTNESS
;
powermate_pulse_led
(
pm
,
0x80
,
255
,
0
,
1
,
0
);
// set default pulse parameters
usb_set_intfdata
(
intf
,
pm
);
return
0
;
}
...
...
drivers/usb/input/usbkbd.c
浏览文件 @
05f091ab
...
...
@@ -9,18 +9,18 @@
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*
* Should you need to contact me, the author, you can do so either by
* e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail:
* Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic
...
...
@@ -166,7 +166,7 @@ static void usb_kbd_led(struct urb *urb, struct pt_regs *regs)
if
(
urb
->
status
)
warn
(
"led urb status %d received"
,
urb
->
status
);
if
(
*
(
kbd
->
leds
)
==
kbd
->
newleds
)
return
;
...
...
@@ -230,7 +230,7 @@ static void usb_kbd_free_mem(struct usb_device *dev, struct usb_kbd *kbd)
usb_buffer_free
(
dev
,
1
,
kbd
->
leds
,
kbd
->
leds_dma
);
}
static
int
usb_kbd_probe
(
struct
usb_interface
*
iface
,
static
int
usb_kbd_probe
(
struct
usb_interface
*
iface
,
const
struct
usb_device_id
*
id
)
{
struct
usb_device
*
dev
=
interface_to_usbdev
(
iface
);
...
...
@@ -272,7 +272,7 @@ static int usb_kbd_probe(struct usb_interface *iface,
for
(
i
=
0
;
i
<
255
;
i
++
)
set_bit
(
usb_kbd_keycode
[
i
],
kbd
->
dev
.
keybit
);
clear_bit
(
0
,
kbd
->
dev
.
keybit
);
kbd
->
dev
.
private
=
kbd
;
kbd
->
dev
.
event
=
usb_kbd_event
;
kbd
->
dev
.
open
=
usb_kbd_open
;
...
...
@@ -294,7 +294,7 @@ static int usb_kbd_probe(struct usb_interface *iface,
sprintf
(
kbd
->
phys
,
"%s/input0"
,
path
);
kbd
->
dev
.
name
=
kbd
->
name
;
kbd
->
dev
.
phys
=
kbd
->
phys
;
kbd
->
dev
.
phys
=
kbd
->
phys
;
kbd
->
dev
.
id
.
bustype
=
BUS_USB
;
kbd
->
dev
.
id
.
vendor
=
le16_to_cpu
(
dev
->
descriptor
.
idVendor
);
kbd
->
dev
.
id
.
product
=
le16_to_cpu
(
dev
->
descriptor
.
idProduct
);
...
...
@@ -329,7 +329,7 @@ static int usb_kbd_probe(struct usb_interface *iface,
static
void
usb_kbd_disconnect
(
struct
usb_interface
*
intf
)
{
struct
usb_kbd
*
kbd
=
usb_get_intfdata
(
intf
);
usb_set_intfdata
(
intf
,
NULL
);
if
(
kbd
)
{
usb_kill_urb
(
kbd
->
irq
);
...
...
drivers/usb/input/usbmouse.c
浏览文件 @
05f091ab
...
...
@@ -9,18 +9,18 @@
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*
* Should you need to contact me, the author, you can do so either by
* e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail:
* Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic
...
...
@@ -132,19 +132,19 @@ static int usb_mouse_probe(struct usb_interface * intf, const struct usb_device_
interface
=
intf
->
cur_altsetting
;
if
(
interface
->
desc
.
bNumEndpoints
!=
1
)
if
(
interface
->
desc
.
bNumEndpoints
!=
1
)
return
-
ENODEV
;
endpoint
=
&
interface
->
endpoint
[
0
].
desc
;
if
(
!
(
endpoint
->
bEndpointAddress
&
0x80
))
if
(
!
(
endpoint
->
bEndpointAddress
&
0x80
))
return
-
ENODEV
;
if
((
endpoint
->
bmAttributes
&
3
)
!=
3
)
if
((
endpoint
->
bmAttributes
&
3
)
!=
3
)
return
-
ENODEV
;
pipe
=
usb_rcvintpipe
(
dev
,
endpoint
->
bEndpointAddress
);
maxp
=
usb_maxpacket
(
dev
,
pipe
,
usb_pipeout
(
pipe
));
if
(
!
(
mouse
=
kmalloc
(
sizeof
(
struct
usb_mouse
),
GFP_KERNEL
)))
if
(
!
(
mouse
=
kmalloc
(
sizeof
(
struct
usb_mouse
),
GFP_KERNEL
)))
return
-
ENOMEM
;
memset
(
mouse
,
0
,
sizeof
(
struct
usb_mouse
));
...
...
@@ -209,7 +209,7 @@ static int usb_mouse_probe(struct usb_interface * intf, const struct usb_device_
static
void
usb_mouse_disconnect
(
struct
usb_interface
*
intf
)
{
struct
usb_mouse
*
mouse
=
usb_get_intfdata
(
intf
);
usb_set_intfdata
(
intf
,
NULL
);
if
(
mouse
)
{
usb_kill_urb
(
mouse
->
irq
);
...
...
@@ -238,7 +238,7 @@ static struct usb_driver usb_mouse_driver = {
static
int
__init
usb_mouse_init
(
void
)
{
int
retval
=
usb_register
(
&
usb_mouse_driver
);
if
(
retval
==
0
)
if
(
retval
==
0
)
info
(
DRIVER_VERSION
":"
DRIVER_DESC
);
return
retval
;
}
...
...
drivers/usb/input/wacom.c
浏览文件 @
05f091ab
...
...
@@ -18,7 +18,7 @@
* v0.4 (sm) - Support for more Intuos models, menustrip
* relative mode, proximity.
* v0.5 (vp) - Big cleanup, nifty features removed,
*
they belong in userspace
* they belong in userspace
* v1.8 (vp) - Submit URB only when operating, moved to CVS,
* use input_report_key instead of report_btn and
* other cleanups
...
...
@@ -149,7 +149,7 @@ static void wacom_pl_irq(struct urb *urb, struct pt_regs *regs)
prox
=
data
[
1
]
&
0x40
;
input_regs
(
dev
,
regs
);
if
(
prox
)
{
pressure
=
(
signed
char
)((
data
[
7
]
<<
1
)
|
((
data
[
4
]
>>
2
)
&
1
));
...
...
@@ -545,7 +545,7 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs)
/* process general packets */
wacom_intuos_general
(
urb
);
if
((
data
[
1
]
&
0xbc
)
==
0xa8
||
(
data
[
1
]
&
0xbe
)
==
0xb0
)
{
/* 4D mouse or Lens cursor packets */
if
(
data
[
1
]
&
0x02
)
{
/* Rotation packet */
...
...
@@ -555,7 +555,7 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs)
}
else
{
if
((
data
[
1
]
&
0x10
)
==
0
)
{
/* 4D mouse packets */
if
((
data
[
1
]
&
0x10
)
==
0
)
{
/* 4D mouse packets */
input_report_key
(
dev
,
BTN_LEFT
,
data
[
8
]
&
0x01
);
input_report_key
(
dev
,
BTN_MIDDLE
,
data
[
8
]
&
0x02
);
...
...
@@ -567,11 +567,11 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs)
input_report_abs
(
dev
,
ABS_THROTTLE
,
(
data
[
8
]
&
0x08
)
?
-
t
:
t
);
}
else
{
if
(
wacom
->
tool
[
idx
]
==
BTN_TOOL_MOUSE
)
{
/* 2D mouse packets */
if
(
wacom
->
tool
[
idx
]
==
BTN_TOOL_MOUSE
)
{
/* 2D mouse packets */
input_report_key
(
dev
,
BTN_LEFT
,
data
[
8
]
&
0x04
);
input_report_key
(
dev
,
BTN_MIDDLE
,
data
[
8
]
&
0x08
);
input_report_key
(
dev
,
BTN_RIGHT
,
data
[
8
]
&
0x10
);
input_report_rel
(
dev
,
REL_WHEEL
,
input_report_rel
(
dev
,
REL_WHEEL
,
(
-
(
__u32
)(
data
[
8
]
&
0x01
)
+
(
__u32
)((
data
[
8
]
&
0x02
)
>>
1
)));
}
else
{
/* Lens cursor packets */
...
...
@@ -584,7 +584,7 @@ static void wacom_intuos_irq(struct urb *urb, struct pt_regs *regs)
}
}
}
input_report_key
(
dev
,
wacom
->
tool
[
idx
],
1
);
input_event
(
dev
,
EV_MSC
,
MSC_SERIAL
,
wacom
->
serial
[
idx
]);
input_sync
(
dev
);
...
...
@@ -705,20 +705,20 @@ static struct wacom_features wacom_features[] = {
{
"Wacom Penpartner"
,
7
,
5040
,
3780
,
255
,
32
,
0
,
wacom_penpartner_irq
},
{
"Wacom Graphire"
,
8
,
10206
,
7422
,
511
,
32
,
1
,
wacom_graphire_irq
},
{
"Wacom Graphire2 4x5"
,
8
,
10206
,
7422
,
511
,
32
,
1
,
wacom_graphire_irq
},
{
"Wacom Graphire2 5x7"
,
8
,
13918
,
10206
,
511
,
32
,
1
,
wacom_graphire_irq
},
{
"Wacom Graphire2 5x7"
,
8
,
13918
,
10206
,
511
,
32
,
1
,
wacom_graphire_irq
},
{
"Wacom Graphire3"
,
8
,
10208
,
7424
,
511
,
32
,
1
,
wacom_graphire_irq
},
{
"Wacom Graphire3 6x8"
,
8
,
16704
,
12064
,
511
,
32
,
1
,
wacom_graphire_irq
},
{
"Wacom Intuos 4x5"
,
10
,
12700
,
10600
,
1023
,
15
,
2
,
wacom_intuos_irq
},
{
"Wacom Intuos 6x8"
,
10
,
20320
,
16240
,
1023
,
15
,
2
,
wacom_intuos_irq
},
{
"Wacom Intuos 9x12"
,
10
,
30480
,
24060
,
1023
,
15
,
2
,
wacom_intuos_irq
},
{
"Wacom Intuos 12x12"
,
10
,
30480
,
31680
,
1023
,
15
,
2
,
wacom_intuos_irq
},
{
"Wacom Intuos 12x18"
,
10
,
45720
,
31680
,
1023
,
15
,
2
,
wacom_intuos_irq
},
{
"Wacom PL400"
,
8
,
5408
,
4056
,
255
,
32
,
3
,
wacom_pl_irq
},
{
"Wacom PL500"
,
8
,
6144
,
4608
,
255
,
32
,
3
,
wacom_pl_irq
},
{
"Wacom PL600"
,
8
,
6126
,
4604
,
255
,
32
,
3
,
wacom_pl_irq
},
{
"Wacom PL600SX"
,
8
,
6260
,
5016
,
255
,
32
,
3
,
wacom_pl_irq
},
{
"Wacom PL550"
,
8
,
6144
,
4608
,
511
,
32
,
3
,
wacom_pl_irq
},
{
"Wacom PL800"
,
8
,
7220
,
5780
,
511
,
32
,
3
,
wacom_pl_irq
},
{
"Wacom Intuos 4x5"
,
10
,
12700
,
10600
,
1023
,
15
,
2
,
wacom_intuos_irq
},
{
"Wacom Intuos 6x8"
,
10
,
20320
,
16240
,
1023
,
15
,
2
,
wacom_intuos_irq
},
{
"Wacom Intuos 9x12"
,
10
,
30480
,
24060
,
1023
,
15
,
2
,
wacom_intuos_irq
},
{
"Wacom Intuos 12x12"
,
10
,
30480
,
31680
,
1023
,
15
,
2
,
wacom_intuos_irq
},
{
"Wacom Intuos 12x18"
,
10
,
45720
,
31680
,
1023
,
15
,
2
,
wacom_intuos_irq
},
{
"Wacom PL400"
,
8
,
5408
,
4056
,
255
,
32
,
3
,
wacom_pl_irq
},
{
"Wacom PL500"
,
8
,
6144
,
4608
,
255
,
32
,
3
,
wacom_pl_irq
},
{
"Wacom PL600"
,
8
,
6126
,
4604
,
255
,
32
,
3
,
wacom_pl_irq
},
{
"Wacom PL600SX"
,
8
,
6260
,
5016
,
255
,
32
,
3
,
wacom_pl_irq
},
{
"Wacom PL550"
,
8
,
6144
,
4608
,
511
,
32
,
3
,
wacom_pl_irq
},
{
"Wacom PL800"
,
8
,
7220
,
5780
,
511
,
32
,
3
,
wacom_pl_irq
},
{
"Wacom Intuos2 4x5"
,
10
,
12700
,
10600
,
1023
,
15
,
2
,
wacom_intuos_irq
},
{
"Wacom Intuos2 6x8"
,
10
,
20320
,
16240
,
1023
,
15
,
2
,
wacom_intuos_irq
},
{
"Wacom Intuos2 9x12"
,
10
,
30480
,
24060
,
1023
,
15
,
2
,
wacom_intuos_irq
},
...
...
@@ -730,7 +730,7 @@ static struct wacom_features wacom_features[] = {
{
"Wacom Intuos3 6x8"
,
10
,
40640
,
30480
,
1023
,
15
,
4
,
wacom_intuos3_irq
},
{
"Wacom Intuos3 9x12"
,
10
,
60960
,
45720
,
1023
,
15
,
4
,
wacom_intuos3_irq
},
{
"Wacom Intuos2 6x8"
,
10
,
20320
,
16240
,
1023
,
15
,
2
,
wacom_intuos_irq
},
{
}
{
}
};
static
struct
usb_device_id
wacom_ids
[]
=
{
...
...
@@ -828,7 +828,7 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
wacom
->
dev
.
relbit
[
0
]
|=
BIT
(
REL_WHEEL
);
wacom
->
dev
.
absbit
[
0
]
|=
BIT
(
ABS_DISTANCE
);
wacom
->
dev
.
keybit
[
LONG
(
BTN_LEFT
)]
|=
BIT
(
BTN_LEFT
)
|
BIT
(
BTN_RIGHT
)
|
BIT
(
BTN_MIDDLE
);
wacom
->
dev
.
keybit
[
LONG
(
BTN_DIGI
)]
|=
BIT
(
BTN_TOOL_RUBBER
)
|
BIT
(
BTN_TOOL_MOUSE
)
|
BIT
(
BTN_STYLUS2
);
wacom
->
dev
.
keybit
[
LONG
(
BTN_DIGI
)]
|=
BIT
(
BTN_TOOL_RUBBER
)
|
BIT
(
BTN_TOOL_MOUSE
)
|
BIT
(
BTN_STYLUS2
);
break
;
case
4
:
/* new functions for Intuos3 */
...
...
@@ -842,13 +842,13 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
wacom
->
dev
.
mscbit
[
0
]
|=
BIT
(
MSC_SERIAL
);
wacom
->
dev
.
relbit
[
0
]
|=
BIT
(
REL_WHEEL
);
wacom
->
dev
.
keybit
[
LONG
(
BTN_LEFT
)]
|=
BIT
(
BTN_LEFT
)
|
BIT
(
BTN_RIGHT
)
|
BIT
(
BTN_MIDDLE
)
|
BIT
(
BTN_SIDE
)
|
BIT
(
BTN_EXTRA
);
wacom
->
dev
.
keybit
[
LONG
(
BTN_DIGI
)]
|=
BIT
(
BTN_TOOL_RUBBER
)
|
BIT
(
BTN_TOOL_MOUSE
)
|
BIT
(
BTN_TOOL_BRUSH
)
wacom
->
dev
.
keybit
[
LONG
(
BTN_DIGI
)]
|=
BIT
(
BTN_TOOL_RUBBER
)
|
BIT
(
BTN_TOOL_MOUSE
)
|
BIT
(
BTN_TOOL_BRUSH
)
|
BIT
(
BTN_TOOL_PENCIL
)
|
BIT
(
BTN_TOOL_AIRBRUSH
)
|
BIT
(
BTN_TOOL_LENS
)
|
BIT
(
BTN_STYLUS2
);
wacom
->
dev
.
absbit
[
0
]
|=
BIT
(
ABS_DISTANCE
)
|
BIT
(
ABS_WHEEL
)
|
BIT
(
ABS_TILT_X
)
|
BIT
(
ABS_TILT_Y
)
|
BIT
(
ABS_RZ
)
|
BIT
(
ABS_THROTTLE
);
break
;
case
3
:
wacom
->
dev
.
keybit
[
LONG
(
BTN_DIGI
)]
|=
BIT
(
BTN_STYLUS2
)
|
BIT
(
BTN_TOOL_RUBBER
);
wacom
->
dev
.
keybit
[
LONG
(
BTN_DIGI
)]
|=
BIT
(
BTN_STYLUS2
)
|
BIT
(
BTN_TOOL_RUBBER
);
break
;
}
...
...
drivers/usb/input/xpad.c
浏览文件 @
05f091ab
...
...
@@ -104,11 +104,11 @@ MODULE_DEVICE_TABLE (usb, xpad_table);
struct
usb_xpad
{
struct
input_dev
dev
;
/* input device interface */
struct
usb_device
*
udev
;
/* usb device */
struct
urb
*
irq_in
;
/* urb for interrupt in report */
unsigned
char
*
idata
;
/* input data */
dma_addr_t
idata_dma
;
char
phys
[
65
];
/* physical device path */
int
open_count
;
/* reference count */
};
...
...
@@ -128,35 +128,35 @@ static void xpad_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char *d
struct
input_dev
*
dev
=
&
xpad
->
dev
;
input_regs
(
dev
,
regs
);
/* left stick */
input_report_abs
(
dev
,
ABS_X
,
(
__s16
)
(((
__s16
)
data
[
13
]
<<
8
)
|
data
[
12
]));
input_report_abs
(
dev
,
ABS_Y
,
(
__s16
)
(((
__s16
)
data
[
15
]
<<
8
)
|
data
[
14
]));
/* right stick */
input_report_abs
(
dev
,
ABS_RX
,
(
__s16
)
(((
__s16
)
data
[
17
]
<<
8
)
|
data
[
16
]));
input_report_abs
(
dev
,
ABS_RY
,
(
__s16
)
(((
__s16
)
data
[
19
]
<<
8
)
|
data
[
18
]));
/* triggers left/right */
input_report_abs
(
dev
,
ABS_Z
,
data
[
10
]);
input_report_abs
(
dev
,
ABS_RZ
,
data
[
11
]);
/* digital pad */
input_report_abs
(
dev
,
ABS_HAT0X
,
!!
(
data
[
2
]
&
0x08
)
-
!!
(
data
[
2
]
&
0x04
));
input_report_abs
(
dev
,
ABS_HAT0Y
,
!!
(
data
[
2
]
&
0x02
)
-
!!
(
data
[
2
]
&
0x01
));
/* start/back buttons and stick press left/right */
input_report_key
(
dev
,
BTN_START
,
(
data
[
2
]
&
0x10
)
>>
4
);
input_report_key
(
dev
,
BTN_BACK
,
(
data
[
2
]
&
0x20
)
>>
5
);
input_report_key
(
dev
,
BTN_THUMBL
,
(
data
[
2
]
&
0x40
)
>>
6
);
input_report_key
(
dev
,
BTN_THUMBR
,
data
[
2
]
>>
7
);
/* "analog" buttons A, B, X, Y */
input_report_key
(
dev
,
BTN_A
,
data
[
4
]);
input_report_key
(
dev
,
BTN_B
,
data
[
5
]);
input_report_key
(
dev
,
BTN_X
,
data
[
6
]);
input_report_key
(
dev
,
BTN_Y
,
data
[
7
]);
/* "analog" buttons black, white */
input_report_key
(
dev
,
BTN_C
,
data
[
8
]);
input_report_key
(
dev
,
BTN_Z
,
data
[
9
]);
...
...
@@ -168,7 +168,7 @@ static void xpad_irq_in(struct urb *urb, struct pt_regs *regs)
{
struct
usb_xpad
*
xpad
=
urb
->
context
;
int
retval
;
switch
(
urb
->
status
)
{
case
0
:
/* success */
...
...
@@ -183,7 +183,7 @@ static void xpad_irq_in(struct urb *urb, struct pt_regs *regs)
dbg
(
"%s - nonzero urb status received: %d"
,
__FUNCTION__
,
urb
->
status
);
goto
exit
;
}
xpad_process_packet
(
xpad
,
0
,
xpad
->
idata
,
regs
);
exit:
...
...
@@ -196,23 +196,23 @@ static void xpad_irq_in(struct urb *urb, struct pt_regs *regs)
static
int
xpad_open
(
struct
input_dev
*
dev
)
{
struct
usb_xpad
*
xpad
=
dev
->
private
;
if
(
xpad
->
open_count
++
)
return
0
;
xpad
->
irq_in
->
dev
=
xpad
->
udev
;
if
(
usb_submit_urb
(
xpad
->
irq_in
,
GFP_KERNEL
))
{
xpad
->
open_count
--
;
return
-
EIO
;
}
return
0
;
}
static
void
xpad_close
(
struct
input_dev
*
dev
)
{
struct
usb_xpad
*
xpad
=
dev
->
private
;
if
(
!--
xpad
->
open_count
)
usb_kill_urb
(
xpad
->
irq_in
);
}
...
...
@@ -224,19 +224,19 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
struct
usb_endpoint_descriptor
*
ep_irq_in
;
char
path
[
64
];
int
i
;
for
(
i
=
0
;
xpad_device
[
i
].
idVendor
;
i
++
)
{
if
((
le16_to_cpu
(
udev
->
descriptor
.
idVendor
)
==
xpad_device
[
i
].
idVendor
)
&&
(
le16_to_cpu
(
udev
->
descriptor
.
idProduct
)
==
xpad_device
[
i
].
idProduct
))
break
;
}
if
((
xpad
=
kmalloc
(
sizeof
(
struct
usb_xpad
),
GFP_KERNEL
))
==
NULL
)
{
err
(
"cannot allocate memory for new pad"
);
return
-
ENOMEM
;
}
memset
(
xpad
,
0
,
sizeof
(
struct
usb_xpad
));
xpad
->
idata
=
usb_buffer_alloc
(
udev
,
XPAD_PKT_LEN
,
SLAB_ATOMIC
,
&
xpad
->
idata_dma
);
if
(
!
xpad
->
idata
)
{
...
...
@@ -251,18 +251,18 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
kfree
(
xpad
);
return
-
ENOMEM
;
}
ep_irq_in
=
&
intf
->
cur_altsetting
->
endpoint
[
0
].
desc
;
usb_fill_int_urb
(
xpad
->
irq_in
,
udev
,
usb_rcvintpipe
(
udev
,
ep_irq_in
->
bEndpointAddress
),
xpad
->
idata
,
XPAD_PKT_LEN
,
xpad_irq_in
,
xpad
,
ep_irq_in
->
bInterval
);
xpad
->
irq_in
->
transfer_dma
=
xpad
->
idata_dma
;
xpad
->
irq_in
->
transfer_flags
|=
URB_NO_TRANSFER_DMA_MAP
;
xpad
->
udev
=
udev
;
xpad
->
dev
.
id
.
bustype
=
BUS_USB
;
xpad
->
dev
.
id
.
vendor
=
le16_to_cpu
(
udev
->
descriptor
.
idVendor
);
xpad
->
dev
.
id
.
product
=
le16_to_cpu
(
udev
->
descriptor
.
idProduct
);
...
...
@@ -273,21 +273,21 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
xpad
->
dev
.
phys
=
xpad
->
phys
;
xpad
->
dev
.
open
=
xpad_open
;
xpad
->
dev
.
close
=
xpad_close
;
usb_make_path
(
udev
,
path
,
64
);
snprintf
(
xpad
->
phys
,
64
,
"%s/input0"
,
path
);
xpad
->
dev
.
evbit
[
0
]
=
BIT
(
EV_KEY
)
|
BIT
(
EV_ABS
);
for
(
i
=
0
;
xpad_btn
[
i
]
>=
0
;
i
++
)
set_bit
(
xpad_btn
[
i
],
xpad
->
dev
.
keybit
);
for
(
i
=
0
;
xpad_abs
[
i
]
>=
0
;
i
++
)
{
signed
short
t
=
xpad_abs
[
i
];
set_bit
(
t
,
xpad
->
dev
.
absbit
);
switch
(
t
)
{
case
ABS_X
:
case
ABS_Y
:
...
...
@@ -310,11 +310,11 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
break
;
}
}
input_register_device
(
&
xpad
->
dev
);
printk
(
KERN_INFO
"input: %s on %s"
,
xpad
->
dev
.
name
,
path
);
usb_set_intfdata
(
intf
,
xpad
);
return
0
;
}
...
...
@@ -322,7 +322,7 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id
static
void
xpad_disconnect
(
struct
usb_interface
*
intf
)
{
struct
usb_xpad
*
xpad
=
usb_get_intfdata
(
intf
);
usb_set_intfdata
(
intf
,
NULL
);
if
(
xpad
)
{
usb_kill_urb
(
xpad
->
irq_in
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录