Commit bc73dd39 authored by Henrik Rydberg's avatar Henrik Rydberg Committed by Dmitry Torokhov
Browse files

Input: wacom - collect device quirks into single function



Collect device-specific code into a single function, and use quirks to
flag specific behavior instead.

Signed-off-by: default avatarHenrik Rydberg <rydberg@euromail.se>
Acked-by: default avatarPing Cheng <pingc@wacom.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 4a88081e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -118,6 +118,7 @@ struct wacom {
extern const struct usb_device_id wacom_ids[];

void wacom_wac_irq(struct wacom_wac *wacom_wac, size_t len);
void wacom_setup_device_quirks(struct wacom_features *features);
void wacom_setup_input_capabilities(struct input_dev *input_dev,
				    struct wacom_wac *wacom_wac);
#endif
+3 −8
Original line number Diff line number Diff line
@@ -381,12 +381,6 @@ static int wacom_retrieve_hid_descriptor(struct usb_interface *intf,
	if (error)
		goto out;

	/* touch device found but size is not defined. use default */
	if (features->device_type == BTN_TOOL_DOUBLETAP && !features->x_max) {
		features->x_max = 1023;
		features->y_max = 1023;
	}

 out:
	return error;
}
@@ -522,10 +516,11 @@ static int wacom_probe(struct usb_interface *intf, const struct usb_device_id *i
	if (error)
		goto fail2;

	wacom_setup_device_quirks(features);

	strlcpy(wacom_wac->name, features->name, sizeof(wacom_wac->name));

	if (features->type == TABLETPC || features->type == TABLETPC2FG ||
	    features->type == BAMBOO_PT) {
	if (features->quirks & WACOM_QUIRK_MULTI_INPUT) {
		/* Append the device type to the name */
		strlcat(wacom_wac->name,
			features->device_type == BTN_TOOL_PEN ?
+16 −0
Original line number Diff line number Diff line
@@ -941,6 +941,22 @@ static void wacom_setup_intuos(struct wacom_wac *wacom_wac)
	input_set_abs_params(input_dev, ABS_THROTTLE, -1023, 1023, 0, 0);
}


void wacom_setup_device_quirks(struct wacom_features *features)
{

	/* touch device found but size is not defined. use default */
	if (features->device_type == BTN_TOOL_DOUBLETAP && !features->x_max) {
		features->x_max = 1023;
		features->y_max = 1023;
	}

	/* these device have multiple inputs */
	if (features->type == TABLETPC || features->type == TABLETPC2FG ||
	    features->type == BAMBOO_PT)
		features->quirks |= WACOM_QUIRK_MULTI_INPUT;
}

void wacom_setup_input_capabilities(struct input_dev *input_dev,
				    struct wacom_wac *wacom_wac)
{
+4 −0
Original line number Diff line number Diff line
@@ -38,6 +38,9 @@
#define WACOM_REPORT_TPC1FG		6
#define WACOM_REPORT_TPC2FG		13

/* device quirks */
#define WACOM_QUIRK_MULTI_INPUT		0x0001

enum {
	PENPARTNER = 0,
	GRAPHIRE,
@@ -79,6 +82,7 @@ struct wacom_features {
	int y_fuzz;
	int pressure_fuzz;
	int distance_fuzz;
	unsigned quirks;
};

struct wacom_shared {