New issue
Advanced search Search tips

Issue 617976 link

Starred by 4 users

Issue metadata

Status: Verified
Owner:
Closed: Jul 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug-Regression



Sign in to add a comment

Logitech T650 Wireless Trackpad does not support multi-finger gestures on chell

Reported by robby.n....@gmail.com, Jun 7 2016

Issue description

Chrome Version: 50.0.2661.103 (64-bit)
Chrome OS Version: 7978.74.0 (Official Build) stable-channel chell
Chrome OS Platform: HP Chromebook 13 G1
Network info: N/A

Please specify Cr-* of the system to which this bug/feature applies (add
the label below).

Steps To Reproduce:
(1) Plug in Logitech Unifying Reciever
(2) Use Logitech Unifying App to Pair T650 Trackpad
(3) Complete Set Up

Expected Result: This device has worked just as expected (as in exactly like the built in trackpad on the device) on every Chromebook, Chromebox and Chromebase I've tried it with, and that is close to all of them.  Normally the trackpad behaves exactly like the built in trackpad in relation to multi-finger gestures and clicks.

Actual Result: On this Chromebook only (I have a few other devices I've tried it with just moments ago) the multi-finger gestures don't work.  2-finger clicks do nothing, two-finger scrolls don't follow "Australian Scrolling" although it is enabled.  Three-finger gestures don't work except 3 fingers upward, and that opens the search box (just like hitting the Windows key on other Windows devices).

How frequently does this problem reproduce? Always

What is the impact to the user, and is there a workaround? If so, what is
it?  No workaround.  I'm just not using it and using a regular mouse instead.

Please provide any additional information below. Attach a screen shot or
log if possible.


 
Components: Internals>Input>Touch>Pad
Cc: ka...@chromium.org adlr@chromium.org
Components: OS>Kernel
Labels: Needs-Feedback
Summary: Logitech T650 Wireless Trackpad does not support multi-finger gestures on chell (was: Logitech T650 Wireless Trackpad does not follow native trackpad behavior on HP 13 G1 but works on every other Chrome OS Device)
@robby - can you please file a feedback report while the touchpad is connected and just after trying some muti-finger gestures?

alt+shift+i.  Then reply this bug so we can link the two.

Comment 3 by adlr@chromium.org, Jun 10 2016

This is unfortunately working as intended unless someone wants to step up and get it working again. We were carrying forward patches for this device but they stopped applying cleanly.
Labels: -Needs-Feedback
Status: Available (was: Unconfirmed)
Can you point to the the patches you were carrying forward?

Comment 6 by adlr@chromium.org, Jul 8 2016

Owner: agoode@chromium.org
Status: Assigned (was: Available)
I don't want to miss a patch, but I can say that it's the patches that provide the files in drivers/hid that start with 'hid-logitech'. You can use kernel 3.10 as a reference: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/chromeos-3.10/drivers/hid/

I was pulling them forward, but then I ran into some issues with the most recent kernel versions and didn't see a clear way to resolve them, but I also didn't put too much effort in b/c we have a lot of other more urgent things.

If you can get these working, I would love to take them into our tree. Even better would be to get them upstream so that we don't need to keep doing this each release.
Thanks. I do love this trackpad so want to keep it working.

I'll see what I can do (no promises on time).
The device works correctly on my Fedora 24 machine, running kernel 4.6.3.

Does Chromium OS need anything special outside of the standard /dev/input/event ABS_MT_* events? Because it's working there.

So maybe things are already upstream? I will try a 4.4 kernel virtual machine. chell appears to be kernel 3.18, which may just not have support.


Indeed, I found it:

commit 586bdc4e4f15fec37dc37167d6f314ea94aa14d1
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date:   Tue Sep 30 13:18:33 2014 -0400

    HID: logitech-hidpp: Add Wireless Touchpad T650 support
    
    All the bits are now in place to add the support of the
    Touchpad T650.
    The creation/population of the input device is delayed until
    the device is ready.
    
    The T650 uses the special HID++ reporting protocol, so activate
    this on connect.
    
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Tested-by: Andrew de los Reyes <adlr@chromium.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>


$ git tag --contains 586bdc4e4f15fec37dc37167d6f314ea94aa14d1
v3.19-rc1
...


Missed it by that much.

After testing 4.4, the next strategy would be to try to backport.
Labels: -Type-Bug Type-Bug-Regression
Seems to work fine in amd64-generic. So 4.4 looks good.

Just need to backport :)

Comment 11 by adlr@chromium.org, Jul 8 2016

agoode, will you take a look at doing the backporting?
Yup. 3.18 for sure. Any others needed?

Comment 13 by adlr@chromium.org, Jul 8 2016

Looks like 3.14 has it, so 3.18 would be the only one, I think.

Thanks so much! Once you get this in let me know. It's low risk so if you want it going to stable channel sooner we can look into cherry-picking it.

Comment 14 by adlr@chromium.org, Jul 14 2016

agoode, I haven't seen any code reviews from you. Any chance of uploading the backport to 3.18? Thanks!
Working on this now. First I am building a 3.18 amd64-generic image, then I will do the backports.
There are something like 20 patches to backport. What's the best way to do it?

Probably want most of these:
https://github.com/torvalds/linux/commits/v4.4/drivers/hid/hid-logitech-hidpp.c


I'm looking at
https://www.chromium.org/chromium-os/how-tos-and-troubleshooting/kernel-faq#TOC-How-do-I-backport-an-upstream-patch-

I looks like I'd manually cherry-pick, but that seems tedious.

Comment 17 by adlr@chromium.org, Jul 15 2016

you should be able to add linus' tree as a remote, rebase the patches, and then (with some git fu i don't have) add a prefix to each subject (I think UPSTREAM, but could be wrong. you can git log to see). Then upload them all without any formatting changes and we should be able to do the review pretty quickly.
~/chromiumos/src/third_party/kernel/v4.4/drivers/hid ((2111d26...)) $ git log --reverse v3.18.. --pretty=format:"%h" hid-logitech-hidpp.c hid-logitech-dj.c   > ~/chromiumos/src/third_party/kernel/v3.18/z.txt
That makes the list of relevant commits, but there are 2 merges in there that are causing problems.
Making progress. I should have something soon.
I've just about got it working.

There are 30 commits. Should I squash them or make 30 reviews?

Comment 22 by adlr@chromium.org, Jul 15 2016

Nice! You want to avoid editing the commits you rebase onto 3.18. So, do not squash. If you absolutely need to edit a commit, that could be okay, but we'll need to review it more carefully. basically, we want to make it easy for future people to keep backporting more things.

Thanks for your efforts here!
Still haven't gotten it working. The trackpad doesn't match against the driver. Possibly some generic HID logic I need to alter.

I will also have to redo the ~30 commits to make sure I have the correct UPSTREAM vs BACKPORT labels. But first I want to get it working.
Found the missing patch. It's working now. I'll get the patches ready.

Comment 25 by adlr@chromium.org, Jul 18 2016

Status: Started (was: Assigned)
Just +2ed almost all the patches. Very minor comments on the other two.

Big thanks for doing this! It's rare when users complain and then deliver a fix themselves. Of course, not all users are chromium committers, heh :)
Project Member

Comment 26 by bugdroid1@chromium.org, Jul 19 2016

Labels: merge-merged-chromeos-3.18
The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/d72109101aeafcecaebef9f33c8e41bea44fe11c

commit d72109101aeafcecaebef9f33c8e41bea44fe11c
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue Sep 30 17:18:26 2014

UPSTREAM: HID: logitech-dj: merge header file into the source

There is no point in keeping the header in a separate file, nobody
but hid-logitech-dj should have access to its content.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 8cb3746a6ee28c7b4d061689e13b8e5be80b14cc)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: Ia5ece79f064b7ac6ea4ddabadd956aa9c0381d66
Reviewed-on: https://chromium-review.googlesource.com/361102
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/d72109101aeafcecaebef9f33c8e41bea44fe11c/drivers/hid/hid-logitech-dj.c
[delete] https://crrev.com/0f01bd9b1454182ac6a542c740f7c560d4373b22/drivers/hid/hid-logitech-dj.h

Project Member

Comment 27 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/0f01bd9b1454182ac6a542c740f7c560d4373b22

commit 0f01bd9b1454182ac6a542c740f7c560d4373b22
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue Sep 30 17:18:25 2014

UPSTREAM: HID: logitech-dj: rely on hid groups to separate receivers from dj devices

Several benefits here:
- we can drop the macro is_dj_device: I never been really conviced by
  this macro as we could fall into a null pointer anytime. Anyway time
  showed that this never happened.
- we can simplify the hid driver logitech-djdevice, and make it aware
  of any new receiver VID/PID.
- we can use the Wireless PID of the DJ device as the product id of the
  hid device, this way the sysfs will differentiate between different
  DJ devices.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tisssoires <benjamin.tissoires@redhat.com>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit d610274b0301e5ef35811fa736036d022f707564)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I09104b4edc43e8c584df4bef38e4271a9f187f9f
Reviewed-on: https://chromium-review.googlesource.com/361101
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/0f01bd9b1454182ac6a542c740f7c560d4373b22/drivers/hid/hid-logitech-dj.c
[modify] https://crrev.com/0f01bd9b1454182ac6a542c740f7c560d4373b22/drivers/hid/hid-logitech-dj.h
[modify] https://crrev.com/0f01bd9b1454182ac6a542c740f7c560d4373b22/include/linux/hid.h

