/** * quicki2c_hid_parse() - HID core parse() callback * * @hid: HID device instance * * This function gets called during call to hid_add_device * * Return: 0 on success and non zero on error.
*/ staticint quicki2c_hid_parse(struct hid_device *hid)
{ struct quicki2c_device *qcdev = hid->driver_data;
if (qcdev->report_descriptor) return hid_parse_report(hid, qcdev->report_descriptor,
le16_to_cpu(qcdev->dev_desc.report_desc_len));
/** * quicki2c_hid_probe() - Register HID low level driver * * @qcdev: point to quicki2c device * * This function is used to allocate and add HID device. * * Return: 0 on success, non zero on error.
*/ int quicki2c_hid_probe(struct quicki2c_device *qcdev)
{ struct hid_device *hid; int ret;
hid = hid_allocate_device(); if (IS_ERR(hid)) return PTR_ERR(hid);
ret = hid_add_device(hid); if (ret) {
hid_destroy_device(hid); return ret;
}
qcdev->hid_dev = hid;
return 0;
}
/** * quicki2c_hid_remove() - Destroy HID device * * @qcdev: point to quicki2c device * * Return: 0 on success, non zero on error.
*/ void quicki2c_hid_remove(struct quicki2c_device *qcdev)
{
hid_destroy_device(qcdev->hid_dev);
}
/** * quicki2c_hid_send_report() - Send HID input report data to HID core * * @qcdev: point to quicki2c device * @data: point to input report data buffer * @data_len: the length of input report data * * Return: 0 on success, non zero on error.
*/ int quicki2c_hid_send_report(struct quicki2c_device *qcdev, void *data, size_t data_len)
{ int ret;
ret = hid_input_report(qcdev->hid_dev, HID_INPUT_REPORT, data, data_len, 1); if (ret)
dev_err(qcdev->dev, "Failed to send HID input report, ret = %d.\n", ret);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.