diff options
author | Wattos <Wattos@gmail.com> | 2013-10-31 04:43:00 -0700 |
---|---|---|
committer | Wattos <Wattos@gmail.com> | 2013-10-31 04:43:00 -0700 |
commit | 3f56a4ee048bf5a30633c1ec02f1a70f5c72edbf (patch) | |
tree | 0c7b671311930c5feae41a3391e79bcf7f22c0f4 | |
parent | b4581a9a57b081285c9893ad9ce8a8c8eb30694f (diff) | |
parent | 2d05ee44b999a72c90ea65fadb19642ec8764a30 (diff) |
Merge pull request #7 from felixrg/bugfix
Fixes first HID report with recent kernel versions and removes sysfs attributes when removing driver.
-rw-r--r-- | src/kernel/hid-lg-g710-plus.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/kernel/hid-lg-g710-plus.c b/src/kernel/hid-lg-g710-plus.c index 42ff7d8..f3f2577 100644 --- a/src/kernel/hid-lg-g710-plus.c +++ b/src/kernel/hid-lg-g710-plus.c @@ -128,8 +128,9 @@ static int lg_g710_plus_raw_event(struct hid_device *hdev, struct hid_report *re struct lg_g710_plus_data* g710_data = lg_g710_plus_get_data(hdev); /* Ignore the first event. It will send a key down event for certain buttons, but never the key up event*/ if (g710_data->first_event) { + memset(data, 0, size); g710_data->first_event= 0; - return 1; + return 0; } switch(report->id) { case 3: return lg_g710_plus_extra_key_event(hdev, report, data, size); @@ -249,6 +250,11 @@ err_free: static void lg_g710_plus_remove(struct hid_device *hdev) { struct lg_g710_plus_data* data = lg_g710_plus_get_data(hdev); + struct list_head *feature_report_list = &hdev->report_enum[HID_FEATURE_REPORT].report_list; + + if (data != NULL && !list_empty(feature_report_list)) + sysfs_remove_group(&hdev->dev.kobj, &data->attr_group); + hid_hw_stop(hdev); if (data != NULL) { kfree(data); |