Lines Matching refs:shid

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