Commit 04fba786 authored by Goffredo Baroncelli's avatar Goffredo Baroncelli Committed by Jiri Kosina

HID: Export hid_field_extract()

Rename the function extract() to hid_field_extract(), make it external linkage
to allow the use from other modules.
Suggested-by: default avatarJiri Kosina <jkosina@suse.cz>
Signed-off-by: default avatarGoffredo Baroncelli <kreijack@inwind.it>
Reviewed-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent f4e1eb96
...@@ -1061,13 +1061,13 @@ static u32 s32ton(__s32 value, unsigned n) ...@@ -1061,13 +1061,13 @@ static u32 s32ton(__s32 value, unsigned n)
* Search linux-kernel and linux-usb-devel archives for "hid-core extract". * Search linux-kernel and linux-usb-devel archives for "hid-core extract".
*/ */
static __u32 extract(const struct hid_device *hid, __u8 *report, __u32 hid_field_extract(const struct hid_device *hid, __u8 *report,
unsigned offset, unsigned n) unsigned offset, unsigned n)
{ {
u64 x; u64 x;
if (n > 32) if (n > 32)
hid_warn(hid, "extract() called with n (%d) > 32! (%s)\n", hid_warn(hid, "hid_field_extract() called with n (%d) > 32! (%s)\n",
n, current->comm); n, current->comm);
report += offset >> 3; /* adjust byte index */ report += offset >> 3; /* adjust byte index */
...@@ -1076,6 +1076,7 @@ static __u32 extract(const struct hid_device *hid, __u8 *report, ...@@ -1076,6 +1076,7 @@ static __u32 extract(const struct hid_device *hid, __u8 *report,
x = (x >> offset) & ((1ULL << n) - 1); /* extract bit field */ x = (x >> offset) & ((1ULL << n) - 1); /* extract bit field */
return (u32) x; return (u32) x;
} }
EXPORT_SYMBOL_GPL(hid_field_extract);
/* /*
* "implement" : set bits in a little endian bit stream. * "implement" : set bits in a little endian bit stream.
...@@ -1221,9 +1222,9 @@ static void hid_input_field(struct hid_device *hid, struct hid_field *field, ...@@ -1221,9 +1222,9 @@ static void hid_input_field(struct hid_device *hid, struct hid_field *field,
for (n = 0; n < count; n++) { for (n = 0; n < count; n++) {
value[n] = min < 0 ? value[n] = min < 0 ?
snto32(extract(hid, data, offset + n * size, size), snto32(hid_field_extract(hid, data, offset + n * size,
size) : size), size) :
extract(hid, data, offset + n * size, size); hid_field_extract(hid, data, offset + n * size, size);
/* Ignore report if ErrorRollOver */ /* Ignore report if ErrorRollOver */
if (!(field->flags & HID_MAIN_ITEM_VARIABLE) && if (!(field->flags & HID_MAIN_ITEM_VARIABLE) &&
......
...@@ -815,6 +815,8 @@ void hid_disconnect(struct hid_device *hid); ...@@ -815,6 +815,8 @@ void hid_disconnect(struct hid_device *hid);
const struct hid_device_id *hid_match_id(struct hid_device *hdev, const struct hid_device_id *hid_match_id(struct hid_device *hdev,
const struct hid_device_id *id); const struct hid_device_id *id);
s32 hid_snto32(__u32 value, unsigned n); s32 hid_snto32(__u32 value, unsigned n);
__u32 hid_field_extract(const struct hid_device *hid, __u8 *report,
unsigned offset, unsigned n);
/** /**
* hid_device_io_start - enable HID input during probe, remove * hid_device_io_start - enable HID input during probe, remove
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment