Commit ee007036 authored by Nikolai Kondrashov's avatar Nikolai Kondrashov Committed by Jiri Kosina
Browse files

HID: uclogic: Support custom device suffix for frames



Support assigning custom device name suffixes to frame input devices
instead of just "Pad". This allows distinguishing multiple frame input
devices, e.g. for Huion HS610.

Signed-off-by: default avatarNikolai Kondrashov <spbnick@gmail.com>
Signed-off-by: default avatarJosé Expósito <jose.exposito89@gmail.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent d170e8e0
Loading
Loading
Loading
Loading
+25 −21
Original line number Diff line number Diff line
@@ -110,6 +110,8 @@ static int uclogic_input_configured(struct hid_device *hdev,
	for (i = 0; i < ARRAY_SIZE(params->frame_list); i++) {
		frame = &params->frame_list[i];
		if (hi->report->id == frame->id) {
			/* Assign custom suffix, if any */
			suffix = frame->suffix;
			/*
			 * Disable EV_MSC reports for touch ring interfaces to
			 * make the Wacom driver pickup touch ring extents
@@ -119,6 +121,7 @@ static int uclogic_input_configured(struct hid_device *hdev,
		}
	}

	if (!suffix) {
		field = hi->report->field[0];

		switch (field->application) {
@@ -141,6 +144,7 @@ static int uclogic_input_configured(struct hid_device *hdev,
			suffix = "System Control";
			break;
		}
	}

	if (suffix) {
		len = strlen(hdev->name) + 2 + strlen(suffix);
+6 −0
Original line number Diff line number Diff line
@@ -114,6 +114,10 @@ struct uclogic_params_frame {
	 * Report ID, if reports should be tweaked, zero if not.
	 */
	unsigned int id;
	/*
	 * The suffix to add to the input device name, if not NULL.
	 */
	const char *suffix;
	/*
	 * Number of the least-significant bit of the 2-bit state of a rotary
	 * encoder, in the report. Cannot point to a 2-bit field crossing a
@@ -212,6 +216,7 @@ extern int uclogic_params_init(struct uclogic_params *params,
		".frame_list[0].desc_ptr = %p\n"                \
		".frame_list[0].desc_size = %u\n"               \
		".frame_list[0].id = %u\n"                      \
		".frame_list[0].suffix = %s\n"                  \
		".frame_list[0].re_lsb = %u\n"                  \
		".frame_list[0].dev_id_byte = %u\n"             \
		".frame_list[0].touch_ring_byte = %u\n"         \
@@ -234,6 +239,7 @@ extern int uclogic_params_init(struct uclogic_params *params,
		(_params)->frame_list[0].desc_ptr,                          \
		(_params)->frame_list[0].desc_size,                         \
		(_params)->frame_list[0].id,                                \
		(_params)->frame_list[0].suffix,                            \
		(_params)->frame_list[0].re_lsb,                            \
		(_params)->frame_list[0].dev_id_byte,                       \
		(_params)->frame_list[0].touch_ring_byte,                   \