Re: [PATCH] HID: wacom: Move HID fix for AES serial number into wacom_hid_usage_quirk

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

 



On Tue, Jan 29, 2019 at 3:02 AM Benjamin Tissoires
<benjamin.tissoires@xxxxxxxxxx> wrote:
>
> On Thu, Jan 24, 2019 at 8:10 PM Jason Gerecke <killertofu@xxxxxxxxx> wrote:
> >
> > The 'wacom_hid_usage_quirk' function is the intended home for fixing
> > up descriptors that are buggy or that don't quite fit the mold. Commit
> > 578325120e was supposed to move all of these quirks but it missed the
> > code to handle fixup the serial number usages for AES pens. Lets move
> > this code out of 'wacom_wac_pen_usage_mapping' where it was previously
> > lurking and put it into the same place as the others.
> >
> > Signed-off-by: Jason Gerecke <jason.gerecke@xxxxxxxxx>
> > ---
>
> Thanks, applied to for-5.1/wacom.
>
> I realized one thing today: your "From" address (gmail) doesn't match
> your SoB address (wacom).
> I still applied the patch because we used to not care about that for
> your patches, but this raises a useless checkpatch.pl warning (and I
> am scrutinizing any incoming patches with checkpatch.pl starting from
> now).
>
> Can you fix your pipeline?
>
> Cheers,
> Benjamin
>

Thanks, and I'll see what I can do :)

Jason
---
Now instead of four in the eights place /
you’ve got three, ‘Cause you added one  /
(That is to say, eight) to the two,     /
But you can’t take seven from three,    /
So you look at the sixty-fours....

> >  drivers/hid/wacom_sys.c | 32 ++++++++++++++++++++++++++++++++
> >  drivers/hid/wacom_wac.c | 21 ---------------------
> >  2 files changed, 32 insertions(+), 21 deletions(-)
> >
> > diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c
> > index 0bdd85d486fe..a8633b1437b2 100644
> > --- a/drivers/hid/wacom_sys.c
> > +++ b/drivers/hid/wacom_sys.c
> > @@ -252,6 +252,38 @@ static void wacom_hid_usage_quirk(struct hid_device *hdev,
> >                 }
> >         }
> >
> > +       /*
> > +        * Wacom's AES devices use different vendor-defined usages to
> > +        * report serial number information compared to their branded
> > +        * hardware. The usages are also sometimes ill-defined and do
> > +        * not have the correct logical min/max values set. Lets patch
> > +        * the descriptor to use the branded usage convention and fix
> > +        * the errors.
> > +        */
> > +       if (usage->hid == WACOM_HID_WT_SERIALNUMBER &&
> > +           field->report_size == 16 &&
> > +           field->index + 2 < field->report->maxfield) {
> > +               struct hid_field *a = field->report->field[field->index + 1];
> > +               struct hid_field *b = field->report->field[field->index + 2];
> > +
> > +               if (a->maxusage > 0 &&
> > +                   a->usage[0].hid == HID_DG_TOOLSERIALNUMBER &&
> > +                   a->report_size == 32 &&
> > +                   b->maxusage > 0 &&
> > +                   b->usage[0].hid == 0xFF000000 &&
> > +                   b->report_size == 8) {
> > +                       features->quirks |= WACOM_QUIRK_AESPEN;
> > +                       usage->hid = WACOM_HID_WD_TOOLTYPE;
> > +                       field->logical_minimum = S16_MIN;
> > +                       field->logical_maximum = S16_MAX;
> > +                       a->logical_minimum = S32_MIN;
> > +                       a->logical_maximum = S32_MAX;
> > +                       b->usage[0].hid = WACOM_HID_WD_SERIALHI;
> > +                       b->logical_minimum = 0;
> > +                       b->logical_maximum = U8_MAX;
> > +               }
> > +       }
> > +
> >         /* 2nd-generation Intuos Pro Large has incorrect Y maximum */
> >         if (hdev->vendor == USB_VENDOR_ID_WACOM &&
> >             hdev->product == 0x0358 &&
> > diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
> > index 5dd3a8245f0f..72477e872324 100644
> > --- a/drivers/hid/wacom_wac.c
> > +++ b/drivers/hid/wacom_wac.c
> > @@ -2159,27 +2159,6 @@ static void wacom_wac_pen_usage_mapping(struct hid_device *hdev,
> >         case HID_DG_TOOLSERIALNUMBER:
> >                 features->quirks |= WACOM_QUIRK_TOOLSERIAL;
> >                 wacom_map_usage(input, usage, field, EV_MSC, MSC_SERIAL, 0);
> > -
> > -               /* Adjust AES usages to match modern convention */
> > -               if (usage->hid == WACOM_HID_WT_SERIALNUMBER && field->report_size == 16) {
> > -                       if (field->index + 2 < field->report->maxfield) {
> > -                               struct hid_field *a = field->report->field[field->index + 1];
> > -                               struct hid_field *b = field->report->field[field->index + 2];
> > -
> > -                               if (a->maxusage > 0 && a->usage[0].hid == HID_DG_TOOLSERIALNUMBER && a->report_size == 32 &&
> > -                                   b->maxusage > 0 && b->usage[0].hid == 0xFF000000 && b->report_size == 8) {
> > -                                       features->quirks |= WACOM_QUIRK_AESPEN;
> > -                                       usage->hid = WACOM_HID_WD_TOOLTYPE;
> > -                                       field->logical_minimum = S16_MIN;
> > -                                       field->logical_maximum = S16_MAX;
> > -                                       a->logical_minimum = S32_MIN;
> > -                                       a->logical_maximum = S32_MAX;
> > -                                       b->usage[0].hid = WACOM_HID_WD_SERIALHI;
> > -                                       b->logical_minimum = 0;
> > -                                       b->logical_maximum = U8_MAX;
> > -                               }
> > -                       }
> > -               }
> >                 break;
> >         case WACOM_HID_WD_SENSE:
> >                 features->quirks |= WACOM_QUIRK_SENSE;
> > --
> > 2.20.1
> >




[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