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
3e097d12
Commit
3e097d12
authored
Sep 01, 2015
by
Jiri Kosina
Browse files
Options
Browse Files
Download
Plain Diff
Merge branches 'for-4.2/upstream-fixes-devm-fixed' and 'for-4.3/upstream' into for-linus
parents
0be01712
c9b57724
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
34 additions
and
12 deletions
+34
-12
drivers/hid/hid-core.c
drivers/hid/hid-core.c
+19
-0
drivers/hid/hid-ids.h
drivers/hid/hid-ids.h
+2
-1
drivers/hid/hid-input.c
drivers/hid/hid-input.c
+4
-1
drivers/hid/usbhid/hid-core.c
drivers/hid/usbhid/hid-core.c
+3
-2
drivers/hid/usbhid/hid-quirks.c
drivers/hid/usbhid/hid-quirks.c
+2
-1
drivers/hid/wacom_sys.c
drivers/hid/wacom_sys.c
+4
-7
No files found.
drivers/hid/hid-core.c
View file @
3e097d12
...
@@ -427,6 +427,7 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
...
@@ -427,6 +427,7 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
{
{
__u32
data
;
__u32
data
;
unsigned
n
;
unsigned
n
;
__u32
count
;
data
=
item_udata
(
item
);
data
=
item_udata
(
item
);
...
@@ -490,6 +491,24 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
...
@@ -490,6 +491,24 @@ static int hid_parser_local(struct hid_parser *parser, struct hid_item *item)
if
(
item
->
size
<=
2
)
if
(
item
->
size
<=
2
)
data
=
(
parser
->
global
.
usage_page
<<
16
)
+
data
;
data
=
(
parser
->
global
.
usage_page
<<
16
)
+
data
;
count
=
data
-
parser
->
local
.
usage_minimum
;
if
(
count
+
parser
->
local
.
usage_index
>=
HID_MAX_USAGES
)
{
/*
* We do not warn if the name is not set, we are
* actually pre-scanning the device.
*/
if
(
dev_name
(
&
parser
->
device
->
dev
))
hid_warn
(
parser
->
device
,
"ignoring exceeding usage max
\n
"
);
data
=
HID_MAX_USAGES
-
parser
->
local
.
usage_index
+
parser
->
local
.
usage_minimum
-
1
;
if
(
data
<=
0
)
{
hid_err
(
parser
->
device
,
"no more usage index available
\n
"
);
return
-
1
;
}
}
for
(
n
=
parser
->
local
.
usage_minimum
;
n
<=
data
;
n
++
)
for
(
n
=
parser
->
local
.
usage_minimum
;
n
<=
data
;
n
++
)
if
(
hid_add_usage
(
parser
,
n
))
{
if
(
hid_add_usage
(
parser
,
n
))
{
dbg_hid
(
"hid_add_usage failed
\n
"
);
dbg_hid
(
"hid_add_usage failed
\n
"
);
...
...
drivers/hid/hid-ids.h
View file @
3e097d12
...
@@ -922,7 +922,8 @@
...
@@ -922,7 +922,8 @@
#define USB_DEVICE_ID_TOUCHPACK_RTS 0x1688
#define USB_DEVICE_ID_TOUCHPACK_RTS 0x1688
#define USB_VENDOR_ID_TPV 0x25aa
#define USB_VENDOR_ID_TPV 0x25aa
#define USB_DEVICE_ID_TPV_OPTICAL_TOUCHSCREEN 0x8883
#define USB_DEVICE_ID_TPV_OPTICAL_TOUCHSCREEN_8882 0x8882
#define USB_DEVICE_ID_TPV_OPTICAL_TOUCHSCREEN_8883 0x8883
#define USB_VENDOR_ID_TURBOX 0x062a
#define USB_VENDOR_ID_TURBOX 0x062a
#define USB_DEVICE_ID_TURBOX_KEYBOARD 0x0201
#define USB_DEVICE_ID_TURBOX_KEYBOARD 0x0201
...
...
drivers/hid/hid-input.c
View file @
3e097d12
...
@@ -1166,8 +1166,11 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct
...
@@ -1166,8 +1166,11 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct
input_event
(
input
,
usage
->
type
,
usage
->
code
,
value
);
input_event
(
input
,
usage
->
type
,
usage
->
code
,
value
);
if
((
field
->
flags
&
HID_MAIN_ITEM_RELATIVE
)
&&
(
usage
->
type
==
EV_KEY
))
if
((
field
->
flags
&
HID_MAIN_ITEM_RELATIVE
)
&&
usage
->
type
==
EV_KEY
&&
value
)
{
input_sync
(
input
);
input_event
(
input
,
usage
->
type
,
usage
->
code
,
0
);
input_event
(
input
,
usage
->
type
,
usage
->
code
,
0
);
}
}
}
void
hidinput_report_event
(
struct
hid_device
*
hid
,
struct
hid_report
*
report
)
void
hidinput_report_event
(
struct
hid_device
*
hid
,
struct
hid_report
*
report
)
...
...
drivers/hid/usbhid/hid-core.c
View file @
3e097d12
...
@@ -164,7 +164,7 @@ static void hid_io_error(struct hid_device *hid)
...
@@ -164,7 +164,7 @@ static void hid_io_error(struct hid_device *hid)
if
(
time_after
(
jiffies
,
usbhid
->
stop_retry
))
{
if
(
time_after
(
jiffies
,
usbhid
->
stop_retry
))
{
/* Retries failed, so do a port reset unless we lack bandwidth*/
/* Retries failed, so do a port reset unless we lack bandwidth*/
if
(
test_bit
(
HID_NO_BANDWIDTH
,
&
usbhid
->
iofl
)
if
(
!
test_bit
(
HID_NO_BANDWIDTH
,
&
usbhid
->
iofl
)
&&
!
test_and_set_bit
(
HID_RESET_PENDING
,
&
usbhid
->
iofl
))
{
&&
!
test_and_set_bit
(
HID_RESET_PENDING
,
&
usbhid
->
iofl
))
{
schedule_work
(
&
usbhid
->
reset_work
);
schedule_work
(
&
usbhid
->
reset_work
);
...
@@ -710,7 +710,8 @@ int usbhid_open(struct hid_device *hid)
...
@@ -710,7 +710,8 @@ int usbhid_open(struct hid_device *hid)
* Wait 50 msec for the queue to empty before allowing events
* Wait 50 msec for the queue to empty before allowing events
* to go through hid.
* to go through hid.
*/
*/
msleep
(
50
);
if
(
res
==
0
&&
!
(
hid
->
quirks
&
HID_QUIRK_ALWAYS_POLL
))
msleep
(
50
);
clear_bit
(
HID_RESUME_RUNNING
,
&
usbhid
->
iofl
);
clear_bit
(
HID_RESUME_RUNNING
,
&
usbhid
->
iofl
);
}
}
done:
done:
...
...
drivers/hid/usbhid/hid-quirks.c
View file @
3e097d12
...
@@ -117,7 +117,8 @@ static const struct hid_blacklist {
...
@@ -117,7 +117,8 @@ static const struct hid_blacklist {
{
USB_VENDOR_ID_SUN
,
USB_DEVICE_ID_RARITAN_KVM_DONGLE
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_SUN
,
USB_DEVICE_ID_RARITAN_KVM_DONGLE
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_SYMBOL
,
USB_DEVICE_ID_SYMBOL_SCANNER_1
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_SYMBOL
,
USB_DEVICE_ID_SYMBOL_SCANNER_1
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_SYMBOL
,
USB_DEVICE_ID_SYMBOL_SCANNER_2
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_SYMBOL
,
USB_DEVICE_ID_SYMBOL_SCANNER_2
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_TPV
,
USB_DEVICE_ID_TPV_OPTICAL_TOUCHSCREEN
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_TPV
,
USB_DEVICE_ID_TPV_OPTICAL_TOUCHSCREEN_8882
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_TPV
,
USB_DEVICE_ID_TPV_OPTICAL_TOUCHSCREEN_8883
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_TURBOX
,
USB_DEVICE_ID_TURBOX_KEYBOARD
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_TURBOX
,
USB_DEVICE_ID_TURBOX_KEYBOARD
,
HID_QUIRK_NOGET
},
{
USB_VENDOR_ID_UCLOGIC
,
USB_DEVICE_ID_UCLOGIC_TABLET_KNA5
,
HID_QUIRK_MULTI_INPUT
},
{
USB_VENDOR_ID_UCLOGIC
,
USB_DEVICE_ID_UCLOGIC_TABLET_KNA5
,
HID_QUIRK_MULTI_INPUT
},
{
USB_VENDOR_ID_UCLOGIC
,
USB_DEVICE_ID_UCLOGIC_TABLET_TWA60
,
HID_QUIRK_MULTI_INPUT
},
{
USB_VENDOR_ID_UCLOGIC
,
USB_DEVICE_ID_UCLOGIC_TABLET_TWA60
,
HID_QUIRK_MULTI_INPUT
},
...
...
drivers/hid/wacom_sys.c
View file @
3e097d12
...
@@ -335,7 +335,7 @@ static int wacom_set_device_mode(struct hid_device *hdev, int report_id,
...
@@ -335,7 +335,7 @@ static int wacom_set_device_mode(struct hid_device *hdev, int report_id,
if
(
error
>=
0
)
if
(
error
>=
0
)
error
=
wacom_get_report
(
hdev
,
HID_FEATURE_REPORT
,
error
=
wacom_get_report
(
hdev
,
HID_FEATURE_REPORT
,
rep_data
,
length
,
1
);
rep_data
,
length
,
1
);
}
while
(
(
error
<
0
||
rep_data
[
1
]
!=
mode
)
&&
limit
++
<
WAC_MSG_RETRIES
);
}
while
(
error
>=
0
&&
rep_data
[
1
]
!=
mode
&&
limit
++
<
WAC_MSG_RETRIES
);
kfree
(
rep_data
);
kfree
(
rep_data
);
...
@@ -1149,12 +1149,9 @@ static void wacom_free_inputs(struct wacom *wacom)
...
@@ -1149,12 +1149,9 @@ static void wacom_free_inputs(struct wacom *wacom)
{
{
struct
wacom_wac
*
wacom_wac
=
&
(
wacom
->
wacom_wac
);
struct
wacom_wac
*
wacom_wac
=
&
(
wacom
->
wacom_wac
);
if
(
wacom_wac
->
pen_input
)
input_free_device
(
wacom_wac
->
pen_input
);
input_free_device
(
wacom_wac
->
pen_input
);
input_free_device
(
wacom_wac
->
touch_input
);
if
(
wacom_wac
->
touch_input
)
input_free_device
(
wacom_wac
->
pad_input
);
input_free_device
(
wacom_wac
->
touch_input
);
if
(
wacom_wac
->
pad_input
)
input_free_device
(
wacom_wac
->
pad_input
);
wacom_wac
->
pen_input
=
NULL
;
wacom_wac
->
pen_input
=
NULL
;
wacom_wac
->
touch_input
=
NULL
;
wacom_wac
->
touch_input
=
NULL
;
wacom_wac
->
pad_input
=
NULL
;
wacom_wac
->
pad_input
=
NULL
;
...
...
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