HID: Handle driver-specific device descriptor in core
authorHenrik Rydberg <rydberg@euromail.se>
Sun, 22 Apr 2012 12:21:40 +0000 (14:21 +0200)
committerJiri Kosina <jkosina@suse.cz>
Tue, 1 May 2012 10:54:53 +0000 (12:54 +0200)
commita7197c2e4120ce40e7e3f5580336b9a1dc791220
tree1f508022a41558ea29dc87baddcf8c2132f9bdd3
parent2a039bf5a6caa6b41c3839c1e3a19b20fb38270b
HID: Handle driver-specific device descriptor in core

The low-level driver can read the report descriptor, but it cannot
determine driver-specific changes to it. The hid core can fixup
and parse the report descriptor during driver attach, but does
not have direct access to the descriptor when doing so.

To be able to handle attach/detach of hid drivers properly,
a semantic change to hid_parse_report() is needed. This function has
been used in two ways, both as descriptor reader in the ll drivers and
as a parsor in the probe of the drivers. This patch splits the usage
by introducing hid_open_report(), and modifies the hid_parse() macro
to call hid_open_report() instead. The only usage of hid_parse_report()
is then to read and store the device descriptor. As a consequence, we
can handle the report fixups automatically inside the hid core.

Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Tested-by: Nikolai Kondrashov <spbnick@gmail.com>
Tested-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-core.c
include/linux/hid.h