Merge branches 'stable/backend.base.v3' and 'stable/gntalloc.v7' of git://git.kernel...
[firefly-linux-kernel-4.4.55.git] / drivers / input / sparse-keymap.c
index 74bca5d2f6dc85fdb7f47e1b9a86b5a00162f022..fdb6a3976f94cbfb821aa58841d3075afe08f50f 100644 (file)
@@ -209,6 +209,7 @@ int sparse_keymap_setup(struct input_dev *dev,
        }
 
        if (test_bit(EV_KEY, dev->evbit)) {
+               __set_bit(KEY_UNKNOWN, dev->keybit);
                __set_bit(EV_MSC, dev->evbit);
                __set_bit(MSC_SCAN, dev->mscbit);
        }
@@ -311,12 +312,19 @@ bool sparse_keymap_report_event(struct input_dev *dev, unsigned int code,
 {
        const struct key_entry *ke =
                sparse_keymap_entry_from_scancode(dev, code);
+       struct key_entry unknown_ke;
 
        if (ke) {
                sparse_keymap_report_entry(dev, ke, value, autorelease);
                return true;
        }
 
+       /* Report an unknown key event as a debugging aid */
+       unknown_ke.type = KE_KEY;
+       unknown_ke.code = code;
+       unknown_ke.keycode = KEY_UNKNOWN;
+       sparse_keymap_report_entry(dev, &unknown_ke, value, true);
+
        return false;
 }
 EXPORT_SYMBOL(sparse_keymap_report_event);