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

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

 



On 13-04-18, Benjamin Tissoires wrote:
> 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
> >

-- 
Hi Benjamin,

thanks for the tip, I will keep this in mind the next time.
I kept the copyright of Peter De Wachter since he is the original author of
the scrollpoint driver you found on Github.
He also tried to submit a patch in 2013 (https://lkml.org/lkml/2013/7/2/549)
but never answered Jiris feedback since he never saw the reply.
I already mentioned his work and previous submission in my first email.
Since my patch is based on his work, I wanted to keep his name and also
contacted him before submitting my patch.

Thank you for giving me so much feedback, I really appreciate it!
Is there anything else that needs to be done to get the patch merged?

Peter
--
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