From: "Henrik Rydberg" <rydberg@euromail.se>
To: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Jiri Kosina <jkosina@suse.cz>, Stephane Chatty <chatty@enac.fr>,
linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 01/25] HID: break out hid_extract_field
Date: Mon, 28 Jan 2013 16:04:29 +0100 [thread overview]
Message-ID: <20130128150429.GA3465@polaris.bitmath.org> (raw)
In-Reply-To: <1359120190-18281-2-git-send-email-benjamin.tissoires@gmail.com>
Hi Benjamin,
> Breaking out this function allows third parties hid drivers to retrieve
> the data fields of a hid report in the raw_event callback.
>
> No functional changes, only exports the function.
>
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
> ---
> drivers/hid/hid-core.c | 60 ++++++++++++++++++++++++++++++++++----------------
> include/linux/hid.h | 1 +
> 2 files changed, 42 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
> index 5ae2cb1..ea478f5 100644
> --- a/drivers/hid/hid-core.c
> +++ b/drivers/hid/hid-core.c
> @@ -962,6 +962,45 @@ static void implement(const struct hid_device *hid, __u8 *report,
> }
>
> /*
> + * Extract and allocate a data field from a little endian report (bit array).
> + */
> +
> +s32 *hid_extract_field(const struct hid_device *hid, struct hid_field *field,
> + __u8 *data)
> +{
> + unsigned n;
> + unsigned count = field->report_count;
> + unsigned offset = field->report_offset;
> + unsigned size = field->report_size;
> + __s32 min = field->logical_minimum;
> + __s32 max = field->logical_maximum;
> + __s32 *value;
> +
> + value = kmalloc(sizeof(__s32) * count, GFP_ATOMIC);
> + if (!value)
> + return value;
> +
> + for (n = 0; n < count; n++) {
> +
> + value[n] = min < 0 ?
> + snto32(extract(hid, data, offset + n * size, size),
> + size) :
> + extract(hid, data, offset + n * size, size);
> +
> + /* Ignore report if ErrorRollOver */
> + if (!(field->flags & HID_MAIN_ITEM_VARIABLE) &&
> + value[n] >= min && value[n] <= max &&
> + field->usage[value[n] - min].hid == HID_UP_KEYBOARD + 1) {
> + kfree(value);
> + return NULL;
> + }
> + }
> +
> + return value;
> +}
> +EXPORT_SYMBOL_GPL(hid_extract_field);
> +
I would rather see the extensive use of malloc go away than extend its
usage to drivers.
Thanks,
Henrik
next prev parent reply other threads:[~2013-01-28 14:59 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-25 13:22 [PATCH 00/25] Support of Nexio 42" and new default class for hid-multitouch Benjamin Tissoires
2013-01-25 13:22 ` [PATCH 01/25] HID: break out hid_extract_field Benjamin Tissoires
2013-01-28 15:04 ` Henrik Rydberg [this message]
2013-01-25 13:22 ` [PATCH 02/25] HID: multitouch: add support for Nexio 42" panel Benjamin Tissoires
2013-01-28 15:01 ` Henrik Rydberg
2013-01-28 16:08 ` Benjamin Tissoires
2013-01-28 16:56 ` Stéphane Chatty
2013-01-28 17:50 ` Benjamin Tissoires
2013-01-25 13:22 ` [PATCH 03/25] HID: multitouch: fix Win8 protocol for Sharp like devices Benjamin Tissoires
2013-01-25 13:22 ` [PATCH 04/25] HID: multitouch: ensure that serial devices make no use of contact count Benjamin Tissoires
2013-01-25 13:22 ` [PATCH 05/25] HID: multitouch: fix protocol for Sitronix 1403:5001 Benjamin Tissoires
2013-01-25 13:22 ` [PATCH 06/25] HID: multitouch: optimize FlatFrog panels Benjamin Tissoires
2013-01-28 15:10 ` Henrik Rydberg
2013-01-28 16:01 ` Benjamin Tissoires
2013-01-25 13:22 ` [PATCH 07/25] HID: multitouch: optimize 3M panels Benjamin Tissoires
2013-01-25 13:22 ` [PATCH 08/25] HID: multitouch: optimize Cypress panels Benjamin Tissoires
2013-01-25 13:22 ` [PATCH 09/25] HID: multitouch: optimize eGalax panels Benjamin Tissoires
2013-01-25 13:22 ` [PATCH 10/25] HID: multitouch: optimize Stantum panels Benjamin Tissoires
2013-01-25 13:22 ` [PATCH 11/25] HID: multitouch: optimize Quanta panels Benjamin Tissoires
2013-01-25 13:22 ` [PATCH 12/25] HID: multitouch: optimize Lumio panels Benjamin Tissoires
2013-01-25 13:22 ` [PATCH 13/25] HID: multitouch: optimize MosArt panels Benjamin Tissoires
2013-01-25 13:22 ` [PATCH 14/25] HID: multitouch: optimize Elo panels Benjamin Tissoires
2013-01-25 13:23 ` [PATCH 15/25] HID: multitouch: optimize Hanvon panels Benjamin Tissoires
2013-01-25 13:23 ` [PATCH 16/25] HID: multitouch: optimize IRTouch panels Benjamin Tissoires
2013-01-25 13:23 ` [PATCH 17/25] HID: multitouch: fix protocol for Cando 2087:0a02 Benjamin Tissoires
2013-01-25 13:23 ` [PATCH 18/25] HID: multitouch: optimize Cando panels Benjamin Tissoires
2013-01-25 13:23 ` [PATCH 19/25] HID: multitouch: optimize ActionStar panels Benjamin Tissoires
2013-01-25 13:23 ` [PATCH 20/25] HID: multitouch: optimize Atmel panels Benjamin Tissoires
2013-01-25 13:23 ` [PATCH 21/25] HID: multitouch: optimize Ideacom panels Benjamin Tissoires
2013-01-25 13:23 ` [PATCH 22/25] HID: multitouch: optimize LG panels Benjamin Tissoires
2013-01-25 13:23 ` [PATCH 23/25] HID: multitouch: optimize Nexio panels Benjamin Tissoires
2013-01-25 13:23 ` [PATCH 24/25] HID: multitouch: remove useless DUAL_NSMU_CONTACTID class Benjamin Tissoires
2013-01-25 13:23 ` [PATCH 25/25] HID: multitouch: make MT_CLS_ALWAYS_TRUE the new default class Benjamin Tissoires
2013-01-28 15:13 ` Henrik Rydberg
2013-01-28 15:54 ` Benjamin Tissoires
2013-01-28 15:23 ` [PATCH 00/25] Support of Nexio 42" and new default class for hid-multitouch Henrik Rydberg
2013-01-28 16:15 ` Benjamin Tissoires
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130128150429.GA3465@polaris.bitmath.org \
--to=rydberg@euromail.se \
--cc=benjamin.tissoires@gmail.com \
--cc=chatty@enac.fr \
--cc=dmitry.torokhov@gmail.com \
--cc=jkosina@suse.cz \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox