#endif
 
 static int xres = CONFIG_INPUT_MOUSEDEV_SCREEN_X;
-module_param(xres, uint, 0);
+module_param(xres, uint, 0644);
 MODULE_PARM_DESC(xres, "Horizontal screen resolution");
 
 static int yres = CONFIG_INPUT_MOUSEDEV_SCREEN_Y;
-module_param(yres, uint, 0);
+module_param(yres, uint, 0644);
 MODULE_PARM_DESC(yres, "Vertical screen resolution");
 
 static unsigned tap_time = 200;
-module_param(tap_time, uint, 0);
+module_param(tap_time, uint, 0644);
 MODULE_PARM_DESC(tap_time, "Tap time for touchpads in absolute mode (msecs)");
 
 struct mousedev_hw_data {
        switch (code) {
                case ABS_X:
                        size = dev->absmax[ABS_X] - dev->absmin[ABS_X];
-                       if (size == 0) size = xres;
+                       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;
 
                case ABS_Y:
                        size = dev->absmax[ABS_Y] - dev->absmin[ABS_Y];
-                       if (size == 0) size = yres;
+                       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;