Project Member

Comment 28 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/0919e1869c74115aecd482aca90a8757626b27ee

commit 0919e1869c74115aecd482aca90a8757626b27ee
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue Sep 30 17:18:24 2014

UPSTREAM: HID: core: do not scan reports if the group is already set

This allows the transport layer (I have in mind hid-logitech-dj and uhid)
to set the group before it is added to the hid bus. This way, it can
bypass the hid_scan_report() call, and choose in advance which driver
will handle the newly created hid device.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tisssoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 9578f41aeaee5010384f4f8484da1566e2ce4901)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: If10718822e70a00143127ea0207ff747683328d3
Reviewed-on: https://chromium-review.googlesource.com/361100
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/0919e1869c74115aecd482aca90a8757626b27ee/drivers/hid/hid-core.c

Project Member

Comment 29 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/7097ca19061ad27bb4bff060b6c618d6fa22711d

commit 7097ca19061ad27bb4bff060b6c618d6fa22711d
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Thu Sep 03 13:08:29 2015

BACKPORT: HID: logitech-hidpp: split HIDPP_QUIRK_DELAYED_INIT in two

HIDPP_QUIRK_DELAYED_INIT means two things currently:
- we want to delay the initialization process
- we do not want hid to create an input device based on the report
  descriptor.

This should actually be 2 different quirks so we can have special connect
events while still having HID creating the input for us.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 580a7e82f08c38837dbe08374d649329d3de698b)
Signed-off-by: Adam Goode <agoode@chromium.org>

 Conflicts:
	drivers/hid/hid-logitech-hidpp.c

Change-Id: I24bc4dba98e0c76c8ed45133ffdc8b54a060b97f
Reviewed-on: https://chromium-review.googlesource.com/361128
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/7097ca19061ad27bb4bff060b6c618d6fa22711d/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 30 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/435ebc82bbda5f803ae0c65907477dd5ad1ca742

commit 435ebc82bbda5f803ae0c65907477dd5ad1ca742
Author: Julia Lawall <Julia.Lawall@lip6.fr>
Date: Sun Apr 05 12:06:29 2015

UPSTREAM: HID: logitech-hidpp: fix error return code

Return a negative error code on failure.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
@@
identifier ret; expression e1,e2;
@@
(
if (\(ret < 0\|ret != 0\))
 { ... return ret; }
|
ret = 0
)
... when != ret = e1
    when != &ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}
// </smpl>

BUG= chromium:617976 
TEST=build

Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit b832da56024b33e6c7f06f766c59d90e4f377a9b)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I3a9c67217958394d5168efdb2b0a71ff6711176e
Reviewed-on: https://chromium-review.googlesource.com/361127
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/435ebc82bbda5f803ae0c65907477dd5ad1ca742/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 31 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/4b3fab216a1290a581e753583df35fcfdf2bd028

commit 4b3fab216a1290a581e753583df35fcfdf2bd028
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Thu Mar 26 16:41:57 2015

UPSTREAM: HID: logitech-hidpp: add a module parameter to keep firmware gestures

The Logitech T650 used to report 3 fingers swipes to the up as a press on the
Super key. When we switched the touchpad to the raw mode, we also disable such
firmware gesture and some users may rely on it.

Unfortunately, 3 finger swipes are still not supported in most of the Linux
environments, which means that we disabled a feature of the touchpad.

Allow users to revert the raw reporting mode and keep going with the firmware
gestures by providing a new module parameter.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 9188dbaed68a4b23dc96eba165265c08caa7dc2a)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I547a7c9da954cd56620be3cef25e6010dcec1145
Reviewed-on: https://chromium-review.googlesource.com/361126
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/4b3fab216a1290a581e753583df35fcfdf2bd028/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 32 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/7cb3275fe82719e829e2944d5157d4e65042dce0

commit 7cb3275fe82719e829e2944d5157d4e65042dce0
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Thu Jan 08 19:37:12 2015

UPSTREAM: HID: logitech-hidpp: store the name of the device in struct hidpp

If a disconnect occurs while getting the actual name of the device
(which can take several HID transactions), the name of the device will
be the hid name, provided by the Unifying Receiver.
This means that in some cases, the user space will see a different
name that what it usually sees when there is no disconnect.

We should store the name of the device in the struct hidpp. That way,
if a disconnect occurs while we are accessing the name,
hidpp_connect_event() can fail, and the input node is not created.

The input node will be created only if we have a connection which
lasts long enough to retrieve all the requested information:
name, protocol, and specific configuration.

