/** * quickspi_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 quickspi_hid_parse(struct hid_device *hid)
{ struct quickspi_device *qsdev = hid->driver_data;
if (qsdev->report_descriptor) return hid_parse_report(hid, qsdev->report_descriptor,
le16_to_cpu(qsdev->dev_desc.rep_desc_len));
/** * quickspi_hid_probe() - Register HID low level driver * * @qsdev: point to quickspi device * * This function is used to allocate and add HID device. * * Return: 0 on success, non zero on error.
*/ int quickspi_hid_probe(struct quickspi_device *qsdev)
{ 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;
}
qsdev->hid_dev = hid;
return 0;
}
/** * quickspi_hid_remove() - Destroy HID device * * @qsdev: point to quickspi device * * Return: 0 on success, non zero on error.
*/ void quickspi_hid_remove(struct quickspi_device *qsdev)
{
hid_destroy_device(qsdev->hid_dev);
}
/** * quickspi_hid_send_report() - Send HID input report data to HID core * * @qsdev: point to quickspi 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 quickspi_hid_send_report(struct quickspi_device *qsdev, void *data, size_t data_len)
{ int ret;
ret = hid_input_report(qsdev->hid_dev, HID_INPUT_REPORT, data, data_len, 1); if (ret)
dev_err(qsdev->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.