aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWattos <Wattos@gmail.com>2013-10-31 04:43:00 -0700
committerWattos <Wattos@gmail.com>2013-10-31 04:43:00 -0700
commit3f56a4ee048bf5a30633c1ec02f1a70f5c72edbf (patch)
tree0c7b671311930c5feae41a3391e79bcf7f22c0f4
parentb4581a9a57b081285c9893ad9ce8a8c8eb30694f (diff)
parent2d05ee44b999a72c90ea65fadb19642ec8764a30 (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.c8
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);