Re: [PATCH 1/3] HID: asus: Add event handler to catch unmapped Asus Vendor UsagePage codes

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

 



Hi Hans,

On Mon, Nov 26, 2018 at 11:52 AM Hans de Goede <hdegoede@xxxxxxxxxx> wrote:
>
> Various Asus devices generate HID events using the Asus Vendor specific
> UsagePage 0xff31 and hid-asus will map these in its input_mapping for all
> devices to which it binds (independent of any quirks).
>
> Add an event callback which check for unmapped (because sofar unknown)
> usages within the Asus Vendor UsagePage and log a warning for these.
>
> The purpose of this patch is to help debugging / find such unmapped codes
> and add them to the asus_input_mapping() function.
>
> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> ---
>  drivers/hid/hid-asus.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
>
> diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c
> index a1fa2fc8c9b5..61fb5a43c1cb 100644
> --- a/drivers/hid/hid-asus.c
> +++ b/drivers/hid/hid-asus.c
> @@ -241,6 +241,18 @@ static int asus_report_input(struct asus_drvdata *drvdat, u8 *data, int size)
>         return 1;
>  }
>
> +static int asus_event(struct hid_device *hdev, struct hid_field *field,
> +                     struct hid_usage *usage, __s32 value)
> +{
> +       if ((usage->hid & HID_USAGE_PAGE) == 0xff310000 &&
> +           (usage->hid & HID_USAGE) != 0x00 && !usage->type) {
> +               hid_warn(hdev, "Unmapped Asus vendor usagepage code 0x%02x\n",
> +                        usage->hid & HID_USAGE);

Are you sure you want to shout a warning each time the device receives
an unmapped event?
There is a high chance you end up filling the logs with those warnings
in case the device uses a proprietary protocol for some random
communication.

Cheers,
Benjamin

> +       }
> +
> +       return 0;
> +}
> +
>  static int asus_raw_event(struct hid_device *hdev,
>                 struct hid_report *report, u8 *data, int size)
>  {
> @@ -832,6 +844,7 @@ static struct hid_driver asus_driver = {
>  #ifdef CONFIG_PM
>         .reset_resume           = asus_reset_resume,
>  #endif
> +       .event                  = asus_event,
>         .raw_event              = asus_raw_event
>  };
>  module_hid_driver(asus_driver);
> --
> 2.19.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