Re: [PATCH v2 17/23] HID: uclogic: Support faking Wacom pad device ID

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

 



On Sun, Feb 10, 2019 at 11:15 AM Nikolai Kondrashov <spbnick@xxxxxxxxx> wrote:
>
> Add support for inserting a Wacom pad device ID into hid-uclogic
> reports. This allows reporting dial inputs in a way compatible with the
> Wacom driver. Needed for Ugee G5 support in particular.

I guess the Xorg wacom driver.

I don't think we need that for libinput. Peter?

Cheers,
Benjamin

>
> Signed-off-by: Nikolai Kondrashov <spbnick@xxxxxxxxx>
> ---
>  drivers/hid/hid-uclogic-core.c   | 10 ++++++++++
>  drivers/hid/hid-uclogic-params.h |  9 +++++++++
>  2 files changed, 19 insertions(+)
>
> diff --git a/drivers/hid/hid-uclogic-core.c b/drivers/hid/hid-uclogic-core.c
> index e4324ad86e58..f5fb612daa1e 100644
> --- a/drivers/hid/hid-uclogic-core.c
> +++ b/drivers/hid/hid-uclogic-core.c
> @@ -300,6 +300,16 @@ static int uclogic_raw_event(struct hid_device *hdev,
>                 }
>         }
>
> +       /* Tweak frame control reports, if necessary */
> +       if ((report->type == HID_INPUT_REPORT) &&
> +           (report->id == params->frame.id)) {
> +               /* If need to, and can, set pad device ID for Wacom drivers */
> +               if (params->frame.dev_id_byte > 0 &&
> +                   params->frame.dev_id_byte < size) {
> +                       data[params->frame.dev_id_byte] = 0xf;
> +               }
> +       }
> +
>         return 0;
>  }
>
> diff --git a/drivers/hid/hid-uclogic-params.h b/drivers/hid/hid-uclogic-params.h
> index 1060f70d647d..4ba6ecc2b8b8 100644
> --- a/drivers/hid/hid-uclogic-params.h
> +++ b/drivers/hid/hid-uclogic-params.h
> @@ -87,6 +87,13 @@ struct uclogic_params_frame {
>          * Report ID, if reports should be tweaked, zero if not.
>          */
>         unsigned int id;
> +       /*
> +        * Offset of the Wacom-style device ID byte in the report, to be set
> +        * to pad device ID (0xf), for compatibility with Wacom drivers. Zero
> +        * if no changes to the report should be made. Only valid if "id" is
> +        * not zero.
> +        */
> +       unsigned int dev_id_byte;
>  };
>
>  /*
> @@ -161,6 +168,7 @@ extern int uclogic_params_init(struct uclogic_params *params,
>                 ".frame.desc_ptr = %p\n"            \
>                 ".frame.desc_size = %u\n"           \
>                 ".frame.id = %u\n"                  \
> +               ".frame.dev_id_byte = %u\n"         \
>                 ".pen_frame_flag = 0x%02x\n"
>
>  /* Tablet interface parameters *printf format arguments */
> @@ -177,6 +185,7 @@ extern int uclogic_params_init(struct uclogic_params *params,
>                 (_params)->frame.desc_ptr,                                  \
>                 (_params)->frame.desc_size,                                 \
>                 (_params)->frame.id,                                        \
> +               (_params)->frame.dev_id_byte,                               \
>                 (_params)->pen_frame_flag
>
>  /* Get a replacement report descriptor for a tablet's interface. */
> --
> 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