Re: [PATCH v2] hid-lenovo: Add support for IBM/Lenovo Scrollpoint mice

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Peter,

On Thu, Apr 12, 2018 at 7:36 PM, pgzh <peter.ganzhorn@xxxxxxxxx> wrote:
> The IBM/Lenovo Scrollpoint mice feature a trackpoint-like stick instead of a
> scrolling wheel capable of 2-D (vertical+horizontal) scrolling.
> hid-generic does only expose 1-D (vertical) scrolling functionality for these mice.
> This patch adds support for horizontal scrolling for the IBM/Lenovo Scrollpoint
> mice to hid-lenovo.
>
> changes in v2:
> - commit message enhanced
> - removed hid-quirk.c hunk
> - merged separate patches into one single patch

Just FYI, the changes should go after the first '---'. This way they
will not be added in the final commit message.

As a trick, I add in my commit messages '---' then the changes. They
are kept accross revisions in my tree, but when Jiri applies the
patch, they magically disappear :)

Appart from that, the patch looks good.

I just have one tiny remark inlined below:

>
> Signed-off-by: Peter Ganzhorn <peter.ganzhorn@xxxxxxxxx>
> ---
>  drivers/hid/Kconfig      |  7 ++++---
>  drivers/hid/hid-ids.h    |  8 ++++++++
>  drivers/hid/hid-lenovo.c | 36 ++++++++++++++++++++++++++++++++++++
>  3 files changed, 48 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
> index 60252fd796f6..ab5e84018345 100644
> --- a/drivers/hid/Kconfig
> +++ b/drivers/hid/Kconfig
> @@ -462,10 +462,11 @@ config HID_LENOVO
>         select NEW_LEDS
>         select LEDS_CLASS
>         ---help---
> -       Support for Lenovo devices that are not fully compliant with HID standard.
> +       Support for IBM/Lenovo devices that are not fully compliant with HID standard.
>
> -       Say Y if you want support for the non-compliant features of the Lenovo
> -       Thinkpad standalone keyboards, e.g:
> +       Say Y if you want support for horizontal scrolling of the IBM/Lenovo
> +       Scrollpoint mice or the non-compliant features of the Lenovo Thinkpad
> +       standalone keyboards, e.g:
>         - ThinkPad USB Keyboard with TrackPoint (supports extra LEDs and trackpoint
>           configuration)
>         - ThinkPad Compact Bluetooth Keyboard with TrackPoint (supports Fn keys)
> diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
> index 5a3a7ead3012..484511a58a7b 100644
> --- a/drivers/hid/hid-ids.h
> +++ b/drivers/hid/hid-ids.h
> @@ -549,6 +549,13 @@
>  #define USB_VENDOR_ID_HUION            0x256c
>  #define USB_DEVICE_ID_HUION_TABLET     0x006e
>
> +#define USB_VENDOR_ID_IBM                                      0x04b3
> +#define USB_DEVICE_ID_IBM_SCROLLPOINT_III                      0x3100
> +#define USB_DEVICE_ID_IBM_SCROLLPOINT_PRO                      0x3103
> +#define USB_DEVICE_ID_IBM_SCROLLPOINT_OPTICAL                  0x3105
> +#define USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL           0x3108
> +#define USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL_PRO       0x3109
> +
>  #define USB_VENDOR_ID_IDEACOM          0x1cb6
>  #define USB_DEVICE_ID_IDEACOM_IDC6650  0x6650
>  #define USB_DEVICE_ID_IDEACOM_IDC6651  0x6651
> @@ -681,6 +688,7 @@
>  #define USB_DEVICE_ID_LENOVO_TPKBD     0x6009
>  #define USB_DEVICE_ID_LENOVO_CUSBKBD   0x6047
>  #define USB_DEVICE_ID_LENOVO_CBTKBD    0x6048
> +#define USB_DEVICE_ID_LENOVO_SCROLLPOINT_OPTICAL       0x6049
>  #define USB_DEVICE_ID_LENOVO_TPPRODOCK 0x6067
>  #define USB_DEVICE_ID_LENOVO_X1_COVER  0x6085
>  #define USB_DEVICE_ID_LENOVO_X1_TAB    0x60a3
> diff --git a/drivers/hid/hid-lenovo.c b/drivers/hid/hid-lenovo.c
> index 1ac4ff4d57a6..643b6eb54442 100644
> --- a/drivers/hid/hid-lenovo.c
> +++ b/drivers/hid/hid-lenovo.c
> @@ -6,6 +6,17 @@
>   *
>   *  Copyright (c) 2012 Bernhard Seibold
>   *  Copyright (c) 2014 Jamie Lentin <jm@xxxxxxxxxxxx>
> + *
> + * Linux IBM/Lenovo Scrollpoint mouse driver:
> + * - IBM Scrollpoint III
> + * - IBM Scrollpoint Pro
> + * - IBM Scrollpoint Optical
> + * - IBM Scrollpoint Optical 800dpi
> + * - IBM Scrollpoint Optical 800dpi Pro
> + * - Lenovo Scrollpoint Optical
> + *
> + *  Copyright (c) 2012 Peter De Wachter <pdewacht@xxxxxxxxx>

