Commit 83dbbe5a authored by Dmitry Torokhov's avatar Dmitry Torokhov Committed by Andy Shevchenko

platform/x86: hdaps: switch to using polled mode of input devices

We have added polled mode to the normal input devices with the intent of
retiring input_polled_dev. This converts hdaps driver to use the
polling mode of standard input devices and removes dependency on
INPUT_POLLDEV.
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
parent 2011176d
...@@ -622,7 +622,6 @@ config THINKPAD_ACPI_HOTKEY_POLL ...@@ -622,7 +622,6 @@ config THINKPAD_ACPI_HOTKEY_POLL
config SENSORS_HDAPS config SENSORS_HDAPS
tristate "Thinkpad Hard Drive Active Protection System (hdaps)" tristate "Thinkpad Hard Drive Active Protection System (hdaps)"
depends on INPUT depends on INPUT
select INPUT_POLLDEV
help help
This driver provides support for the IBM Hard Drive Active Protection This driver provides support for the IBM Hard Drive Active Protection
System (hdaps), which provides an accelerometer and other misc. data. System (hdaps), which provides an accelerometer and other misc. data.
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/input-polldev.h> #include <linux/input.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/module.h> #include <linux/module.h>
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
#define HDAPS_BOTH_AXES (HDAPS_X_AXIS | HDAPS_Y_AXIS) #define HDAPS_BOTH_AXES (HDAPS_X_AXIS | HDAPS_Y_AXIS)
static struct platform_device *pdev; static struct platform_device *pdev;
static struct input_polled_dev *hdaps_idev; static struct input_dev *hdaps_idev;
static unsigned int hdaps_invert; static unsigned int hdaps_invert;
static u8 km_activity; static u8 km_activity;
static int rest_x; static int rest_x;
...@@ -318,9 +318,8 @@ static void hdaps_calibrate(void) ...@@ -318,9 +318,8 @@ static void hdaps_calibrate(void)
__hdaps_read_pair(HDAPS_PORT_XPOS, HDAPS_PORT_YPOS, &rest_x, &rest_y); __hdaps_read_pair(HDAPS_PORT_XPOS, HDAPS_PORT_YPOS, &rest_x, &rest_y);
} }
static void hdaps_mousedev_poll(struct input_polled_dev *dev) static void hdaps_mousedev_poll(struct input_dev *input_dev)
{ {
struct input_dev *input_dev = dev->input;
int x, y; int x, y;
mutex_lock(&hdaps_mtx); mutex_lock(&hdaps_mtx);
...@@ -531,7 +530,6 @@ static const struct dmi_system_id hdaps_whitelist[] __initconst = { ...@@ -531,7 +530,6 @@ static const struct dmi_system_id hdaps_whitelist[] __initconst = {
static int __init hdaps_init(void) static int __init hdaps_init(void)
{ {
struct input_dev *idev;
int ret; int ret;
if (!dmi_check_system(hdaps_whitelist)) { if (!dmi_check_system(hdaps_whitelist)) {
...@@ -559,31 +557,32 @@ static int __init hdaps_init(void) ...@@ -559,31 +557,32 @@ static int __init hdaps_init(void)
if (ret) if (ret)
goto out_device; goto out_device;
hdaps_idev = input_allocate_polled_device(); hdaps_idev = input_allocate_device();
if (!hdaps_idev) { if (!hdaps_idev) {
ret = -ENOMEM; ret = -ENOMEM;
goto out_group; goto out_group;
} }
hdaps_idev->poll = hdaps_mousedev_poll;
hdaps_idev->poll_interval = HDAPS_POLL_INTERVAL;
/* initial calibrate for the input device */ /* initial calibrate for the input device */
hdaps_calibrate(); hdaps_calibrate();
/* initialize the input class */ /* initialize the input class */
idev = hdaps_idev->input; hdaps_idev->name = "hdaps";
idev->name = "hdaps"; hdaps_idev->phys = "isa1600/input0";
idev->phys = "isa1600/input0"; hdaps_idev->id.bustype = BUS_ISA;
idev->id.bustype = BUS_ISA; hdaps_idev->dev.parent = &pdev->dev;
idev->dev.parent = &pdev->dev; input_set_abs_params(hdaps_idev, ABS_X,
idev->evbit[0] = BIT_MASK(EV_ABS);
input_set_abs_params(idev, ABS_X,
-256, 256, HDAPS_INPUT_FUZZ, HDAPS_INPUT_FLAT); -256, 256, HDAPS_INPUT_FUZZ, HDAPS_INPUT_FLAT);
input_set_abs_params(idev, ABS_Y, input_set_abs_params(hdaps_idev, ABS_Y,
-256, 256, HDAPS_INPUT_FUZZ, HDAPS_INPUT_FLAT); -256, 256, HDAPS_INPUT_FUZZ, HDAPS_INPUT_FLAT);
ret = input_register_polled_device(hdaps_idev); ret = input_setup_polling(hdaps_idev, hdaps_mousedev_poll);
if (ret)
goto out_idev;
input_set_poll_interval(hdaps_idev, HDAPS_POLL_INTERVAL);
ret = input_register_device(hdaps_idev);
if (ret) if (ret)
goto out_idev; goto out_idev;
...@@ -591,7 +590,7 @@ static int __init hdaps_init(void) ...@@ -591,7 +590,7 @@ static int __init hdaps_init(void)
return 0; return 0;
out_idev: out_idev:
input_free_polled_device(hdaps_idev); input_free_device(hdaps_idev);
out_group: out_group:
sysfs_remove_group(&pdev->dev.kobj, &hdaps_attribute_group); sysfs_remove_group(&pdev->dev.kobj, &hdaps_attribute_group);
out_device: out_device:
...@@ -607,8 +606,7 @@ static int __init hdaps_init(void) ...@@ -607,8 +606,7 @@ static int __init hdaps_init(void)
static void __exit hdaps_exit(void) static void __exit hdaps_exit(void)
{ {
input_unregister_polled_device(hdaps_idev); input_unregister_device(hdaps_idev);
input_free_polled_device(hdaps_idev);
sysfs_remove_group(&pdev->dev.kobj, &hdaps_attribute_group); sysfs_remove_group(&pdev->dev.kobj, &hdaps_attribute_group);
platform_device_unregister(pdev); platform_device_unregister(pdev);
platform_driver_unregister(&hdaps_driver); platform_driver_unregister(&hdaps_driver);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment