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 >