diff options
author | Martin Kepplinger <martink@posteo.de> | 2015-01-24 01:40:53 +0100 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2015-01-27 08:07:45 +0100 |
commit | 8d2128203682cb1b223e08f19c6b3ba72400bb96 (patch) | |
tree | becd3f84a9dd775676ee2bf884e7b38be787eef8 /drivers/input | |
parent | Input: elan_i2c - verify firmware signature applying it (diff) | |
download | linux-8d2128203682cb1b223e08f19c6b3ba72400bb96.tar.xz linux-8d2128203682cb1b223e08f19c6b3ba72400bb96.zip |
Input: gtco - use sign_extend32() for sign extension
Signed-off-by: Martin Kepplinger <martink@posteo.de>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input')
-rw-r--r-- | drivers/input/tablet/gtco.c | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/drivers/input/tablet/gtco.c b/drivers/input/tablet/gtco.c index 858045694e9d..3a7f3a4a4396 100644 --- a/drivers/input/tablet/gtco.c +++ b/drivers/input/tablet/gtco.c @@ -59,7 +59,7 @@ Scott Hill shill@gtcocalcomp.com #include <asm/uaccess.h> #include <asm/unaligned.h> #include <asm/byteorder.h> - +#include <linux/bitops.h> #include <linux/usb/input.h> @@ -614,7 +614,6 @@ static void gtco_urb_callback(struct urb *urbinfo) struct input_dev *inputdev; int rc; u32 val = 0; - s8 valsigned = 0; char le_buffer[2]; inputdev = device->inputdevice; @@ -665,20 +664,11 @@ static void gtco_urb_callback(struct urb *urbinfo) /* Fall thru */ case 4: /* Tilt */ + input_report_abs(inputdev, ABS_TILT_X, + sign_extend32(device->buffer[6], 6)); - /* Sign extend these 7 bit numbers. */ - if (device->buffer[6] & 0x40) - device->buffer[6] |= 0x80; - - if (device->buffer[7] & 0x40) - device->buffer[7] |= 0x80; - - - valsigned = (device->buffer[6]); - input_report_abs(inputdev, ABS_TILT_X, (s32)valsigned); - - valsigned = (device->buffer[7]); - input_report_abs(inputdev, ABS_TILT_Y, (s32)valsigned); + input_report_abs(inputdev, ABS_TILT_Y, + sign_extend32(device->buffer[7], 6)); /* Fall thru */ case 2: |