BUG= chromium:617976 
TEST=build

Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Tested-by: Peter Wu <peter@lekensteyn.nl>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 005b3f574a0a53f476a62da5c861c1c9bf8177b7)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: Ia29a1485156d4e01134a1dda60a0ecd286109cc1
Reviewed-on: https://chromium-review.googlesource.com/361125
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/7cb3275fe82719e829e2944d5157d4e65042dce0/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 33 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/b4c1fcb4e650be8f3fe7ee0ae11055b35fc630b9

commit b4c1fcb4e650be8f3fe7ee0ae11055b35fc630b9
Author: Peter Wu <peter@lekensteyn.nl>
Date: Tue Dec 16 00:50:16 2014

UPSTREAM: HID: logitech-hidpp: avoid unintended fall-through

Add a return to avoid a fall-through. Introduced in commit
57ac86cf52e903d9e3e0f12b34c814cce6b65550 ("HID: logitech-hidpp: add
support of the first Logitech Wireless Touchpad").

BUG= chromium:617976 
TEST=build

Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 8abd820503e4befb28d0722f8712bdbec57e63a8)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I8b5e2041974cfde9b17f4a8dc4452d00301dd792
Reviewed-on: https://chromium-review.googlesource.com/361124
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/b4c1fcb4e650be8f3fe7ee0ae11055b35fc630b9/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 34 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/c9a3135bb5f46db72f5f8de805a7aa77b460c3fd

commit c9a3135bb5f46db72f5f8de805a7aa77b460c3fd
Author: Peter Wu <peter@lekensteyn.nl>
Date: Tue Dec 16 00:50:14 2014

UPSTREAM: HID: logitech-hidpp: detect HID++ 2.0 errors too

Devices speaking HID++ 2.0 report a different error code (0xff). Detect
these errors too to avoid 5 second delays when the device reports an
error. Caught by... well, a bug in the QEMU emulation of this receiver.

Renamed fap to rap for HID++ 1.0 errors because it is more logical,
it has no functional difference.

BUG= chromium:617976 
TEST=build

Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit f677bb150c2f7b96ebcd377cd722e9d2649e9400)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I08191e0a69ef64f8fa6d5d1dff356ed495645ca8
Reviewed-on: https://chromium-review.googlesource.com/361123
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/c9a3135bb5f46db72f5f8de805a7aa77b460c3fd/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 35 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/177ace5d322d1b681405bba9751f1bdef6fdcbe5

commit 177ace5d322d1b681405bba9751f1bdef6fdcbe5
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Thu Dec 11 22:39:59 2014

UPSTREAM: HID: logitech-hidpp: prefix the name with "Logitech"

Current names are reported as "K750", "M705", and it can be misleading
for the users when they look at their input device list.

Prefixing the names with "Logitech " makes things better.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit b1ac9487c824a212f3b5bb80df5ac578243b0e21)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: If4735165b4b032c7e3bfe904f39a30e0d210c1e6
Reviewed-on: https://chromium-review.googlesource.com/361122
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/177ace5d322d1b681405bba9751f1bdef6fdcbe5/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 36 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/c00c49641924541e0acd4aac3e22cc65584b0d9e

commit c00c49641924541e0acd4aac3e22cc65584b0d9e
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue Dec 16 22:06:01 2014

UPSTREAM: HID: logitech-hidpp: bail out if wtp_connect fails

If wtp_connect() fails, that means most of the time that the device has
been disconnected. Subsequent attempts to contact the device will fail
too, so it's simpler to bail out earlier.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit bf159447537ed234afb569f91f5fd8c54ffa4c36)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: Iace3f90e151041dcb4ea18595be35d89914c0081
Reviewed-on: https://chromium-review.googlesource.com/361121
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/c00c49641924541e0acd4aac3e22cc65584b0d9e/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 37 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/f8830301dbceb17c099209b8cf67d606586ad695

commit f8830301dbceb17c099209b8cf67d606586ad695
Author: Peter Wu <peter@lekensteyn.nl>
Date: Tue Dec 16 23:23:51 2014

UPSTREAM: HID: logitech-hidpp: separate HID++ from WTP processing

Previously wtp_raw_event would be called through
hidpp_raw_hidpp_event (for the touchpad report) and hidpp_raw_event
(for the mouse report).

This patch removes one calling surface, making a clearer distinction
between "generic HID++ processing" (matching internal reports) and
device-specific event processing.

BUG= chromium:617976 
TEST=build

Suggested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit e529fea919872c6568bbda7873c64ac5d807ee83)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: Ic50626b15dd71d70553de65d6b27c4d50cb84bb8
Reviewed-on: https://chromium-review.googlesource.com/361120
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/f8830301dbceb17c099209b8cf67d606586ad695/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 38 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/241fdcae48648baa3bc28bb68353e85045dea987

commit 241fdcae48648baa3bc28bb68353e85045dea987
Author: Peter Wu <peter@lekensteyn.nl>
Date: Tue Dec 16 15:55:22 2014

UPSTREAM: HID: logitech-hidpp: check WTP report length

Malicious USB devices can send bogus reports smaller than the expected
buffer size. Ensure that the length for WTP reports is valid to avoid
reading out of bounds.

BUG= chromium:617976 
TEST=build

Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 0b3f6569a560aa68c9c50cae0e1bc401f7ee699f)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I6ab4d28e70b02e63c86c1e87089a2df374816e9c
Reviewed-on: https://chromium-review.googlesource.com/361119
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/241fdcae48648baa3bc28bb68353e85045dea987/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 39 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/3581fa76a8cd225d2079cac8ba979cf08a0bef5b

commit 3581fa76a8cd225d2079cac8ba979cf08a0bef5b
Author: Peter Wu <peter@lekensteyn.nl>
Date: Tue Dec 16 15:55:21 2014

UPSTREAM: HID: logitech-dj: check report length

Malicious USB devices can send bogus reports smaller than the expected
buffer size. Ensure that the length is valid to avoid reading out of
bounds.

BUG= chromium:617976 
TEST=build

Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit f254ae938ea479739572790a4e9b0ca86d16249f)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I7d30af3d19f579a91483d6efe2bda5cf25d5e6d4
Reviewed-on: https://chromium-review.googlesource.com/361118
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/3581fa76a8cd225d2079cac8ba979cf08a0bef5b/drivers/hid/hid-logitech-dj.c

Project Member

Comment 40 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/78184a5413f217908440130b8905426858dcc70c

commit 78184a5413f217908440130b8905426858dcc70c
Author: Peter Wu <peter@lekensteyn.nl>
Date: Thu Dec 11 12:51:20 2014

UPSTREAM: HID: logitech-hidpp: disable io in probe error path

Balance a hid_device_io_start() call with hid_device_io_stop() in the
error path. This avoids processing of HID reports when the probe fails
which possibly leads to invalid memory access in hid_device_probe() as
report_enum->report_id_hash might already be freed via
hid_close_report().

hid_set_drvdata() is called before wtp_allocate, be consistent and clear
drvdata too on the error path of wtp_allocate.

BUG= chromium:617976 
TEST=build

Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit f486d9dbcc8bc2fc14aac0bf6e24637485107496)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: If4069b002e2cf8bcbf2a03a6862aa2b1f57fd6d6
Reviewed-on: https://chromium-review.googlesource.com/361117
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/78184a5413f217908440130b8905426858dcc70c/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 41 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/58ef517286e70d174dd8a29fb5aada2ec995c598

commit 58ef517286e70d174dd8a29fb5aada2ec995c598
Author: Peter Wu <peter@lekensteyn.nl>
Date: Thu Dec 11 12:51:19 2014

UPSTREAM: HID: logitech-hidpp: add boundary check for name retrieval

The HID response has a limited size. Do not trust the value returned by
hardware, check that it really fits in the message.

BUG= chromium:617976 
TEST=build

Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 3a034a7a7d61c30809255c1fc27d47d52c8c1bb6)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I238afd89c667dc58ce9ca0607da536e573220fe4
Reviewed-on: https://chromium-review.googlesource.com/361116
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/58ef517286e70d174dd8a29fb5aada2ec995c598/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 42 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/a082e53abe98f59d698f4999340e0754e1d1973f

commit a082e53abe98f59d698f4999340e0754e1d1973f
Author: Peter Wu <peter@lekensteyn.nl>
Date: Thu Dec 11 12:51:18 2014

UPSTREAM: HID: logitech-hidpp: check name retrieval return code

hidpp_devicenametype_get_device_name() may return a negative value on
protocol errors (for example, when the device is powered off).
Explicitly check this condition to avoid a long-running loop.

(0 cannot be returned as __name_length - index > 0, but check for it
anyway as it would otherwise result in an infinite loop.)

BUG= chromium:617976 
TEST=build

Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 1430ee73b566a30bc210501d1e0e99c519707f1e)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: Ib8f18a58e2395683fbc38564046633b98443dc9d
Reviewed-on: https://chromium-review.googlesource.com/361115
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/a082e53abe98f59d698f4999340e0754e1d1973f/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 43 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/7c563c91609bbfe5931f6a93c93412c8ded324b3

commit 7c563c91609bbfe5931f6a93c93412c8ded324b3
Author: Peter Wu <peter@lekensteyn.nl>
Date: Thu Dec 11 12:51:17 2014

UPSTREAM: HID: logitech-hidpp: do not return the name length

We do not make any use of the actual name length get through
hidpp_get_device_name(). Original patch by Benjamin Tissoires, this
patch also replaces a (now) unnecessary goto by return NULL.

