Re: [PATCH 1/7] HID: input: don't register unmapped input devices
From: Benjamin Tissoires <hidden>
Date: 2013-03-22 14:49:43
Also in:
lkml
On 03/19/2013 10:25 PM, Henrik Rydberg wrote:
Hi Benjamin,quoted
There is no need to register an input device containing no events. This allows drivers using the quirk MULTI_INPUT to register one input per report effectively used. For backward compatibility, we need to add a quirk to request this behavior. Signed-off-by: Benjamin Tissoires <redacted> --- drivers/hid/hid-input.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++ include/linux/hid.h | 1 + 2 files changed, 78 insertions(+)diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 21b196c..7aaf7d3 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c@@ -1198,6 +1198,67 @@ static struct hid_input *hidinput_allocate(struct hid_device *hid) return hidinput; } +static bool hidinput_has_been_populated(struct hid_input *hidinput) +{ + int i; + bool r = 0; + + for (i = 0; i < BITS_TO_LONGS(EV_CNT); i++) + r = r || hidinput->input->evbit[i];I believe there is a bit count method that will do this for you (weight).
Actually, weight does not work here. evbit[] is an array of long, and we still need to check if each field of this array is not null. Thus, the following can be used (r being a long here): r |= hidinput->input->evbit[i]; Cheers, Benjamin