Where is that copyright coming from?

[further google search later]

Peter (De Wachter), could you add your signed-off by on this patch too
given that I found
https://github.com/pdewacht/hid-scrollpoint/blob/master/hid-scrollpoint.c
which seems to be the base for this patch.

With Peter's ACK, this is:
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx>

Cheers,
Benjamin

> + *  Copyright (c) 2018 Peter Ganzhorn <peter.ganzhorn@xxxxxxxxx>
>   */
>
>  /*
> @@ -160,6 +171,17 @@ static int lenovo_input_mapping_cptkbd(struct hid_device *hdev,
>         return 0;
>  }
>
> +static int lenovo_input_mapping_scrollpoint(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_GD_Z) {
> +               hid_map_usage(hi, usage, bit, max, EV_REL, REL_HWHEEL);
> +               return 1;
> +       }
> +       return 0;
> +}
> +
>  static int lenovo_input_mapping(struct hid_device *hdev,
>                 struct hid_input *hi, struct hid_field *field,
>                 struct hid_usage *usage, unsigned long **bit, int *max)
> @@ -172,6 +194,14 @@ static int lenovo_input_mapping(struct hid_device *hdev,
>         case USB_DEVICE_ID_LENOVO_CBTKBD:
>                 return lenovo_input_mapping_cptkbd(hdev, hi, field,
>                                                         usage, bit, max);
> +       case USB_DEVICE_ID_IBM_SCROLLPOINT_III:
> +       case USB_DEVICE_ID_IBM_SCROLLPOINT_PRO:
> +       case USB_DEVICE_ID_IBM_SCROLLPOINT_OPTICAL:
> +       case USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL:
> +       case USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL_PRO:
> +       case USB_DEVICE_ID_LENOVO_SCROLLPOINT_OPTICAL:
> +               return lenovo_input_mapping_scrollpoint(hdev, hi, field,
> +                                                       usage, bit, max);
>         default:
>                 return 0;
>         }
> @@ -883,6 +913,12 @@ static const struct hid_device_id lenovo_devices[] = {
>         { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CUSBKBD) },
>         { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_CBTKBD) },
>         { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_TPPRODOCK) },
> +       { HID_USB_DEVICE(USB_VENDOR_ID_IBM, USB_DEVICE_ID_IBM_SCROLLPOINT_III) },
> +       { HID_USB_DEVICE(USB_VENDOR_ID_IBM, USB_DEVICE_ID_IBM_SCROLLPOINT_PRO) },
> +       { HID_USB_DEVICE(USB_VENDOR_ID_IBM, USB_DEVICE_ID_IBM_SCROLLPOINT_OPTICAL) },
> +       { HID_USB_DEVICE(USB_VENDOR_ID_IBM, USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL) },
> +       { HID_USB_DEVICE(USB_VENDOR_ID_IBM, USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL_PRO) },
> +       { HID_USB_DEVICE(USB_VENDOR_ID_LENOVO, USB_DEVICE_ID_LENOVO_SCROLLPOINT_OPTICAL) },
>         { }
>  };
>
> --
> 2.11.0
>
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux