New issue
Advanced search Search tips

Issue 888172 link

Starred by 2 users

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Feature



Sign in to add a comment

Support high-resolution scrolling on Chrome OS

Project Member Reported by hcutts@chromium.org, Sep 21

Issue description

Some mice now support high-resolution (a.k.a. high-precision) scrolling, typically at 8x the previous "normal" resolution (i.e. 8 units per "notch" of wheel movement). We should support this increased resolution in Chrome OS.

Devices with this feature include most new Logitech mice. Support for most of these (except when connected over Bluetooth) has recently been added to the Linux kernel [0]. We have to backport these patches, and then update libevdev, the gestures library, and Chromium itself to take advantage of the new `REL_WHEEL_HI_RES` evdev output.


[0]: https://patchwork.kernel.org/project/linux-input/list/?series=13521
 
Project Member

Comment 1 by bugdroid1@chromium.org, Oct 12

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

commit 37173982ea807c59621018b0f3ee9cc93f547cba
Author: Harry Cutts <hcutts@chromium.org>
Date: Fri Oct 12 00:33:37 2018

FROMLIST: Add the `REL_WHEEL_HI_RES` event code

This event code represents scroll reports from high-resolution wheels,
and will be used by future patches in this series. See the linux-input
"Reporting high-resolution scroll events" thread [0] for more details.

[0]: https://www.spinics.net/lists/linux-input/msg57380.html