BUG= chromium:617976 
TEST=build

Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 02cc097e62d51bf6e5cb4209ca90d9bf68e358b5)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I6d6b5485baeed4b21a1ea781c851db281fbded0e
Reviewed-on: https://chromium-review.googlesource.com/361114
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/7c563c91609bbfe5931f6a93c93412c8ded324b3/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 44 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/672263f14cb03e2bc3b9df55891190ef08adaf14

commit 672263f14cb03e2bc3b9df55891190ef08adaf14
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Mon Nov 03 21:09:59 2014

UPSTREAM: HID: logitech-hidpp: 2 fixes in hidpp_root_get_protocol_version()

- remove the constant '1'
- when the device is not connected, the protocol error
  HIDPP_ERROR_RESOURCE_ERROR is raised. We should not warn the user about
  it because it is somewhat expected as an answer when we check if the
  device is connected.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 552f12eb68440a0328dc9929066f6d0321a75874)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I785d9c09c3f821fb7c8a494f64cba36b05c831d1
Reviewed-on: https://chromium-review.googlesource.com/361113
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/672263f14cb03e2bc3b9df55891190ef08adaf14/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 45 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/f69d65d28082c8dd9103f5c2b64b7bd63ac340d8

commit f69d65d28082c8dd9103f5c2b64b7bd63ac340d8
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Mon Nov 03 21:09:58 2014

UPSTREAM: HID: logitech-hidpp: fix negated returns

Reported by Dan Carpenter:

drivers/hid/hid-logitech-hidpp.c:359 hidpp_root_get_protocol_version() warn: should this return really be negated?
drivers/hid/hid-logitech-hidpp.c:398 hidpp_devicenametype_get_count() warn: should this return really be negated?
drivers/hid/hid-logitech-hidpp.c:417 hidpp_devicenametype_get_device_name() warn: should this return really be negated?
drivers/hid/hid-logitech-hidpp.c:524 hidpp_touchpad_get_raw_info() warn: should this return really be negated?

The problem lies in hidpp_send_message_sync() which can return 2 types of
errors depending of their sign. Adding a comment there to clarify what is
happening.

To solve that, print an error in case of a protocol problem, and raise
-EPROTO instead.

BUG= chromium:617976 
TEST=build

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 8c9952b26b2be25311706082598e5e176eb92748)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I581ed4651ab01d0bc9323b5532613ca30f8c7e01
Reviewed-on: https://chromium-review.googlesource.com/361112
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/f69d65d28082c8dd9103f5c2b64b7bd63ac340d8/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 46 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/de48f9a69004e9f9da9cdf7905bdee316b4056d2

commit de48f9a69004e9f9da9cdf7905bdee316b4056d2
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date: Fri Oct 31 09:14:39 2014

UPSTREAM: HID: logitech-hidpp: leaks and NULL dereferences

Shift the allocation down a few lines to avoid a memory leak and also
add a check for allocation failure.

BUG= chromium:617976 
TEST=build

Fixes: 2f31c5252910 ('HID: Introduce hidpp, a module to handle Logitech hid++
devices')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 3e7830ceb94cd06c05832a0d53cf324db3792418)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I6a1eb7615bc5913b6a40f6c2e6530a5d537a09f7
Reviewed-on: https://chromium-review.googlesource.com/361111
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/de48f9a69004e9f9da9cdf7905bdee316b4056d2/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 47 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/b1ad965dfc1e654e04afb1bf1d810c3a52a54548

commit b1ad965dfc1e654e04afb1bf1d810c3a52a54548
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue Sep 30 17:18:34 2014

UPSTREAM: HID: logitech-hidpp: add support of the first Logitech Wireless Touchpad

This touchpad differs from the T650 in several ways:
- the resolution is not correctly returned by the device
- it presents physical buttons, so the button flag in the raw touch report
  is not filled.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 57ac86cf52e903d9e3e0f12b34c814cce6b65550)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: Id83f7f9da860aa3b158c9ee28e5bc4d7309d2518
Reviewed-on: https://chromium-review.googlesource.com/361110
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/b1ad965dfc1e654e04afb1bf1d810c3a52a54548/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 48 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/cec491a230022f989f2f02c623cb91c86eef6bf4

commit cec491a230022f989f2f02c623cb91c86eef6bf4
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue Sep 30 17:18:33 2014

UPSTREAM: HID: logitech-hidpp: Add Wireless Touchpad T650 support

All the bits are now in place to add the support of the
Touchpad T650.
The creation/population of the input device is delayed until
the device is ready.

The T650 uses the special HID++ reporting protocol, so activate
this on connect.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 586bdc4e4f15fec37dc37167d6f314ea94aa14d1)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I1fe774c571b2d7a26b1e8f7f40d6c44b31d7fac9
Reviewed-on: https://chromium-review.googlesource.com/361109
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/cec491a230022f989f2f02c623cb91c86eef6bf4/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 49 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/18412df49d5edd80cc77f2522bd0ada01ed462d2

