Lines Matching full:hid

3  * Common/core components for the Surface System Aggregator Module (SSAM) HID
4 * transport driver. Provides support for integrated HID devices on Microsoft
11 #include <linux/hid.h>
52 dev_err(shid->dev, "unexpected HID descriptor length: got %u, expected %zu\n", in surface_hid_load_hid_descriptor()
58 dev_err(shid->dev, "unexpected HID descriptor type: got %#04x, expected %#04x\n", in surface_hid_load_hid_descriptor()
102 static int surface_hid_start(struct hid_device *hid) in surface_hid_start() argument
104 struct surface_hid_device *shid = hid->driver_data; in surface_hid_start()
109 static void surface_hid_stop(struct hid_device *hid) in surface_hid_stop() argument
111 struct surface_hid_device *shid = hid->driver_data; in surface_hid_stop()
116 * also includes unregistration of HID events, so we need to check this in surface_hid_stop()
126 static int surface_hid_open(struct hid_device *hid) in surface_hid_open() argument
131 static void surface_hid_close(struct hid_device *hid) in surface_hid_close() argument
135 static int surface_hid_parse(struct hid_device *hid) in surface_hid_parse() argument
137 struct surface_hid_device *shid = hid->driver_data; in surface_hid_parse()
151 status = hid_parse_report(hid, buf, len); in surface_hid_parse()
157 static int surface_hid_raw_request(struct hid_device *hid, unsigned char reportnum, u8 *buf, in surface_hid_raw_request() argument
160 struct surface_hid_device *shid = hid->driver_data; in surface_hid_raw_request()
201 shid->hid = hid_allocate_device(); in surface_hid_device_add()
202 if (IS_ERR(shid->hid)) in surface_hid_device_add()
203 return PTR_ERR(shid->hid); in surface_hid_device_add()
205 shid->hid->dev.parent = shid->dev; in surface_hid_device_add()
206 shid->hid->bus = BUS_HOST; in surface_hid_device_add()
207 shid->hid->vendor = get_unaligned_le16(&shid->attrs.vendor); in surface_hid_device_add()
208 shid->hid->product = get_unaligned_le16(&shid->attrs.product); in surface_hid_device_add()
209 shid->hid->version = get_unaligned_le16(&shid->hid_desc.hid_version); in surface_hid_device_add()
210 shid->hid->country = shid->hid_desc.country_code; in surface_hid_device_add()
212 snprintf(shid->hid->name, sizeof(shid->hid->name), "Microsoft Surface %04X:%04X", in surface_hid_device_add()
213 shid->hid->vendor, shid->hid->product); in surface_hid_device_add()
215 strscpy(shid->hid->phys, dev_name(shid->dev), sizeof(shid->hid->phys)); in surface_hid_device_add()
217 shid->hid->driver_data = shid; in surface_hid_device_add()
218 shid->hid->ll_driver = &surface_hid_ll_driver; in surface_hid_device_add()
220 status = hid_add_device(shid->hid); in surface_hid_device_add()
222 hid_destroy_device(shid->hid); in surface_hid_device_add()
230 hid_destroy_device(shid->hid); in surface_hid_device_destroy()
243 return hid_driver_suspend(d->hid, PMSG_SUSPEND); in surface_hid_suspend()
250 return hid_driver_resume(d->hid); in surface_hid_resume()
257 return hid_driver_suspend(d->hid, PMSG_FREEZE); in surface_hid_freeze()
264 return hid_driver_suspend(d->hid, PMSG_HIBERNATE); in surface_hid_poweroff()
271 return hid_driver_reset_resume(d->hid); in surface_hid_restore()
292 MODULE_DESCRIPTION("HID transport driver core for Surface System Aggregator Module");