Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46011e97 authored by Jiri Kosina's avatar Jiri Kosina
Browse files

Merge branch 'for-4.20/multitouch' into for-linus

hid-multitouch driver cleanup
parents 5099bc83 7ffa13be
Loading
Loading
Loading
Loading
+32 −40
Original line number Diff line number Diff line
@@ -1319,6 +1319,13 @@ static int mt_input_mapping(struct hid_device *hdev, struct hid_input *hi,
		return mt_touch_input_mapping(hdev, hi, field, usage, bit, max,
					      application);

	/*
	 * some egalax touchscreens have "application == DG_TOUCHSCREEN"
	 * for the stylus. Overwrite the hid_input application
	 */
	if (field->physical == HID_DG_STYLUS)
		hi->application = HID_DG_STYLUS;

	/* let hid-core decide for the others */
	return 0;
}
@@ -1507,14 +1514,12 @@ static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)
	struct mt_device *td = hid_get_drvdata(hdev);
	char *name;
	const char *suffix = NULL;
	unsigned int application = 0;
	struct mt_report_data *rdata;
	struct mt_application *mt_application = NULL;
	struct hid_report *report;
	int ret;

	list_for_each_entry(report, &hi->reports, hidinput_list) {
		application = report->application;
		rdata = mt_find_report_data(td, report);
		if (!rdata) {
			hid_err(hdev, "failed to allocate data for report\n");
@@ -1529,21 +1534,9 @@ static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)
			if (ret)
				return ret;
		}

		/*
		 * some egalax touchscreens have "application == DG_TOUCHSCREEN"
		 * for the stylus. Check this first, and then rely on
		 * the application field.
		 */
		if (report->field[0]->physical == HID_DG_STYLUS) {
			suffix = "Pen";
			/* force BTN_STYLUS to allow tablet matching in udev */
			__set_bit(BTN_STYLUS, hi->input->keybit);
		}
	}

	if (!suffix) {
		switch (application) {
	switch (hi->application) {
	case HID_GD_KEYBOARD:
	case HID_GD_KEYPAD:
	case HID_GD_MOUSE:
@@ -1569,7 +1562,6 @@ static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)
		suffix = "UNKNOWN";
		break;
	}
	}

	if (suffix) {
		name = devm_kzalloc(&hi->input->dev,