commit 18412df49d5edd80cc77f2522bd0ada01ed462d2
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: Tue Sep 29 22:52:59 2015

BACKPORT: HID: hid-input: allow input_configured callback return errors

When configuring input device via input_configured callback we may
encounter errors (for example input_mt_init_slots() may fail). Instead
of continuing with half-initialized input device let's allow driver
indicate failures.

Note: this patch was previously backported in
c4b132d43e2acfa9def4b7f66fa8ef0325c5ef05 but did not include the
now-present hidpp changes.

BUG= chromium:617976 
TEST=build

Signed-off-by: Jaikumar Ganesh <jaikumarg@android.com>
Signed-off-by: Arve Hjnnevg <arve@android.com>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Acked-by: Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com>
Acked-by: Andrew Duggan <aduggan@synaptics.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit b2c68a2f1bab3e3d3bf4ab2b5fcd94cd37f61b41)
Signed-off-by: Adam Goode <agoode@chromium.org>

 Conflicts:
	drivers/hid/hid-lenovo.c
	drivers/hid/hid-multitouch.c
	drivers/hid/hid-rmi.c
	drivers/hid/hid-uclogic.c

Change-Id: Ic86131588f6144380461d6451626a13071888f49
Reviewed-on: https://chromium-review.googlesource.com/361129
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>

[modify] https://crrev.com/18412df49d5edd80cc77f2522bd0ada01ed462d2/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 50 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/bf7e5db99781e61ce7885fa9cdeb322481796659

commit bf7e5db99781e61ce7885fa9cdeb322481796659
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue Sep 30 17:18:32 2014

UPSTREAM: HID: logitech-hidpp: late bind the input device on wireless connection

Now that the receiver forwards the connect/disconnect events, we can
know when the device is available to communicate with us.

When it is ready, we can for instance retrieve its full name, which
guarantee that we always have the same name for the DJ device (the DJ
name is somewhat shorter than the HID++ name).

This mechanism is mandatory for the touchpads line, which has the
min/max information stored in the device. This information can only
be retrieved when the device is connected. So we can not populate
the input device until we are sure that the device is connected.

This patch creates a new input device for such devices. However,
this input is not bound to hid directly, so the various drivers
which wants to use it are required to process completely the
incoming reports in .raw_event().

Note that the patch in itself just adds the bits for the next
ones, and this feature is disabled by default.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit c39e3d5fc9dd3e16c6f59dd94d827540040de66d)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: Iaa3536259a107e6bd216a8bd2a8e076fb8cab95d
Reviewed-on: https://chromium-review.googlesource.com/361108
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/bf7e5db99781e61ce7885fa9cdeb322481796659/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 51 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/38b25096c1c721f84e469cc7f798b2130566f85e

commit 38b25096c1c721f84e469cc7f798b2130566f85e
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue Sep 30 17:18:31 2014

UPSTREAM: HID: logitech-dj: enable notifications on connect/disconnect

The receiver can send HID++ notifications to the DJ devices when the
physical devices are connected/disconnected.
Enable this feature by default.

This command uses a HID++ command instead of a DJ one, so use a direct
call to usbhid instead of using logi_dj_recv_send_report()

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 6a9ddc8978835deae0b2d918df74fc83588a4104)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I37fb1477aa645204b913b8e36dc3211801874c34
Reviewed-on: https://chromium-review.googlesource.com/361107
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/38b25096c1c721f84e469cc7f798b2130566f85e/drivers/hid/hid-logitech-dj.c

Project Member

Comment 52 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/093174f53601739ab190cb511a6236619ba16d42

commit 093174f53601739ab190cb511a6236619ba16d42
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue Sep 30 17:18:30 2014

UPSTREAM: HID: logitech: allow the DJ device to request the unifying name

The names of the DJ devices are stored in the receiver. These names
can be retrieved through a HID++ command. However, the protocol says
that you have to ask the receiver for that, not the device iteself.

Introduce a special case in the DJ handling where a device can request
its unifying name, and when such a name is given, forward it also to
the corresponding device.

On the HID++ side, the receiver talks only HID++ 1.0, so we need to
implement this part of the protocol in the module.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 33797820af98cde5c7cee00d00f0d8e255ea199f)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I5aad283262f8951a3e4bfae6498079f007476b60
Reviewed-on: https://chromium-review.googlesource.com/361106
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/093174f53601739ab190cb511a6236619ba16d42/drivers/hid/hid-logitech-dj.c
[modify] https://crrev.com/093174f53601739ab190cb511a6236619ba16d42/drivers/hid/hid-logitech-hidpp.c

Project Member

Comment 53 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/6ce3b26bc62ecd70972e189e4609c59c82b37173

