Input: bma150 - use sign_extend32() for sign extending
authorMartin Kepplinger <martink@posteo.de>
Mon, 6 Jul 2015 22:52:21 +0000 (15:52 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 7 Jul 2015 18:32:35 +0000 (11:32 -0700)
Despite it's name, sign_extend32() is used for 16 bit values aswell.

Signed-off-by: Martin Kepplinger <martink@posteo.de>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/misc/bma150.c

index b36831c828d3fe7a19be14872a7eabb2b8a38ecd..c2780493b0edbac2eaf20974174abfb53b9cba45 100644 (file)
@@ -333,10 +333,9 @@ static void bma150_report_xyz(struct bma150_data *bma150)
        y = ((0xc0 & data[2]) >> 6) | (data[3] << 2);
        z = ((0xc0 & data[4]) >> 6) | (data[5] << 2);
 
-       /* sign extension */
-       x = (s16) (x << 6) >> 6;
-       y = (s16) (y << 6) >> 6;
-       z = (s16) (z << 6) >> 6;
+       x = sign_extend32(x, 9);
+       y = sign_extend32(y, 9);
+       z = sign_extend32(z, 9);
 
        input_report_abs(bma150->input, ABS_X, x);
        input_report_abs(bma150->input, ABS_Y, y);