Lines Matching defs:shid

34 static int ssam_kbd_get_descriptor(struct surface_hid_device *shid, u8 entry, u8 *buf, size_t len)
40 rqst.target_category = shid->uid.category;
41 rqst.target_id = shid->uid.target;
43 rqst.instance_id = shid->uid.instance;
52 status = ssam_retry(ssam_request_do_sync_onstack, shid->ctrl, &rqst, &rsp, sizeof(entry));
57 dev_err(shid->dev, "invalid descriptor length: got %zu, expected, %zu\n",
65 static int ssam_kbd_set_caps_led(struct surface_hid_device *shid, bool value)
70 rqst.target_category = shid->uid.category;
71 rqst.target_id = shid->uid.target;
73 rqst.instance_id = shid->uid.instance;
78 return ssam_retry(ssam_request_do_sync_onstack, shid->ctrl, &rqst, NULL, sizeof(value_u8));
81 static int ssam_kbd_get_feature_report(struct surface_hid_device *shid, u8 *buf, size_t len)
88 rqst.target_category = shid->uid.category;
89 rqst.target_id = shid->uid.target;
91 rqst.instance_id = shid->uid.instance;
100 status = ssam_retry(ssam_request_do_sync_onstack, shid->ctrl, &rqst, &rsp, sizeof(payload));
105 dev_err(shid->dev, "invalid feature report length: got %zu, expected, %zu\n",
126 struct surface_hid_device *shid = container_of(nf, struct surface_hid_device, notif);
133 if (shid->uid.category != event->target_category)
136 if (shid->uid.target != event->target_id)
139 if (shid->uid.instance != event->instance_id)
145 hid_input_report(shid->hid, HID_INPUT_REPORT, (u8 *)&event->data[0], event->length, 0);
184 static int skbd_output_report(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len)
189 caps_led = skbd_get_caps_led_value(shid->hid, rprt_id, buf, len);
193 status = ssam_kbd_set_caps_led(shid, caps_led);
200 static int skbd_get_feature_report(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len)
214 status = ssam_kbd_get_feature_report(shid, report, ARRAY_SIZE(report));
225 static int skbd_set_feature_report(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len)
237 struct surface_hid_device *shid;
244 shid = devm_kzalloc(&pdev->dev, sizeof(*shid), GFP_KERNEL);
245 if (!shid)
248 shid->dev = &pdev->dev;
249 shid->ctrl = ctrl;
251 shid->uid.domain = SSAM_DOMAIN_SERIALHUB;
252 shid->uid.category = SSAM_SSH_TC_KBD;
253 shid->uid.target = SSAM_SSH_TID_KIP;
254 shid->uid.instance = 0;
255 shid->uid.function = 0;
257 shid->notif.base.priority = 1;
258 shid->notif.base.fn = ssam_kbd_event_fn;
259 shid->notif.event.reg = SSAM_EVENT_REGISTRY_SAM;
260 shid->notif.event.id.target_category = shid->uid.category;
261 shid->notif.event.id.instance = shid->uid.instance;
262 shid->notif.event.mask = SSAM_EVENT_MASK_NONE;
263 shid->notif.event.flags = 0;
265 shid->ops.get_descriptor = ssam_kbd_get_descriptor;
266 shid->ops.output_report = skbd_output_report;
267 shid->ops.get_feature_report = skbd_get_feature_report;
268 shid->ops.set_feature_report = skbd_set_feature_report;
270 platform_set_drvdata(pdev, shid);
271 return surface_hid_device_add(shid);