linux/drivers
David Herrmann fcfcf0deb8 HID: uhid: implement feature requests
HID standard allows sending a feature request to the device which is
answered by an HID report. uhid implements this by sending a UHID_FEATURE
event to user-space which then must answer with UHID_FEATURE_ANSWER. If it
doesn't do this in a timely manner, the request is discarded silently.

We serialize the feature requests, that is, there is always only a single
active feature-request sent to user-space, other requests have to wait.
HIDP and USB-HID do it the same way.

Because we discard feature-requests silently, we must make sure to match
a response to the corresponding request. We use sequence-IDs for this so
user-space must copy the ID from the request into the answer.
Feature-answers are ignored if they do not contain the same ID as the
currently pending feature request.

Internally, we must make sure that feature-requests are synchronized with
UHID_DESTROY and close() events. We must not dead-lock when closing the
HID device, either, so we have to use separate locks.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-06-18 13:42:03 +02:00
..
accessibility
acpi Driver core pull for 3.5-rc1 2012-05-22 16:02:13 -07:00
amba AMBA: get rid of last two uses of NO_IRQ 2012-05-03 11:33:15 +01:00
ata Change summary: 2012-05-03 17:16:52 -07:00
atm skb: Add inline helper for getting the skb end offset from head 2012-05-06 13:13:19 -04:00
auxdisplay
base Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-05-22 18:27:32 -07:00
bcma Merge 3.4-rc6 into usb-next 2012-05-07 09:03:39 -07:00
block Autogenerated GPG tag for Rusty D1ADB8F1: 15EE 8D6C AB0E 7F0C F999 BFCB D920 0E6C D1AD B8F1 2012-05-21 20:20:23 -07:00
bluetooth USB: Disable hub-initiated LPM for comms devices. 2012-05-18 15:42:55 -07:00
cdrom
char Staging tree pull request for 3.5-rc1 2012-05-22 16:34:21 -07:00
clk CLKDEV: provide helpers for common clock framework 2012-05-02 09:30:32 +01:00
clocksource ARM: ux500: delete U5500 support 2012-05-02 00:39:43 +02:00
connector
cpufreq ARM: ux500: core U9540 support 2012-05-02 00:25:13 +02:00
cpuidle cpuidle: Use kick_all_cpus_sync() 2012-05-08 12:35:06 +02:00
crypto Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2012-05-21 12:41:17 -07:00
dca
devfreq
dio
dma Merge branch 'fixes' of git://git.infradead.org/users/vkoul/slave-dma 2012-05-17 09:57:13 -07:00
edac
eisa
extcon Driver core pull for 3.5-rc1 2012-05-22 16:02:13 -07:00
firewire
firmware efivars: Improve variable validation 2012-05-03 17:19:19 -07:00
gpio Driver core pull for 3.5-rc1 2012-05-22 16:02:13 -07:00
gpu drm/nouveau/i2c: resume use of i2c-algo-bit, rather than custom stack 2012-05-07 11:02:38 +01:00
hid HID: uhid: implement feature requests 2012-06-18 13:42:03 +02:00
hsi
hv Driver core pull for 3.5-rc1 2012-05-22 16:02:13 -07:00
hwmon hwmon: (coretemp) Increase CPU core limit 2012-05-01 09:16:14 -07:00
hwspinlock
i2c arm-soc: soc-specific pinctrl changes 2012-05-22 09:39:42 -07:00
ide
idle
ieee802154 drivers/ieee802154: IEEE 802.15.4 loopback driver 2012-05-16 15:17:08 -04:00
iio iio: Use dev_to_iio_dev() 2012-05-14 13:37:45 -07:00
infiniband InfiniBand/RDMA changes for the 3.5 merge window: 2012-05-21 17:54:55 -07:00
input USB 3.5-rc1 pull request 2012-05-22 15:50:46 -07:00
iommu iommu: Fix off by one in dmar_get_fault_reason() 2012-05-14 14:37:47 +02:00
isdn TTY pull request for 3.5-rc1 2012-05-22 16:12:24 -07:00
leds drivers/leds: correct __devexit annotations 2012-05-10 15:06:44 -07:00
lguest
macintosh
mca
md A fix to the thin provisioning userspace interface. 2012-05-18 18:22:45 -07:00
media USB 3.5-rc1 pull request 2012-05-22 15:50:46 -07:00
memory memory: tegra{20,30}-mc: Remove empty *_remove() 2012-05-14 12:52:52 -07:00
memstick
message tokenring: delete all remaining driver support 2012-05-15 20:23:16 -04:00
mfd arm-soc: First batch of cleanups 2012-05-22 09:23:24 -07:00
misc Staging tree pull request for 3.5-rc1 2012-05-22 16:34:21 -07:00
mmc arm-soc: soc-specific pinctrl changes 2012-05-22 09:39:42 -07:00
mtd arm-soc: board specific changes 2012-05-22 13:32:53 -07:00
net Staging tree pull request for 3.5-rc1 2012-05-22 16:34:21 -07:00
nfc
nubus
of arm-soc: device tree conversions, part 1 2012-05-22 09:30:52 -07:00
oprofile
parisc parisc: move definition of PAGE0 to asm/page.h 2012-05-10 15:12:08 -07:00
parport Driver core pull for 3.5-rc1 2012-05-22 16:02:13 -07:00
pci PCI changes for the 3.5 merge window: 2012-05-21 16:24:54 -07:00
pcmcia pcmcia: add driver for hx4700 2012-05-07 09:56:39 +08:00
pinctrl arm-soc: soc-specific pinctrl changes 2012-05-22 09:39:42 -07:00
platform Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-05-06 12:19:38 -07:00
pnp
power
pps
ps3
ptp Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-05-16 22:17:37 -04:00
rapidio
regulator regulator updates for 3.5 2012-05-21 16:49:16 -07:00
remoteproc remoteproc: fix off-by-one bug in __rproc_free_vrings 2012-05-13 23:15:42 +03:00
rpmsg
rtc arm-soc: First batch of cleanups 2012-05-22 09:23:24 -07:00
s390 TTY pull request for 3.5-rc1 2012-05-22 16:12:24 -07:00
sbus
scsi SCSI misc on 20120521 2012-05-21 17:46:21 -07:00
sfi
sh
sn
spi spi/imx: adopt pinctrl support 2012-05-12 09:43:11 +08:00
ssb
staging Staging tree pull request for 3.5-rc1 2012-05-22 16:34:21 -07:00
target Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending 2012-05-21 17:37:09 -07:00
tc
thermal
tty TTY pull request for 3.5-rc1 2012-05-22 16:12:24 -07:00
uio uio_pdrv_genirq: get irq through platform resource if not set otherwise 2012-05-15 08:44:58 -07:00
usb TTY pull request for 3.5-rc1 2012-05-22 16:12:24 -07:00
uwb
vhost Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-05-16 22:17:37 -04:00
video USB 3.5-rc1 pull request 2012-05-22 15:50:46 -07:00
virt
virtio virtio-mmio: Devices parameter parsing 2012-05-22 12:16:15 +09:30
vlynq
vme VME: Move API documentation to Documentation folder 2012-05-08 16:01:34 -07:00
w1 w1: w1_ds2408.c: quite sparse noise about using plaing integer as NULL pointer 2012-05-04 16:25:30 -07:00
watchdog Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-05-21 19:25:14 -07:00
xen xen/Kconfig: fix Kconfig layout 2012-05-07 12:26:28 -04:00
zorro
Kconfig Staging tree pull request for 3.5-rc1 2012-05-22 16:34:21 -07:00
Makefile Staging tree pull request for 3.5-rc1 2012-05-22 16:34:21 -07:00