Lines Matching refs:shid

42 static int ssam_hid_get_descriptor(struct surface_hid_device *shid, u8 entry, u8 *buf, size_t len)
59 rqst.target_category = shid->uid.category;
60 rqst.target_id = shid->uid.target;
62 rqst.instance_id = shid->uid.instance;
83 status = ssam_retry(ssam_request_do_sync_onstack, shid->ctrl, &rqst, &rsp,
105 dev_err(shid->dev, "unexpected descriptor length: got %u, expected %zu\n",
113 static int ssam_hid_set_raw_report(struct surface_hid_device *shid, u8 rprt_id, bool feature,
124 rqst.target_category = shid->uid.category;
125 rqst.target_id = shid->uid.target;
126 rqst.instance_id = shid->uid.instance;
134 return ssam_retry(ssam_request_do_sync, shid->ctrl, &rqst, NULL);
137 static int ssam_hid_get_raw_report(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len)
142 rqst.target_category = shid->uid.category;
143 rqst.target_id = shid->uid.target;
144 rqst.instance_id = shid->uid.instance;
154 return ssam_retry(ssam_request_do_sync_onstack, shid->ctrl, &rqst, &rsp, sizeof(rprt_id));
159 struct surface_hid_device *shid = container_of(nf, struct surface_hid_device, notif);
164 hid_input_report(shid->hid, HID_INPUT_REPORT, (u8 *)&event->data[0], event->length, 0);
171 static int shid_output_report(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len)
175 status = ssam_hid_set_raw_report(shid, rprt_id, false, buf, len);
179 static int shid_get_feature_report(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len)
183 status = ssam_hid_get_raw_report(shid, rprt_id, buf, len);
187 static int shid_set_feature_report(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len)
191 status = ssam_hid_set_raw_report(shid, rprt_id, true, buf, len);
200 struct surface_hid_device *shid;
202 shid = devm_kzalloc(&sdev->dev, sizeof(*shid), GFP_KERNEL);
203 if (!shid)
206 shid->dev = &sdev->dev;
207 shid->ctrl = sdev->ctrl;
208 shid->uid = sdev->uid;
210 shid->notif.base.priority = 1;
211 shid->notif.base.fn = ssam_hid_event_fn;
212 shid->notif.event.reg = SSAM_EVENT_REGISTRY_REG(sdev->uid.target);
213 shid->notif.event.id.target_category = sdev->uid.category;
214 shid->notif.event.id.instance = sdev->uid.instance;
215 shid->notif.event.mask = SSAM_EVENT_MASK_STRICT;
216 shid->notif.event.flags = 0;
218 shid->ops.get_descriptor = ssam_hid_get_descriptor;
219 shid->ops.output_report = shid_output_report;
220 shid->ops.get_feature_report = shid_get_feature_report;
221 shid->ops.set_feature_report = shid_set_feature_report;
223 ssam_device_set_drvdata(sdev, shid);
224 return surface_hid_device_add(shid);