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
Kirill Smelkov
linux
Commits
a3cbe10e
Commit
a3cbe10e
authored
Oct 01, 2012
by
Jiri Kosina
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'upstream' into for-linus
Conflicts: drivers/hid/usbhid/hid-quirks.c
parents
fa2bd301
86e6b77e
Changes
31
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
110 additions
and
229 deletions
+110
-229
drivers/hid/Kconfig
drivers/hid/Kconfig
+0
-1
drivers/hid/hid-a4tech.c
drivers/hid/hid-a4tech.c
+0
-1
drivers/hid/hid-apple.c
drivers/hid/hid-apple.c
+0
-1
drivers/hid/hid-aureal.c
drivers/hid/hid-aureal.c
+0
-1
drivers/hid/hid-belkin.c
drivers/hid/hid-belkin.c
+0
-1
drivers/hid/hid-cherry.c
drivers/hid/hid-cherry.c
+0
-1
drivers/hid/hid-core.c
drivers/hid/hid-core.c
+27
-8
drivers/hid/hid-cypress.c
drivers/hid/hid-cypress.c
+0
-1
drivers/hid/hid-debug.c
drivers/hid/hid-debug.c
+9
-3
drivers/hid/hid-ezkey.c
drivers/hid/hid-ezkey.c
+0
-1
drivers/hid/hid-gyration.c
drivers/hid/hid-gyration.c
+0
-1
drivers/hid/hid-holtekff.c
drivers/hid/hid-holtekff.c
+1
-2
drivers/hid/hid-ids.h
drivers/hid/hid-ids.h
+3
-2
drivers/hid/hid-lcpower.c
drivers/hid/hid-lcpower.c
+1
-1
drivers/hid/hid-lenovo-tpkbd.c
drivers/hid/hid-lenovo-tpkbd.c
+33
-114
drivers/hid/hid-lg.c
drivers/hid/hid-lg.c
+5
-6
drivers/hid/hid-lg4ff.c
drivers/hid/hid-lg4ff.c
+2
-2
drivers/hid/hid-microsoft.c
drivers/hid/hid-microsoft.c
+0
-1
drivers/hid/hid-monterey.c
drivers/hid/hid-monterey.c
+0
-1
drivers/hid/hid-ntrig.c
drivers/hid/hid-ntrig.c
+4
-4
drivers/hid/hid-petalynx.c
drivers/hid/hid-petalynx.c
+0
-1
drivers/hid/hid-primax.c
drivers/hid/hid-primax.c
+0
-25
drivers/hid/hid-prodikeys.c
drivers/hid/hid-prodikeys.c
+9
-9
drivers/hid/hid-samsung.c
drivers/hid/hid-samsung.c
+0
-1
drivers/hid/hid-sony.c
drivers/hid/hid-sony.c
+0
-1
drivers/hid/hid-sunplus.c
drivers/hid/hid-sunplus.c
+0
-1
drivers/hid/hid-wacom.c
drivers/hid/hid-wacom.c
+0
-1
drivers/hid/hid-waltop.c
drivers/hid/hid-waltop.c
+0
-29
drivers/hid/hidraw.c
drivers/hid/hidraw.c
+11
-4
drivers/hid/usbhid/hid-core.c
drivers/hid/usbhid/hid-core.c
+3
-3
drivers/hid/usbhid/hid-quirks.c
drivers/hid/usbhid/hid-quirks.c
+2
-1
No files found.
drivers/hid/Kconfig
View file @
a3cbe10e
...
...
@@ -307,7 +307,6 @@ config HID_LOGITECH
config HID_LOGITECH_DJ
tristate "Logitech Unifying receivers full support"
depends on HID_LOGITECH
default m
---help---
Say Y if you want support for Logitech Unifying receivers and devices.
Unifying receivers are capable of pairing up to 6 Logitech compliant
...
...
drivers/hid/hid-a4tech.c
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
*/
...
...
drivers/hid/hid-apple.c
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby <jirislaby@gmail.com>
*/
...
...
drivers/hid/hid-aureal.c
View file @
a3cbe10e
...
...
@@ -9,7 +9,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
*/
#include <linux/device.h>
...
...
drivers/hid/hid-belkin.c
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
*/
...
...
drivers/hid/hid-cherry.c
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
*/
...
...
drivers/hid/hid-core.c
View file @
a3cbe10e
...
...
@@ -126,7 +126,7 @@ static int open_collection(struct hid_parser *parser, unsigned type)
if
(
parser
->
collection_stack_ptr
==
HID_COLLECTION_STACK_SIZE
)
{
hid_err
(
parser
->
device
,
"collection stack overflow
\n
"
);
return
-
1
;
return
-
EINVAL
;
}
if
(
parser
->
device
->
maxcollection
==
parser
->
device
->
collection_size
)
{
...
...
@@ -134,7 +134,7 @@ static int open_collection(struct hid_parser *parser, unsigned type)
parser
->
device
->
collection_size
*
2
,
GFP_KERNEL
);
if
(
collection
==
NULL
)
{
hid_err
(
parser
->
device
,
"failed to reallocate collection array
\n
"
);
return
-
1
;
return
-
ENOMEM
;
}
memcpy
(
collection
,
parser
->
device
->
collection
,
sizeof
(
struct
hid_collection
)
*
...
...
@@ -170,7 +170,7 @@ static int close_collection(struct hid_parser *parser)
{
if
(
!
parser
->
collection_stack_ptr
)
{
hid_err
(
parser
->
device
,
"collection stack underflow
\n
"
);
return
-
1
;
return
-
EINVAL
;
}
parser
->
collection_stack_ptr
--
;
return
0
;
...
...
@@ -374,7 +374,7 @@ static int hid_parser_global(struct hid_parser *parser, struct hid_item *item)
case
HID_GLOBAL_ITEM_TAG_REPORT_SIZE
:
parser
->
global
.
report_size
=
item_udata
(
item
);
if
(
parser
->
global
.
report_size
>
96
)
{
if
(
parser
->
global
.
report_size
>
128
)
{
hid_err
(
parser
->
device
,
"invalid report_size %d
\n
"
,
parser
->
global
.
report_size
);
return
-
1
;
...
...
@@ -757,6 +757,7 @@ int hid_open_report(struct hid_device *device)
struct
hid_item
item
;
unsigned
int
size
;
__u8
*
start
;
__u8
*
buf
;
__u8
*
end
;
int
ret
;
static
int
(
*
dispatch_type
[])(
struct
hid_parser
*
parser
,
...
...
@@ -775,12 +776,21 @@ int hid_open_report(struct hid_device *device)
return
-
ENODEV
;
size
=
device
->
dev_rsize
;
buf
=
kmemdup
(
start
,
size
,
GFP_KERNEL
);
if
(
buf
==
NULL
)
return
-
ENOMEM
;
if
(
device
->
driver
->
report_fixup
)
start
=
device
->
driver
->
report_fixup
(
device
,
start
,
&
size
);
start
=
device
->
driver
->
report_fixup
(
device
,
buf
,
&
size
);
else
start
=
buf
;
device
->
rdesc
=
kmemdup
(
start
,
size
,
GFP_KERNEL
);
if
(
device
->
rdesc
==
NULL
)
start
=
kmemdup
(
start
,
size
,
GFP_KERNEL
);
kfree
(
buf
);
if
(
start
==
NULL
)
return
-
ENOMEM
;
device
->
rdesc
=
start
;
device
->
rsize
=
size
;
parser
=
vzalloc
(
sizeof
(
struct
hid_parser
));
...
...
@@ -1448,7 +1458,14 @@ void hid_disconnect(struct hid_device *hdev)
}
EXPORT_SYMBOL_GPL
(
hid_disconnect
);
/* a list of devices for which there is a specialized driver on HID bus */
/*
* A list of devices for which there is a specialized driver on HID bus.
*
* Please note that for multitouch devices (driven by hid-multitouch driver),
* there is a proper autodetection and autoloading in place (based on presence
* of HID_DG_CONTACTID), so those devices don't need to be added to this list,
* as we are doing the right thing in hid_scan_usage().
*/
static
const
struct
hid_device_id
hid_have_special_driver
[]
=
{
{
HID_USB_DEVICE
(
USB_VENDOR_ID_A4TECH
,
USB_DEVICE_ID_A4TECH_WCP32PU
)
},
{
HID_USB_DEVICE
(
USB_VENDOR_ID_A4TECH
,
USB_DEVICE_ID_A4TECH_X5_005D
)
},
...
...
@@ -1628,6 +1645,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
{
HID_USB_DEVICE
(
USB_VENDOR_ID_ORTEK
,
USB_DEVICE_ID_ORTEK_WKB2000
)
},
{
HID_USB_DEVICE
(
USB_VENDOR_ID_PETALYNX
,
USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE
)
},
{
HID_USB_DEVICE
(
USB_VENDOR_ID_PRIMAX
,
USB_DEVICE_ID_PRIMAX_KEYBOARD
)
},
#if IS_ENABLED(CONFIG_HID_ROCCAT)
{
HID_USB_DEVICE
(
USB_VENDOR_ID_ROCCAT
,
USB_DEVICE_ID_ROCCAT_KONE
)
},
{
HID_USB_DEVICE
(
USB_VENDOR_ID_ROCCAT
,
USB_DEVICE_ID_ROCCAT_ARVO
)
},
{
HID_USB_DEVICE
(
USB_VENDOR_ID_ROCCAT
,
USB_DEVICE_ID_ROCCAT_ISKU
)
},
...
...
@@ -1636,6 +1654,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
{
HID_USB_DEVICE
(
USB_VENDOR_ID_ROCCAT
,
USB_DEVICE_ID_ROCCAT_PYRA_WIRED
)
},
{
HID_USB_DEVICE
(
USB_VENDOR_ID_ROCCAT
,
USB_DEVICE_ID_ROCCAT_PYRA_WIRELESS
)
},
{
HID_USB_DEVICE
(
USB_VENDOR_ID_ROCCAT
,
USB_DEVICE_ID_ROCCAT_SAVU
)
},
#endif
{
HID_USB_DEVICE
(
USB_VENDOR_ID_SAITEK
,
USB_DEVICE_ID_SAITEK_PS1000
)
},
{
HID_USB_DEVICE
(
USB_VENDOR_ID_SAMSUNG
,
USB_DEVICE_ID_SAMSUNG_IR_REMOTE
)
},
{
HID_USB_DEVICE
(
USB_VENDOR_ID_SAMSUNG
,
USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE
)
},
...
...
drivers/hid/hid-cypress.c
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
*/
...
...
drivers/hid/hid-debug.c
View file @
a3cbe10e
...
...
@@ -911,15 +911,21 @@ static void hid_dump_input_mapping(struct hid_device *hid, struct seq_file *f)
}
static
int
hid_debug_rdesc_show
(
struct
seq_file
*
f
,
void
*
p
)
{
struct
hid_device
*
hdev
=
f
->
private
;
const
__u8
*
rdesc
=
hdev
->
rdesc
;
unsigned
rsize
=
hdev
->
rsize
;
int
i
;
if
(
!
rdesc
)
{
rdesc
=
hdev
->
dev_rdesc
;
rsize
=
hdev
->
dev_rsize
;
}
/* dump HID report descriptor */
for
(
i
=
0
;
i
<
hdev
->
rsize
;
i
++
)
seq_printf
(
f
,
"%02x "
,
hdev
->
rdesc
[
i
]);
for
(
i
=
0
;
i
<
rsize
;
i
++
)
seq_printf
(
f
,
"%02x "
,
rdesc
[
i
]);
seq_printf
(
f
,
"
\n\n
"
);
/* dump parsed data and input mappings */
...
...
drivers/hid/hid-ezkey.c
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
*/
...
...
drivers/hid/hid-gyration.c
View file @
a3cbe10e
...
...
@@ -4,7 +4,6 @@
* Copyright (c) 1999 Andreas Gal
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
* Copyright (c) 2006-2008 Jiri Kosina
*/
...
...
drivers/hid/hid-holtekff.c
View file @
a3cbe10e
...
...
@@ -100,8 +100,7 @@ static void holtekff_send(struct holtekff_device *holtekff,
holtekff
->
field
->
value
[
i
]
=
data
[
i
];
}
dbg_hid
(
"sending %02x %02x %02x %02x %02x %02x %02x
\n
"
,
data
[
0
],
data
[
1
],
data
[
2
],
data
[
3
],
data
[
4
],
data
[
5
],
data
[
6
]);
dbg_hid
(
"sending %*ph
\n
"
,
7
,
data
);
usbhid_submit_report
(
hid
,
holtekff
->
field
->
report
,
USB_DIR_OUT
);
}
...
...
drivers/hid/hid-ids.h
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
*/
/*
...
...
@@ -299,6 +298,9 @@
#define USB_VENDOR_ID_EZKEY 0x0518
#define USB_DEVICE_ID_BTC_8193 0x0002
#define USB_VENDOR_ID_FREESCALE 0x15A2
#define USB_DEVICE_ID_FREESCALE_MX28 0x004F
#define USB_VENDOR_ID_FRUCTEL 0x25B6
#define USB_DEVICE_ID_GAMETEL_MT_MODE 0x0002
...
...
@@ -656,7 +658,6 @@
#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH 0x3000
#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001 0x3001
#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008 0x3008
#define USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN 0x3001
#define USB_VENDOR_ID_ROCCAT 0x1e7d
#define USB_DEVICE_ID_ROCCAT_ARVO 0x30d4
...
...
drivers/hid/hid-lcpower.c
View file @
a3cbe10e
...
...
@@ -24,7 +24,7 @@ static int ts_input_mapping(struct hid_device *hdev, struct hid_input *hi,
struct
hid_field
*
field
,
struct
hid_usage
*
usage
,
unsigned
long
**
bit
,
int
*
max
)
{
if
((
usage
->
hid
&
HID_USAGE_PAGE
)
!=
0x0ffbc0000
)
if
((
usage
->
hid
&
HID_USAGE_PAGE
)
!=
HID_UP_LOGIVENDOR
)
return
0
;
switch
(
usage
->
hid
&
HID_USAGE
)
{
...
...
drivers/hid/hid-lenovo-tpkbd.c
View file @
a3cbe10e
...
...
@@ -56,9 +56,8 @@ static int tpkbd_input_mapping(struct hid_device *hdev,
static
int
tpkbd_features_set
(
struct
hid_device
*
hdev
)
{
struct
hid_report
*
report
;
struct
tpkbd_data_pointer
*
data_pointer
;
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
)
;
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
report
=
hdev
->
report_enum
[
HID_FEATURE_REPORT
].
report_id_hash
[
4
];
report
->
field
[
0
]
->
value
[
0
]
=
data_pointer
->
press_to_select
?
0x01
:
0x02
;
...
...
@@ -77,14 +76,8 @@ static ssize_t pointer_press_to_select_show(struct device *dev,
struct
device_attribute
*
attr
,
char
*
buf
)
{
struct
hid_device
*
hdev
;
struct
tpkbd_data_pointer
*
data_pointer
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
if
(
hdev
==
NULL
)
return
-
ENODEV
;
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
);
return
snprintf
(
buf
,
PAGE_SIZE
,
"%u
\n
"
,
data_pointer
->
press_to_select
);
}
...
...
@@ -94,16 +87,10 @@ static ssize_t pointer_press_to_select_store(struct device *dev,
const
char
*
buf
,
size_t
count
)
{
struct
hid_device
*
hdev
;
struct
tpkbd_data_pointer
*
data_pointer
;
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
)
;
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
)
;
int
value
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
if
(
hdev
==
NULL
)
return
-
ENODEV
;
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
if
(
kstrtoint
(
buf
,
10
,
&
value
))
return
-
EINVAL
;
if
(
value
<
0
||
value
>
1
)
...
...
@@ -119,14 +106,8 @@ static ssize_t pointer_dragging_show(struct device *dev,
struct
device_attribute
*
attr
,
char
*
buf
)
{
struct
hid_device
*
hdev
;
struct
tpkbd_data_pointer
*
data_pointer
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
if
(
hdev
==
NULL
)
return
-
ENODEV
;
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
);
return
snprintf
(
buf
,
PAGE_SIZE
,
"%u
\n
"
,
data_pointer
->
dragging
);
}
...
...
@@ -136,16 +117,10 @@ static ssize_t pointer_dragging_store(struct device *dev,
const
char
*
buf
,
size_t
count
)
{
struct
hid_device
*
hdev
;
struct
tpkbd_data_pointer
*
data_pointer
;
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
)
;
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
)
;
int
value
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
if
(
hdev
==
NULL
)
return
-
ENODEV
;
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
if
(
kstrtoint
(
buf
,
10
,
&
value
))
return
-
EINVAL
;
if
(
value
<
0
||
value
>
1
)
...
...
@@ -161,14 +136,8 @@ static ssize_t pointer_release_to_select_show(struct device *dev,
struct
device_attribute
*
attr
,
char
*
buf
)
{
struct
hid_device
*
hdev
;
struct
tpkbd_data_pointer
*
data_pointer
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
if
(
hdev
==
NULL
)
return
-
ENODEV
;
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
);
return
snprintf
(
buf
,
PAGE_SIZE
,
"%u
\n
"
,
data_pointer
->
release_to_select
);
}
...
...
@@ -178,16 +147,10 @@ static ssize_t pointer_release_to_select_store(struct device *dev,
const
char
*
buf
,
size_t
count
)
{
struct
hid_device
*
hdev
;
struct
tpkbd_data_pointer
*
data_pointer
;
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
)
;
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
)
;
int
value
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
if
(
hdev
==
NULL
)
return
-
ENODEV
;
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
if
(
kstrtoint
(
buf
,
10
,
&
value
))
return
-
EINVAL
;
if
(
value
<
0
||
value
>
1
)
...
...
@@ -203,14 +166,8 @@ static ssize_t pointer_select_right_show(struct device *dev,
struct
device_attribute
*
attr
,
char
*
buf
)
{
struct
hid_device
*
hdev
;
struct
tpkbd_data_pointer
*
data_pointer
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
if
(
hdev
==
NULL
)
return
-
ENODEV
;
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
);
return
snprintf
(
buf
,
PAGE_SIZE
,
"%u
\n
"
,
data_pointer
->
select_right
);
}
...
...
@@ -220,16 +177,10 @@ static ssize_t pointer_select_right_store(struct device *dev,
const
char
*
buf
,
size_t
count
)
{
struct
hid_device
*
hdev
;
struct
tpkbd_data_pointer
*
data_pointer
;
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
)
;
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
)
;
int
value
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
if
(
hdev
==
NULL
)
return
-
ENODEV
;
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
if
(
kstrtoint
(
buf
,
10
,
&
value
))
return
-
EINVAL
;
if
(
value
<
0
||
value
>
1
)
...
...
@@ -245,14 +196,8 @@ static ssize_t pointer_sensitivity_show(struct device *dev,
struct
device_attribute
*
attr
,
char
*
buf
)
{
struct
hid_device
*
hdev
;
struct
tpkbd_data_pointer
*
data_pointer
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
if
(
hdev
==
NULL
)
return
-
ENODEV
;
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
);
return
snprintf
(
buf
,
PAGE_SIZE
,
"%u
\n
"
,
data_pointer
->
sensitivity
);
...
...
@@ -263,16 +208,10 @@ static ssize_t pointer_sensitivity_store(struct device *dev,
const
char
*
buf
,
size_t
count
)
{
struct
hid_device
*
hdev
;
struct
tpkbd_data_pointer
*
data_pointer
;
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
)
;
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
)
;
int
value
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
if
(
hdev
==
NULL
)
return
-
ENODEV
;
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
if
(
kstrtoint
(
buf
,
10
,
&
value
)
||
value
<
1
||
value
>
255
)
return
-
EINVAL
;
...
...
@@ -286,14 +225,10 @@ static ssize_t pointer_press_speed_show(struct device *dev,
struct
device_attribute
*
attr
,
char
*
buf
)
{
struct
hid_device
*
hdev
;
struct
tpkbd_data_pointer
*
data_pointer
;
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
)
;
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
)
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
if
(
hdev
==
NULL
)
return
-
ENODEV
;
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
data_pointer
=
hid_get_drvdata
(
hdev
);
return
snprintf
(
buf
,
PAGE_SIZE
,
"%u
\n
"
,
data_pointer
->
press_speed
);
...
...
@@ -304,16 +239,10 @@ static ssize_t pointer_press_speed_store(struct device *dev,
const
char
*
buf
,
size_t
count
)
{
struct
hid_device
*
hdev
;
struct
tpkbd_data_pointer
*
data_pointer
;
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
)
;
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
)
;
int
value
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
if
(
hdev
==
NULL
)
return
-
ENODEV
;
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
if
(
kstrtoint
(
buf
,
10
,
&
value
)
||
value
<
1
||
value
>
255
)
return
-
EINVAL
;
...
...
@@ -370,15 +299,11 @@ static const struct attribute_group tpkbd_attr_group_pointer = {
static
enum
led_brightness
tpkbd_led_brightness_get
(
struct
led_classdev
*
led_cdev
)
{
struct
device
*
dev
;
struct
hid_device
*
hdev
;
struct
tpkbd_data_pointer
*
data_pointer
;
struct
device
*
dev
=
led_cdev
->
dev
->
parent
;
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
)
;
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
)
;
int
led_nr
=
0
;
dev
=
led_cdev
->
dev
->
parent
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
if
(
led_cdev
==
&
data_pointer
->
led_micmute
)
led_nr
=
1
;
...
...
@@ -390,16 +315,12 @@ static enum led_brightness tpkbd_led_brightness_get(
static
void
tpkbd_led_brightness_set
(
struct
led_classdev
*
led_cdev
,
enum
led_brightness
value
)
{
struct
device
*
dev
;
struct
hid_device
*
hdev
;
struct
device
*
dev
=
led_cdev
->
dev
->
parent
;
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
);
struct
hid_report
*
report
;
struct
tpkbd_data_pointer
*
data_pointer
;
int
led_nr
=
0
;
dev
=
led_cdev
->
dev
->
parent
;
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
if
(
led_cdev
==
&
data_pointer
->
led_micmute
)
led_nr
=
1
;
...
...
@@ -508,13 +429,11 @@ static int tpkbd_probe(struct hid_device *hdev,
static
void
tpkbd_remove_tp
(
struct
hid_device
*
hdev
)
{
struct
tpkbd_data_pointer
*
data_pointer
;
struct
tpkbd_data_pointer
*
data_pointer
=
hid_get_drvdata
(
hdev
)
;
sysfs_remove_group
(
&
hdev
->
dev
.
kobj
,
&
tpkbd_attr_group_pointer
);
data_pointer
=
(
struct
tpkbd_data_pointer
*
)
hid_get_drvdata
(
hdev
);
led_classdev_unregister
(
&
data_pointer
->
led_micmute
);
led_classdev_unregister
(
&
data_pointer
->
led_mute
);
...
...
drivers/hid/hid-lg.c
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
* Copyright (c) 2010 Hendrik Iben
*/
...
...
@@ -109,7 +108,7 @@ static __u8 dfp_rdesc_fixed[] = {
static
__u8
*
lg_report_fixup
(
struct
hid_device
*
hdev
,
__u8
*
rdesc
,
unsigned
int
*
rsize
)
{
struct
lg_drv_data
*
drv_data
=
(
struct
lg_drv_data
*
)
hid_get_drvdata
(
hdev
);
struct
lg_drv_data
*
drv_data
=
hid_get_drvdata
(
hdev
);
if
((
drv_data
->
quirks
&
LG_RDESC
)
&&
*
rsize
>=
90
&&
rdesc
[
83
]
==
0x26
&&
rdesc
[
84
]
==
0x8c
&&
rdesc
[
85
]
==
0x02
)
{
...
...
@@ -278,7 +277,7 @@ static int lg_input_mapping(struct hid_device *hdev, struct hid_input *hi,
0
,
0
,
0
,
0
,
0
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
194
,
0
,
0
,
0
};
struct
lg_drv_data
*
drv_data
=
(
struct
lg_drv_data
*
)
hid_get_drvdata
(
hdev
);
struct
lg_drv_data
*
drv_data
=
hid_get_drvdata
(
hdev
);
unsigned
int
hid
=
usage
->
hid
;
if
(
hdev
->
product
==
USB_DEVICE_ID_LOGITECH_RECEIVER
&&
...
...
@@ -319,7 +318,7 @@ static int lg_input_mapped(struct hid_device *hdev, struct hid_input *hi,
struct
hid_field
*
field
,
struct
hid_usage
*
usage
,
unsigned
long
**
bit
,
int
*
max
)
{
struct
lg_drv_data
*
drv_data
=
(
struct
lg_drv_data
*
)
hid_get_drvdata
(
hdev
);
struct
lg_drv_data
*
drv_data
=
hid_get_drvdata
(
hdev
);
if
((
drv_data
->
quirks
&
LG_BAD_RELATIVE_KEYS
)
&&
usage
->
type
==
EV_KEY
&&
(
field
->
flags
&
HID_MAIN_ITEM_RELATIVE
))
...
...
@@ -335,7 +334,7 @@ static int lg_input_mapped(struct hid_device *hdev, struct hid_input *hi,
static
int
lg_event
(
struct
hid_device
*
hdev
,
struct
hid_field
*
field
,
struct
hid_usage
*
usage
,
__s32
value
)
{
struct
lg_drv_data
*
drv_data
=
(
struct
lg_drv_data
*
)
hid_get_drvdata
(
hdev
);
struct
lg_drv_data
*
drv_data
=
hid_get_drvdata
(
hdev
);
if
((
drv_data
->
quirks
&
LG_INVERT_HWHEEL
)
&&
usage
->
code
==
REL_HWHEEL
)
{
input_event
(
field
->
hidinput
->
input
,
usage
->
type
,
usage
->
code
,
...
...
@@ -419,7 +418,7 @@ static int lg_probe(struct hid_device *hdev, const struct hid_device_id *id)
static
void
lg_remove
(
struct
hid_device
*
hdev
)
{
struct
lg_drv_data
*
drv_data
=
(
struct
lg_drv_data
*
)
hid_get_drvdata
(
hdev
);
struct
lg_drv_data
*
drv_data
=
hid_get_drvdata
(
hdev
);
if
(
drv_data
->
quirks
&
LG_FF4
)
lg4ff_deinit
(
hdev
);
...
...
drivers/hid/hid-lg4ff.c
View file @
a3cbe10e
...
...
@@ -423,7 +423,7 @@ static void lg4ff_led_set_brightness(struct led_classdev *led_cdev,
{
struct
device
*
dev
=
led_cdev
->
dev
->
parent
;
struct
hid_device
*
hid
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
lg_drv_data
*
drv_data
=
(
struct
lg_drv_data
*
)
hid_get_drvdata
(
hid
);
struct
lg_drv_data
*
drv_data
=
hid_get_drvdata
(
hid
);
struct
lg4ff_device_entry
*
entry
;
int
i
,
state
=
0
;
...
...
@@ -458,7 +458,7 @@ static enum led_brightness lg4ff_led_get_brightness(struct led_classdev *led_cde
{
struct
device
*
dev
=
led_cdev
->
dev
->
parent
;
struct
hid_device
*
hid
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
lg_drv_data
*
drv_data
=
(
struct
lg_drv_data
*
)
hid_get_drvdata
(
hid
);
struct
lg_drv_data
*
drv_data
=
hid_get_drvdata
(
hid
);
struct
lg4ff_device_entry
*
entry
;
int
i
,
value
=
0
;
...
...
drivers/hid/hid-microsoft.c
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
*/
...
...
drivers/hid/hid-monterey.c
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
*/
...
...
drivers/hid/hid-ntrig.c
View file @
a3cbe10e
...
...
@@ -882,10 +882,10 @@ static int ntrig_probe(struct hid_device *hdev, const struct hid_device_id *id)
nd
->
activate_slack
=
activate_slack
;
nd
->
act_state
=
activate_slack
;
nd
->
deactivate_slack
=
-
deactivate_slack
;
nd
->
sensor_logical_width
=
0
;
nd
->
sensor_logical_height
=
0
;
nd
->
sensor_physical_width
=
0
;
nd
->
sensor_physical_height
=
0
;
nd
->
sensor_logical_width
=
1
;
nd
->
sensor_logical_height
=
1
;
nd
->
sensor_physical_width
=
1
;
nd
->
sensor_physical_height
=
1
;
hid_set_drvdata
(
hdev
,
nd
);
...
...
drivers/hid/hid-petalynx.c
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
*/
...
...
drivers/hid/hid-primax.c
View file @
a3cbe10e
...
...
@@ -64,29 +64,6 @@ static int px_raw_event(struct hid_device *hid, struct hid_report *report,
return
0
;
}
static
int
px_probe
(
struct
hid_device
*
hid
,
const
struct
hid_device_id
*
id
)
{
int
ret
;
ret
=
hid_parse
(
hid
);
if
(
ret
)
{
hid_err
(
hid
,
"parse failed
\n
"
);
goto
fail
;
}
ret
=
hid_hw_start
(
hid
,
HID_CONNECT_DEFAULT
);
if
(
ret
)
hid_err
(
hid
,
"hw start failed
\n
"
);
fail:
return
ret
;
}
static
void
px_remove
(
struct
hid_device
*
hid
)
{
hid_hw_stop
(
hid
);
}
static
const
struct
hid_device_id
px_devices
[]
=
{
{
HID_USB_DEVICE
(
USB_VENDOR_ID_PRIMAX
,
USB_DEVICE_ID_PRIMAX_KEYBOARD
)
},
{
}
...
...
@@ -97,8 +74,6 @@ static struct hid_driver px_driver = {
.
name
=
"primax"
,
.
id_table
=
px_devices
,
.
raw_event
=
px_raw_event
,
.
probe
=
px_probe
,
.
remove
=
px_remove
,
};
static
int
__init
px_init
(
void
)
...
...
drivers/hid/hid-prodikeys.c
View file @
a3cbe10e
...
...
@@ -105,7 +105,7 @@ static ssize_t show_channel(struct device *dev,
struct
device_attribute
*
attr
,
char
*
buf
)
{
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
pk_device
*
pk
=
(
struct
pk_device
*
)
hid_get_drvdata
(
hdev
);
struct
pk_device
*
pk
=
hid_get_drvdata
(
hdev
);
dbg_hid
(
"pcmidi sysfs read channel=%u
\n
"
,
pk
->
pm
->
midi_channel
);
...
...
@@ -118,7 +118,7 @@ static ssize_t store_channel(struct device *dev,
struct
device_attribute
*
attr
,
const
char
*
buf
,
size_t
count
)
{
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
pk_device
*
pk
=
(
struct
pk_device
*
)
hid_get_drvdata
(
hdev
);
struct
pk_device
*
pk
=
hid_get_drvdata
(
hdev
);
unsigned
channel
=
0
;
...
...
@@ -142,7 +142,7 @@ static ssize_t show_sustain(struct device *dev,
struct
device_attribute
*
attr
,
char
*
buf
)
{
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
pk_device
*
pk
=
(
struct
pk_device
*
)
hid_get_drvdata
(
hdev
);
struct
pk_device
*
pk
=
hid_get_drvdata
(
hdev
);
dbg_hid
(
"pcmidi sysfs read sustain=%u
\n
"
,
pk
->
pm
->
midi_sustain
);
...
...
@@ -155,7 +155,7 @@ static ssize_t store_sustain(struct device *dev,
struct
device_attribute
*
attr
,
const
char
*
buf
,
size_t
count
)
{
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
pk_device
*
pk
=
(
struct
pk_device
*
)
hid_get_drvdata
(
hdev
);
struct
pk_device
*
pk
=
hid_get_drvdata
(
hdev
);
unsigned
sustain
=
0
;
...
...
@@ -181,7 +181,7 @@ static ssize_t show_octave(struct device *dev,
struct
device_attribute
*
attr
,
char
*
buf
)
{
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
pk_device
*
pk
=
(
struct
pk_device
*
)
hid_get_drvdata
(
hdev
);
struct
pk_device
*
pk
=
hid_get_drvdata
(
hdev
);
dbg_hid
(
"pcmidi sysfs read octave=%d
\n
"
,
pk
->
pm
->
midi_octave
);
...
...
@@ -194,7 +194,7 @@ static ssize_t store_octave(struct device *dev,
struct
device_attribute
*
attr
,
const
char
*
buf
,
size_t
count
)
{
struct
hid_device
*
hdev
=
container_of
(
dev
,
struct
hid_device
,
dev
);
struct
pk_device
*
pk
=
(
struct
pk_device
*
)
hid_get_drvdata
(
hdev
);
struct
pk_device
*
pk
=
hid_get_drvdata
(
hdev
);
int
octave
=
0
;
...
...
@@ -759,7 +759,7 @@ static int pk_input_mapping(struct hid_device *hdev, struct hid_input *hi,
struct
hid_field
*
field
,
struct
hid_usage
*
usage
,
unsigned
long
**
bit
,
int
*
max
)
{
struct
pk_device
*
pk
=
(
struct
pk_device
*
)
hid_get_drvdata
(
hdev
);
struct
pk_device
*
pk
=
hid_get_drvdata
(
hdev
);
struct
pcmidi_snd
*
pm
;
pm
=
pk
->
pm
;
...
...
@@ -777,7 +777,7 @@ static int pk_input_mapping(struct hid_device *hdev, struct hid_input *hi,
static
int
pk_raw_event
(
struct
hid_device
*
hdev
,
struct
hid_report
*
report
,
u8
*
data
,
int
size
)
{
struct
pk_device
*
pk
=
(
struct
pk_device
*
)
hid_get_drvdata
(
hdev
);
struct
pk_device
*
pk
=
hid_get_drvdata
(
hdev
);
int
ret
=
0
;
if
(
1
==
pk
->
pm
->
ifnum
)
{
...
...
@@ -858,7 +858,7 @@ static int pk_probe(struct hid_device *hdev, const struct hid_device_id *id)
static
void
pk_remove
(
struct
hid_device
*
hdev
)
{
struct
pk_device
*
pk
=
(
struct
pk_device
*
)
hid_get_drvdata
(
hdev
);
struct
pk_device
*
pk
=
hid_get_drvdata
(
hdev
);
struct
pcmidi_snd
*
pm
;
pm
=
pk
->
pm
;
...
...
drivers/hid/hid-samsung.c
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
* Copyright (c) 2010 Don Prince <dhprince.devel@yahoo.co.uk>
*
...
...
drivers/hid/hid-sony.c
View file @
a3cbe10e
...
...
@@ -4,7 +4,6 @@
* Copyright (c) 1999 Andreas Gal
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
* Copyright (c) 2006-2008 Jiri Kosina
*/
...
...
drivers/hid/hid-sunplus.c
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby
*/
...
...
drivers/hid/hid-wacom.c
View file @
a3cbe10e
...
...
@@ -5,7 +5,6 @@
* Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
* Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
* Copyright (c) 2006-2007 Jiri Kosina
* Copyright (c) 2007 Paul Walmsley
* Copyright (c) 2008 Jiri Slaby <jirislaby@gmail.com>
* Copyright (c) 2006 Andrew Zabolotny <zap@homelink.ru>
* Copyright (c) 2009 Bastien Nocera <hadess@hadess.net>
...
...
drivers/hid/hid-waltop.c
View file @
a3cbe10e
...
...
@@ -638,28 +638,6 @@ static __u8 sirius_battery_free_tablet_rdesc_fixed[] = {
0xC0
/* End Collection */
};
static
int
waltop_probe
(
struct
hid_device
*
hdev
,
const
struct
hid_device_id
*
id
)
{
int
ret
;
ret
=
hid_parse
(
hdev
);
if
(
ret
)
{
hid_err
(
hdev
,
"parse failed
\n
"
);
goto
err
;
}
ret
=
hid_hw_start
(
hdev
,
HID_CONNECT_DEFAULT
);
if
(
ret
)
{
hid_err
(
hdev
,
"hw start failed
\n
"
);
goto
err
;
}
return
0
;
err:
return
ret
;
}
static
__u8
*
waltop_report_fixup
(
struct
hid_device
*
hdev
,
__u8
*
rdesc
,
unsigned
int
*
rsize
)
{
...
...
@@ -776,11 +754,6 @@ static int waltop_raw_event(struct hid_device *hdev, struct hid_report *report,
return
0
;
}
static
void
waltop_remove
(
struct
hid_device
*
hdev
)
{
hid_hw_stop
(
hdev
);
}
static
const
struct
hid_device_id
waltop_devices
[]
=
{
{
HID_USB_DEVICE
(
USB_VENDOR_ID_WALTOP
,
USB_DEVICE_ID_WALTOP_SLIM_TABLET_5_8_INCH
)
},
...
...
@@ -803,10 +776,8 @@ MODULE_DEVICE_TABLE(hid, waltop_devices);
static
struct
hid_driver
waltop_driver
=
{
.
name
=
"waltop"
,
.
id_table
=
waltop_devices
,
.
probe
=
waltop_probe
,
.
report_fixup
=
waltop_report_fixup
,
.
raw_event
=
waltop_raw_event
,
.
remove
=
waltop_remove
,
};
static
int
__init
waltop_init
(
void
)
...
...
drivers/hid/hidraw.c
View file @
a3cbe10e
...
...
@@ -522,21 +522,28 @@ int __init hidraw_init(void)
if
(
result
<
0
)
{
pr_warn
(
"can't get major number
\n
"
);
result
=
0
;
goto
out
;
}
hidraw_class
=
class_create
(
THIS_MODULE
,
"hidraw"
);
if
(
IS_ERR
(
hidraw_class
))
{
result
=
PTR_ERR
(
hidraw_class
);
unregister_chrdev
(
hidraw_major
,
"hidraw"
);
goto
out
;
goto
error_cdev
;
}
cdev_init
(
&
hidraw_cdev
,
&
hidraw_ops
);
cdev_add
(
&
hidraw_cdev
,
dev_id
,
HIDRAW_MAX_DEVICES
);
result
=
cdev_add
(
&
hidraw_cdev
,
dev_id
,
HIDRAW_MAX_DEVICES
);
if
(
result
<
0
)
goto
error_class
;
out:
return
result
;
error_class:
class_destroy
(
hidraw_class
);
error_cdev:
unregister_chrdev_region
(
dev_id
,
HIDRAW_MAX_DEVICES
);
goto
out
;
}
void
hidraw_exit
(
void
)
...
...
drivers/hid/usbhid/hid-core.c
View file @
a3cbe10e
...
...
@@ -1415,20 +1415,20 @@ static int hid_post_reset(struct usb_interface *intf)
* configuration descriptors passed, we already know that
* the size of the HID report descriptor has not changed.
*/
rdesc
=
kmalloc
(
hid
->
rsize
,
GFP_KERNEL
);
rdesc
=
kmalloc
(
hid
->
dev_
rsize
,
GFP_KERNEL
);
if
(
!
rdesc
)
{
dbg_hid
(
"couldn't allocate rdesc memory (post_reset)
\n
"
);
return
1
;
}
status
=
hid_get_class_descriptor
(
dev
,
interface
->
desc
.
bInterfaceNumber
,
HID_DT_REPORT
,
rdesc
,
hid
->
rsize
);
HID_DT_REPORT
,
rdesc
,
hid
->
dev_
rsize
);
if
(
status
<
0
)
{
dbg_hid
(
"reading report descriptor failed (post_reset)
\n
"
);
kfree
(
rdesc
);
return
1
;
}
status
=
memcmp
(
rdesc
,
hid
->
rdesc
,
hid
->
rsize
);
status
=
memcmp
(
rdesc
,
hid
->
dev_rdesc
,
hid
->
dev_
rsize
);
kfree
(
rdesc
);
if
(
status
!=
0
)
{
dbg_hid
(
"report descriptor changed
\n
"
);
...
...
drivers/hid/usbhid/hid-quirks.c
View file @
a3cbe10e
...
...
@@ -70,12 +70,13 @@ static const struct hid_blacklist {
{
USB_VENDOR_ID_CH
,
USB_DEVICE_ID_CH_AXIS_295
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_DMI
,
USB_DEVICE_ID_DMI_ENC
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_ELO
,
USB_DEVICE_ID_ELO_TS2700
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_FREESCALE
,
USB_DEVICE_ID_FREESCALE_MX28
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_MGE
,
USB_DEVICE_ID_MGE_UPS
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_PIXART
,
USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN
,
HID_QUIRK_NO_INIT_REPORTS
},
{
USB_VENDOR_ID_PIXART
,
USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN1
,
HID_QUIRK_NO_INIT_REPORTS
},
{
USB_VENDOR_ID_PIXART
,
USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN2
,
HID_QUIRK_NO_INIT_REPORTS
},
{
USB_VENDOR_ID_PRODIGE
,
USB_DEVICE_ID_PRODIGE_CORDLESS
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_QUANTA
,
USB_DEVICE_ID_
PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_QUANTA
,
USB_DEVICE_ID_
QUANTA_OPTICAL_TOUCH_3001
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_QUANTA
,
USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_SENNHEISER
,
USB_DEVICE_ID_SENNHEISER_BTD500USB
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_SUN
,
USB_DEVICE_ID_RARITAN_KVM_DONGLE
,
HID_QUIRK_NOGET
},
...
...
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