]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/input/mousedev.c
Input: switch to input_abs_*() access functions
[karo-tx-linux.git] / drivers / input / mousedev.c
index d8f68f77007b6c1429b1c821509914bd10ee55a9..83c24cca234a5849545adeda916b0e4a136769fb 100644 (file)
@@ -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;
        }