diff options
| author | Benjamin Tissoires <benjamin.tissoires@redhat.com> | 2014-07-24 13:03:05 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2014-07-25 18:53:55 -0700 | 
| commit | 198fdee2829547ec4ff29bb56ea668790d23bc4b (patch) | |
| tree | 9a054b2cd421e7f4451ffb96b3eef5e19fd49aef /drivers/input/tablet | |
| parent | c669fb2b9ac47682b53f0a97d55c7ae4f2f3eaee (diff) | |
| download | linux-198fdee2829547ec4ff29bb56ea668790d23bc4b.tar.bz2 | |
Input: wacom - use hidinput_calc_abs_res instead of duplicating its code
This may infer a small difference with the previous implementation
due to the DIV_ROUND_CLOSEST() in the hid implementation.
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Reviewed-by: Jason Gerecke <killertofu@gmail.com>
Tested-by: Jason Gerecke <killertofu@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/tablet')
| -rw-r--r-- | drivers/input/tablet/wacom_sys.c | 48 | 
1 files changed, 9 insertions, 39 deletions
| diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c index ed27e7da5444..06e304b3bbfd 100644 --- a/drivers/input/tablet/wacom_sys.c +++ b/drivers/input/tablet/wacom_sys.c @@ -85,49 +85,19 @@ static void wacom_close(struct input_dev *dev)  }  /* - * Calculate the resolution of the X or Y axis, given appropriate HID data. - * This function is little more than hidinput_calc_abs_res stripped down. + * Calculate the resolution of the X or Y axis using hidinput_calc_abs_res.   */  static int wacom_calc_hid_res(int logical_extents, int physical_extents,  			       unsigned unit, int exponent)  { -	int prev; -	int unit_exponent = exponent; - -	/* Check if the extents are sane */ -	if (logical_extents <= 0 || physical_extents <= 0) -		return 0; - -	/* Convert physical_extents to millimeters */ -	if (unit == 0x11) {		/* If centimeters */ -		unit_exponent += 1; -	} else if (unit == 0x13) {	/* If inches */ -		prev = physical_extents; -		physical_extents *= 254; -		if (physical_extents < prev) -			return 0; -		unit_exponent -= 1; -	} else { -		return 0; -	} - -	/* Apply negative unit exponent */ -	for (; unit_exponent < 0; unit_exponent++) { -		prev = logical_extents; -		logical_extents *= 10; -		if (logical_extents < prev) -			return 0; -	} -	/* Apply positive unit exponent */ -	for (; unit_exponent > 0; unit_exponent--) { -		prev = physical_extents; -		physical_extents *= 10; -		if (physical_extents < prev) -			return 0; -	} - -	/* Calculate resolution */ -	return logical_extents / physical_extents; +	struct hid_field field = { +		.logical_maximum = logical_extents, +		.physical_maximum = physical_extents, +		.unit = unit, +		.unit_exponent = exponent, +	}; + +	return hidinput_calc_abs_res(&field, ABS_X);  }  static void wacom_feature_mapping(struct hid_device *hdev, |