@@ -17,6 +17,8 @@
* Add debug Paramater change Driver name in hid_driver structure
* 1.2 - N-trig - Change ntrig_input_mapping
* 1.3 - N-trig - Change ntrig_input_mapped
+ * 1.4 - N-trig - Add ntrig_send_report function
+ * send set feature command to firmware
*/
/*
@@ -361,6 +363,54 @@ static int ntrig_event(struct hid_device *hid, struct hid_field *field,
return 1;
}
+/*
+ * This function used to configure N-trig firmware
+ * The first command we need to send to firmware is change
+ * to Multi-touch Mode we don't receive a reply
+ */
+static int ntrig_send_report(struct hid_device *hid)
+{
+ struct hid_report *report;
+ struct list_head *report_list =
+ &hid->report_enum[HID_FEATURE_REPORT].report_list;
+
+ if (list_empty(report_list)) {
+ ntrig_dbg("no feature reports found\n");
+ return -ENODEV;
+ }
+ report = list_first_entry(report_list, struct hid_report, list);
+ if (report->maxfield < 1)
+ return -ENODEV;
+
+ list_for_each_entry(report,
+ report_list, list) {
+ if (report->maxfield < 1) {
+ ntrig_dbg("no fields in the report\n");
+ continue;
+ }
+ ntrig_dbg("Report ID %x\n", report->id);
+ switch (report->id) {
+ case REPORTID_DRIVER_ALIVE:
+ usbhid_submit_report(hid, report, USB_DIR_OUT);
+ break;
+ /*
+ * These command will implement later accroding to demand
+ */
+ case REPORTID_GET_VERSION: /* FALLTHRU */
+ case REPORTID_SET_MODE_DUAL: /* FALLTHRU */
+ case REPORTID_CALIBRATION: /* FALLTHRU */
+ case REPORTID_GET_MODE: /* FALLTHRU */
+ case REPORTID_SET_MODE_PEN: /* FALLTHRU */
+ case REPORTID_SET_MODE_TOUCH: /* FALLTHRU */
+ case REPORTID_CALIBRATION_RESPOND:/* FALLTHRU */
+ case HID_CAPACITORS_CALIB: /* FALLTHRU */
+ case HID_GET_CAPACITORS_CALIB_DONE:
+ break;
+ }
+ }
+ return 0;
+}
+
static int ntrig_probe(struct hid_device *hdev, const struct hid_device_id *id)
{
int ret;