commit 6ce3b26bc62ecd70972e189e4609c59c82b37173
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue Sep 30 17:18:29 2014

UPSTREAM: HID: logitech-dj: allow transfer of HID++ reports from/to the correct dj device

HID++ is a Logitech-specific protocol for communicating with HID
devices. DJ devices implement HID++, and so we can add the HID++
collection in the report descriptor and forward the incoming
reports from the receiver to the appropriate DJ device.

The same can be done in the other way, if someone calls a
.raw_request(), we can forward it to the correct dj device
by overriding the device_index in the HID++ report.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tisssoires <benjamin.tissoires@redhat.com>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 925f0f3ed24f98b40c28627e74ff3e7f9d1e28bc)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: If92dc253a713dfbde6c0eb31ad5ba0037d7400b2
Reviewed-on: https://chromium-review.googlesource.com/361105
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/6ce3b26bc62ecd70972e189e4609c59c82b37173/drivers/hid/hid-logitech-dj.c

Project Member

Comment 54 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/d47988ecca299bebf5fdf4eb60f286e8036e77bf

commit d47988ecca299bebf5fdf4eb60f286e8036e77bf
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue Sep 30 17:18:28 2014

UPSTREAM: HID: logitech: move dj devices to the HID++ module

Devices connected through the Logitech Wireless Receiver are HID++ devices.
We can handle them here to benefit from this new module and activate
enhaced support of the various wireless touchpad or mice with touch
sensors on them.

BUG= chromium:617976 
TEST=build

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit ab94e562ed45c99914fe874b7feaf75b80ceea84)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I955382a8f8b188ac3de679be8397bc2d4f102c36
Reviewed-on: https://chromium-review.googlesource.com/361104
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/d47988ecca299bebf5fdf4eb60f286e8036e77bf/drivers/hid/hid-logitech-dj.c
[modify] https://crrev.com/d47988ecca299bebf5fdf4eb60f286e8036e77bf/drivers/hid/hid-logitech-hidpp.c
[modify] https://crrev.com/d47988ecca299bebf5fdf4eb60f286e8036e77bf/drivers/hid/Kconfig

Project Member

Comment 55 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/kernel/+/d2ca28122a0ad926ae48b09f3d20ab0b7908cd23

commit d2ca28122a0ad926ae48b09f3d20ab0b7908cd23
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Tue Sep 30 17:18:27 2014

UPSTREAM: HID: Introduce hidpp, a module to handle Logitech hid++ devices

Logitech devices use a vendor protocol to communicate various
information with the device. This protocol is called HID++,
and an exerpt can be found here:
https://drive.google.com/folderview?id=0BxbRzx7vEV7eWmgwazJ3NUFfQ28&usp=shar

The main difficulty which is related to this protocol is that
it is a synchronous protocol using the input reports.
So when we want to get some information from the device, we need
to wait for a matching input report.

This driver introduce this capabilities to be able to support
the multitouch mode of the Logitech Wireless Touchpad T651
(the bluetooth one). The multitouch data is available directly
from the mouse input reports, and we just need to query the device
on connect about its caracteristics.

HID++ and the touchpad features has a specific reporting mode
which uses pure HID++ reports, but Logitech told us not to use
it for this specific device. During QA, they detected that
some bluetooth input reports where lost, and so the only supported
mode is the pointer mode.

BUG= chromium:617976 
TEST=build
CQ-DEPEND=CL:361129

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
(cherry picked from commit 2f31c52529103d8f0e1485272064f982d14ce54a)
Signed-off-by: Adam Goode <agoode@chromium.org>

Change-Id: I5837f9d5760abf0f58767469d8dc18c3e1598151
Reviewed-on: https://chromium-review.googlesource.com/361103
Commit-Ready: Adam Goode <agoode@chromium.org>
Tested-by: Adam Goode <agoode@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>

[modify] https://crrev.com/d2ca28122a0ad926ae48b09f3d20ab0b7908cd23/drivers/hid/hid-core.c
[add] https://crrev.com/d2ca28122a0ad926ae48b09f3d20ab0b7908cd23/drivers/hid/hid-logitech-hidpp.c
[modify] https://crrev.com/d2ca28122a0ad926ae48b09f3d20ab0b7908cd23/drivers/hid/Makefile
[modify] https://crrev.com/d2ca28122a0ad926ae48b09f3d20ab0b7908cd23/drivers/hid/Kconfig
[modify] https://crrev.com/d2ca28122a0ad926ae48b09f3d20ab0b7908cd23/drivers/hid/hid-ids.h

Status: Fixed (was: Started)
This is merged and a build works for me.
Labels: VerifyIn-54
Labels: VerifyIn-55

Comment 60 by ka...@chromium.org, Nov 18 2016

Status: Verified (was: Fixed)

Sign in to add a comment