Lines Matching refs:HID
1 HID I/O Transport Drivers
4 The HID subsystem is independent of the underlying transport driver. Initially,
5 only USB was supported, but other specifications adopted the HID design and
9 1) HID Bus
12 The HID subsystem is designed as a bus. Any I/O subsystem may provide HID
13 devices and register them with the HID bus. HID core then loads generic device
15 transport and device setup/management. HID core is responsible of
33 | HID Core |
46 Transport: USB-HID, I2C-HID, BT-HIDP
48 Everything below "HID Core" is simplified in this graph as it is only of
49 interest to HID device drivers. Transport drivers do not need to know the
56 transport drivers. Transport drivers use this to find any suitable HID device.
57 They allocate HID device objects and register them with HID core. Transport
58 drivers are not required to register themselves with HID core. HID core is never
63 device. Once a device is registered with HID core, the callbacks provided via
64 this struct are used by HID core to communicate with the device.
67 HID core will operate a device as long as it is registered regardless of any
69 must unregister the device from HID core and HID core will stop using the
78 verifications. Generally, HID calls operating on asynchronous channels must be
87 HID core requires transport drivers to follow a given design. A Transport
88 driver must provide two bi-directional I/O channels to each HID device. These
110 Communication between devices and HID core is mostly done via HID reports. A
135 HID audio speakers make great use of it).
145 is enforced by HID core as several transport drivers don't allow multiple
151 GET_REPORT is only used by custom HID device drivers to query device state.
152 Normally, HID core caches any device state so this request is not necessary
153 on devices that follow the HID specs except during device initialization to
164 A device must answer with a synchronous acknowledgement. However, HID core
165 does not require transport drivers to forward this acknowledgement to HID
168 restriction is enforced by HID core as some transport drivers do not support
171 Other ctrl-channel requests are supported by USB-HID but are not available
174 - GET/SET_IDLE: Only used by USB-HID and I2C-HID.
175 - GET/SET_PROTOCOL: Not used by HID core.
176 - RESET: Used by I2C-HID, not hooked up in HID core.
177 - SET_POWER: Used by I2C-HID, not hooked up in HID core.
179 2) HID API
186 with HID core:
214 Once hid_add_device() is entered, HID core might use the callbacks provided in
222 Once hid_destroy_device() returns, HID core will no longer make use of any
228 The available HID callbacks are:
230 Called from HID device drivers once they want to use the device. Transport
232 devices are already set up before transport drivers register them to HID core
233 so this is mostly only used by USB-HID.
236 Called from HID device drivers once they are done with a device. Transport
238 ->start() might be called again if another HID device driver is loaded on the
244 Called from HID device drivers once they are interested in data reports.
248 ->open() calls are nested for each client that opens the HID device.
251 Called from HID device drivers after ->open() was called but they are no
260 drivers must read the HID report-descriptor from the device and tell HID core
264 Called by HID core to give PM hints to transport drivers. Usually this is
269 Send an HID request on the ctrl channel. "report" contains the report that
272 This callback is optional. If not provided, HID core will assemble a raw
273 report following the HID specs and send it via the ->raw_request() callback.
277 Used by HID core before calling ->request() again. A transport driver can use
290 Send raw output report via intr channel. Used by some HID device drivers
296 Perform SET/GET_IDLE request. Only used by USB-HID, do not implement!
302 handle any I/O-related state-tracking themselves. HID core does not implement
304 given HID transport specification.
306 Every raw data packet read from a device must be fed into HID core via
314 Acknowledgements to SET_REPORT requests are not of interest to HID core.