Signed-off-by: Harry Cutts <hcutts@chromium.org>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
(am from https://patchwork.kernel.org/patch/10582941/)
(also found at https://lkml.kernel.org/r/20180830215622.47550-2-hcutts@chromium.org)

BUG=chromium:888172
TEST=no behaviour changes expected

Change-Id: Ibb8b06863b375278b8af1920dd42af308871a29e
Reviewed-on: https://chromium-review.googlesource.com/1240511
Commit-Ready: Harry Cutts <hcutts@chromium.org>
Tested-by: Harry Cutts <hcutts@chromium.org>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>

[modify] https://crrev.com/37173982ea807c59621018b0f3ee9cc93f547cba/include/uapi/linux/input-event-codes.h
[modify] https://crrev.com/37173982ea807c59621018b0f3ee9cc93f547cba/Documentation/input/event-codes.rst

Project Member

Comment 2 by bugdroid1@chromium.org, Oct 12

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

commit d9896e0c7a682c0cc6288fa4ec0230596abb7885
Author: Harry Cutts <hcutts@chromium.org>
Date: Fri Oct 12 00:33:39 2018

FROMLIST: Create a utility class for counting scroll events

To avoid code duplication, this class counts high-resolution scroll
movements and emits the legacy low-resolution events when appropriate.
Drivers should be able to create one instance for each scroll wheel that
they need to handle.

Signed-off-by: Harry Cutts <hcutts@chromium.org>
(am from https://patchwork.kernel.org/patch/10582939/)
(also found at https://lkml.kernel.org/r/20180830215622.47550-3-hcutts@chromium.org)

BUG=chromium:888172
TEST=no behaviour changes expected

Change-Id: I3d406d464785acef1d9382450ebc5c2fd3ab3c1f
Reviewed-on: https://chromium-review.googlesource.com/1240512
Commit-Ready: Harry Cutts <hcutts@chromium.org>
Tested-by: Harry Cutts <hcutts@chromium.org>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>

[modify] https://crrev.com/d9896e0c7a682c0cc6288fa4ec0230596abb7885/drivers/hid/hid-input.c
[modify] https://crrev.com/d9896e0c7a682c0cc6288fa4ec0230596abb7885/include/linux/hid.h

Project Member

Comment 3 by bugdroid1@chromium.org, Oct 12

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

commit b7c38b856d0f1a3959a24597438b68ade3ae173b
Author: Harry Cutts <hcutts@chromium.org>
Date: Fri Oct 12 00:33:40 2018

FROMLIST: Add function to enable HID++ 1.0 "scrolling acceleration"

"Scrolling acceleration" is a bit of a misnomer: it doesn't deal with
acceleration at all. However, that's the name used in Logitech's spec,
so I used it here.

Signed-off-by: Harry Cutts <hcutts@chromium.org>
(am from https://patchwork.kernel.org/patch/10582937/)
(also found at https://lkml.kernel.org/r/20180830215622.47550-4-hcutts@chromium.org)

BUG=chromium:888172
TEST=no behaviour changes expected

Change-Id: I83aec8d11638f3aa2961458aa1a0ab68586f99b2
Reviewed-on: https://chromium-review.googlesource.com/1240753
Commit-Ready: Harry Cutts <hcutts@chromium.org>
Tested-by: Harry Cutts <hcutts@chromium.org>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>

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

Project Member

Comment 4 by bugdroid1@chromium.org, Oct 12

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

commit 050ec53559094faf5d9fe8913a4d240bb2ddd522
Author: Harry Cutts <hcutts@chromium.org>
Date: Fri Oct 12 00:33:42 2018

FROMLIST: Enable high-resolution scrolling on Logitech mice

There are three features used by various Logitech mice for
high-resolution scrolling: the scrolling acceleration bit in HID++ 1.0,
and the x2120 and x2121 features in HID++ 2.0 and above. This patch
supports all three, and uses the multiplier reported by the mouse for
the HID++ 2.0+ features.

The full list of product IDs of mice which support high-resolution
scrolling was provided by Logitech, but the patch was tested using the
following mice (using the Unifying receiver):

* HID++ 1.0: Anywhere MX, Performance MX
* x2120: M560
* x2121: MX Anywhere 2, MX Master 2S

Signed-off-by: Harry Cutts <hcutts@chromium.org>
(am from https://patchwork.kernel.org/patch/10582935/)
(also found at https://lkml.kernel.org/r/20180830215622.47550-5-hcutts@chromium.org)

BUG=chromium:888172
TEST=Connect Logitech high-resolution scrolling mice to a Chromebook, and check that REL_WHEEL_HI_RES updates are output from evtest. Upstream patches tested with: Anywhere MX and Performance MX (both HID++ 1.0); M325, M560, MX Anywhere 2, and MX Master 2S (all HID++ 2.0+). Backport tested with the MX Master 2S.

Change-Id: Ib1958e775def980bd9506f9618ce581385551eb4
Reviewed-on: https://chromium-review.googlesource.com/1240754
Commit-Ready: Harry Cutts <hcutts@chromium.org>
Tested-by: Harry Cutts <hcutts@chromium.org>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>

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

Project Member

Comment 5 by bugdroid1@chromium.org, Oct 12

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

commit ee1866a1bc2c17733fb4d4d2978c7d9ac069e673
Author: Harry Cutts <hcutts@chromium.org>
Date: Fri Oct 12 00:33:43 2018

FROMLIST: Use LDJ_DEVICE macro for existing Logitech mice

Signed-off-by: Harry Cutts <hcutts@chromium.org>
(am from https://patchwork.kernel.org/patch/10582933/)
(also found at https://lkml.kernel.org/r/20180830215622.47550-6-hcutts@chromium.org)

BUG=chromium:888172
TEST=Connect one of the affected devices and check that the Logitech driver is used.

Change-Id: I90b9bf0663fcdc220f914238bd387275da99af49
Reviewed-on: https://chromium-review.googlesource.com/1240755
Commit-Ready: Harry Cutts <hcutts@chromium.org>
Tested-by: Harry Cutts <hcutts@chromium.org>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>

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

Project Member

Comment 6 by bugdroid1@chromium.org, Oct 12

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

commit cede709b28ba6b00eb85dd334e7f0515606d937d
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Fri Oct 12 04:34:52 2018

FROMLIST: HID: logitech-hidpp: remove HIDPP_QUIRK_CONNECT_EVENTS

Now that we can create battery power_supply sources, it's better to enable
the connect_event callback unconditionally.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Tested-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(am from https://patchwork.kernel.org/patch/9204615/)
(also found at https://lkml.kernel.org/r/1467192482-2723-2-git-send-email-peter.hutterer@who-t.net)

BUG=chromium:888172
TEST=Connect a Logitech mouse (tested with MX Master 2S) and verify that
it still functions correctly.

Change-Id: I8ad7e1cefd250be7ef150a96dc21aa94367eef66
Signed-off-by: Harry Cutts <hcutts@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1275015
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>

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

Project Member

Comment 7 by bugdroid1@chromium.org, Oct 12

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

commit e03cb49389c847313c200096b9f2173baa98bb87
Author: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Date: Fri Oct 12 08:16:58 2018

BACKPORT: FROMLIST: HID: logitech-hidpp: rework hidpp_connect_event()

Looks like all users don't care about a disconnect.
Simplify the various variant_connect() and put the connect state check
at the beginning.

For delayed input devices, make sure we go through all other connect
values (protocol, battery) before bailing out.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
(am from https://patchwork.kernel.org/patch/9551923/)
(also found at https://lkml.kernel.org/r/20170202141229.17322-16-benjamin.tissoires@redhat.com)

BUG=chromium:888172
TEST=Connect a Logitech mouse and verify that it still functions
correctly. Tested with a range of Logitech mice (including HID++ 1.0
and 2.0+ devices).

Change-Id: I27979cf22e9ba539255f00098a5911f59f462849
Signed-off-by: Harry Cutts <hcutts@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1275016
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>

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

Project Member

Comment 8 by bugdroid1@chromium.org, Oct 12

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

commit 23eddb2b670ab487598cb51ff157deb4ad707ca1
Author: Harry Cutts <hcutts@chromium.org>
Date: Fri Oct 12 08:16:59 2018

FROMLIST: Add the `REL_WHEEL_HI_RES` event code

This event code represents scroll reports from high-resolution wheels,
and will be used by future patches in this series. See the linux-input
"Reporting high-resolution scroll events" thread [0] for more details.

[0]: https://www.spinics.net/lists/linux-input/msg57380.html

Signed-off-by: Harry Cutts <hcutts@chromium.org>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
(am from https://patchwork.kernel.org/patch/10582941/)
(also found at https://lkml.kernel.org/r/20180830215622.47550-2-hcutts@chromium.org)

BUG=chromium:888172
TEST=no behaviour changes expected

Change-Id: Id72faf3a60cbb42d7dfa6161d73b2065dd366328
Reviewed-on: https://chromium-review.googlesource.com/1275017
Commit-Ready: Harry Cutts <hcutts@chromium.org>
Tested-by: Harry Cutts <hcutts@chromium.org>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>

[modify] https://crrev.com/23eddb2b670ab487598cb51ff157deb4ad707ca1/include/uapi/linux/input-event-codes.h
[modify] https://crrev.com/23eddb2b670ab487598cb51ff157deb4ad707ca1/Documentation/input/event-codes.txt

Project Member

Comment 9 by bugdroid1@chromium.org, Oct 12

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

commit 50609688e5d62a388c6aa6e5168fe5635eac9a73
Author: Harry Cutts <hcutts@chromium.org>
Date: Fri Oct 12 08:17:01 2018

FROMLIST: Create a utility class for counting scroll events

To avoid code duplication, this class counts high-resolution scroll
movements and emits the legacy low-resolution events when appropriate.
Drivers should be able to create one instance for each scroll wheel that
they need to handle.

Signed-off-by: Harry Cutts <hcutts@chromium.org>
(am from https://patchwork.kernel.org/patch/10582939/)
(also found at https://lkml.kernel.org/r/20180830215622.47550-3-hcutts@chromium.org)

BUG=chromium:888172
TEST=no behaviour changes expected

Change-Id: I1bc043a14188c9bf5d1a0d57284cd4d5d0ac7003
Reviewed-on: https://chromium-review.googlesource.com/1275018
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Harry Cutts <hcutts@chromium.org>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>

[modify] https://crrev.com/50609688e5d62a388c6aa6e5168fe5635eac9a73/drivers/hid/hid-input.c
[modify] https://crrev.com/50609688e5d62a388c6aa6e5168fe5635eac9a73/include/linux/hid.h

Project Member

Comment 10 by bugdroid1@chromium.org, Oct 12

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

commit 1cd37b5a86de0ebe4178e228ccdb3bff310bb9da
Author: Harry Cutts <hcutts@chromium.org>
Date: Fri Oct 12 08:17:02 2018

BACKPORT: FROMLIST: Add function to enable HID++ 1.0 "scrolling acceleration"

"Scrolling acceleration" is a bit of a misnomer: it doesn't deal with
acceleration at all. However, that's the name used in Logitech's spec,
so I used it here.

Signed-off-by: Harry Cutts <hcutts@chromium.org>
(am from https://patchwork.kernel.org/patch/10582937/)
(also found at https://lkml.kernel.org/r/20180830215622.47550-4-hcutts@chromium.org)

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

BUG=chromium:888172
TEST=no behaviour changes expected

Change-Id: I8e0423c0126ec50b05add1c85aa12695dd765132
Reviewed-on: https://chromium-review.googlesource.com/1275019
Commit-Ready: Harry Cutts <hcutts@chromium.org>
Tested-by: Harry Cutts <hcutts@chromium.org>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>

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

Project Member

Comment 11 by bugdroid1@chromium.org, Oct 12

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

commit 3802c96bc03683556818be698d5997803ce374fc
Author: Harry Cutts <hcutts@chromium.org>
Date: Fri Oct 12 08:17:03 2018

BACKPORT: FROMLIST: Enable high-resolution scrolling on Logitech mice

There are three features used by various Logitech mice for
high-resolution scrolling: the scrolling acceleration bit in HID++ 1.0,
and the x2120 and x2121 features in HID++ 2.0 and above. This patch
supports all three, and uses the multiplier reported by the mouse for
the HID++ 2.0+ features.

The full list of product IDs of mice which support high-resolution
scrolling was provided by Logitech, but the patch was tested using the
following mice (using the Unifying receiver):

* HID++ 1.0: Anywhere MX, Performance MX
* x2120: M560
* x2121: MX Anywhere 2, MX Master 2S

Signed-off-by: Harry Cutts <hcutts@chromium.org>
(am from https://patchwork.kernel.org/patch/10582935/)
(also found at https://lkml.kernel.org/r/20180830215622.47550-5-hcutts@chromium.org)

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

To backport, I had to move the call to hi_res_scroll_enable to before
the HIDPP_QUIRK_NO_HIDINPUT check in hidpp_connect_event.

BUG=chromium:888172
TEST=Connect Logitech high-resolution scrolling mice to a Chromebook,
and check that REL_WHEEL_HI_RES updates are output from evtest. Tested
with: Anywhere MX and Performance MX (both HID++ 1.0); M325, M535, M560,
MX Anywhere 2, and MX Master 2S (all HID++ 2.0+).

Change-Id: Ia5333f7a3573d7a893c55141c76fb1bfe8b14ca7
Reviewed-on: https://chromium-review.googlesource.com/1275020
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Harry Cutts <hcutts@chromium.org>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>

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

Project Member

Comment 12 by bugdroid1@chromium.org, Oct 12

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

commit b6e4d15c2cfb3a6450f82d3736f86329ab468df8
Author: Harry Cutts <hcutts@chromium.org>
Date: Fri Oct 12 08:17:05 2018

BACKPORT: FROMLIST: Use LDJ_DEVICE macro for existing Logitech mice

Signed-off-by: Harry Cutts <hcutts@chromium.org>
(am from https://patchwork.kernel.org/patch/10582933/)
(also found at https://lkml.kernel.org/r/20180830215622.47550-6-hcutts@chromium.org)

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

BUG=chromium:888172
TEST=no behaviour changes expected

Change-Id: Ic3f1f0fcb2801f4be5164abe70d4af9c85c26b64
Reviewed-on: https://chromium-review.googlesource.com/1275021
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Harry Cutts <hcutts@chromium.org>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>

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

Sign in to add a comment