Input: switch to input_abs_*() access functions
Change all call sites in drivers/input to not access the ABS axis information directly anymore. Make them use the access helpers instead. Also use input_set_abs_params() when possible. Did some code refactoring as I was on it. Signed-off-by: Daniel Mack <daniel@caiaq.de> Cc: Dmitry Torokhov <dtor@mail.ru> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
committed by
Dmitry Torokhov
parent
7957e9c4d1
commit
987a6c0298
@@ -22,6 +22,7 @@
|
||||
#include <linux/random.h>
|
||||
#include <linux/major.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/kernel.h>
|
||||
#ifdef CONFIG_INPUT_MOUSEDEV_PSAUX
|
||||
#include <linux/miscdevice.h>
|
||||
#endif
|
||||
@@ -134,11 +135,14 @@ static void mousedev_touchpad_event(struct input_dev *dev,
|
||||
switch (code) {
|
||||
|
||||
case ABS_X:
|
||||
|
||||
fx(0) = value;
|
||||
if (mousedev->touch && mousedev->pkt_count >= 2) {
|
||||
size = dev->absmax[ABS_X] - dev->absmin[ABS_X];
|
||||
size = input_abs_get_min(dev, ABS_X) -
|
||||
input_abs_get_max(dev, ABS_X);
|
||||
if (size == 0)
|
||||
size = 256 * 2;
|
||||
|
||||
tmp = ((value - fx(2)) * 256 * FRACTION_DENOM) / size;
|
||||
tmp += mousedev->frac_dx;
|
||||
mousedev->packet.dx = tmp / FRACTION_DENOM;
|
||||
@@ -150,10 +154,12 @@ static void mousedev_touchpad_event(struct input_dev *dev,
|
||||
case ABS_Y:
|
||||
fy(0) = value;
|
||||
if (mousedev->touch && mousedev->pkt_count >= 2) {
|
||||
/* use X size to keep the same scale */
|
||||
size = dev->absmax[ABS_X] - dev->absmin[ABS_X];
|
||||
/* use X size for ABS_Y to keep the same scale */
|
||||
size = input_abs_get_min(dev, ABS_X) -
|
||||
input_abs_get_max(dev, ABS_X);
|
||||
if (size == 0)
|
||||
size = 256 * 2;
|
||||
|
||||
tmp = -((value - fy(2)) * 256 * FRACTION_DENOM) / size;
|
||||
tmp += mousedev->frac_dy;
|
||||
mousedev->packet.dy = tmp / FRACTION_DENOM;
|
||||
@@ -167,33 +173,35 @@ static void mousedev_touchpad_event(struct input_dev *dev,
|
||||
static void mousedev_abs_event(struct input_dev *dev, struct mousedev *mousedev,
|
||||
unsigned int code, int value)
|
||||
{
|
||||
int size;
|
||||
int min, max, size;
|
||||
|
||||
switch (code) {
|
||||
|
||||
case ABS_X:
|
||||
size = dev->absmax[ABS_X] - dev->absmin[ABS_X];
|
||||
min = input_abs_get_min(dev, ABS_X);
|
||||
max = input_abs_get_max(dev, ABS_X);
|
||||
|
||||
size = max - min;
|
||||
if (size == 0)
|
||||
size = xres ? : 1;
|
||||
if (value > dev->absmax[ABS_X])
|
||||
value = dev->absmax[ABS_X];
|
||||
if (value < dev->absmin[ABS_X])
|
||||
value = dev->absmin[ABS_X];
|
||||
mousedev->packet.x =
|
||||
((value - dev->absmin[ABS_X]) * xres) / size;
|
||||
|
||||
clamp(value, min, max);
|
||||
|
||||
mousedev->packet.x = ((value - min) * xres) / size;
|
||||
mousedev->packet.abs_event = 1;
|
||||
break;
|
||||
|
||||
case ABS_Y:
|
||||
size = dev->absmax[ABS_Y] - dev->absmin[ABS_Y];
|
||||
min = input_abs_get_min(dev, ABS_Y);
|
||||
max = input_abs_get_max(dev, ABS_Y);
|
||||
|
||||
size = max - min;
|
||||
if (size == 0)
|
||||
size = yres ? : 1;
|
||||
if (value > dev->absmax[ABS_Y])
|
||||
value = dev->absmax[ABS_Y];
|
||||
if (value < dev->absmin[ABS_Y])
|
||||
value = dev->absmin[ABS_Y];
|
||||
mousedev->packet.y = yres -
|
||||
((value - dev->absmin[ABS_Y]) * yres) / size;
|
||||
|
||||
clamp(value, min, max);
|
||||
|
||||
mousedev->packet.y = yres - ((value - min) * yres) / size;
|
||||
mousedev->packet.abs_event = 1;
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user