Commit 0c444d98 authored by Dmitry Torokhov's avatar Dmitry Torokhov Committed by Michael Ellerman

macintosh/ams-input: switch to using input device polling mode

Now that instances of input_dev support polling mode natively,
we no longer need to create input_polled_dev instance.
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20191002214854.GA114387@dtor-ws
parent 0755e855
...@@ -247,7 +247,6 @@ config PMAC_RACKMETER ...@@ -247,7 +247,6 @@ config PMAC_RACKMETER
config SENSORS_AMS config SENSORS_AMS
tristate "Apple Motion Sensor driver" tristate "Apple Motion Sensor driver"
depends on PPC_PMAC && !PPC64 && INPUT && ((ADB_PMU && I2C = y) || (ADB_PMU && !I2C) || I2C) depends on PPC_PMAC && !PPC64 && INPUT && ((ADB_PMU && I2C = y) || (ADB_PMU && !I2C) || I2C)
select INPUT_POLLDEV
help help
Support for the motion sensor included in PowerBooks. Includes Support for the motion sensor included in PowerBooks. Includes
implementations for PMU and I2C. implementations for PMU and I2C.
......
...@@ -25,9 +25,8 @@ MODULE_PARM_DESC(invert, "Invert input data on X and Y axis"); ...@@ -25,9 +25,8 @@ MODULE_PARM_DESC(invert, "Invert input data on X and Y axis");
static DEFINE_MUTEX(ams_input_mutex); static DEFINE_MUTEX(ams_input_mutex);
static void ams_idev_poll(struct input_polled_dev *dev) static void ams_idev_poll(struct input_dev *idev)
{ {
struct input_dev *idev = dev->input;
s8 x, y, z; s8 x, y, z;
mutex_lock(&ams_info.lock); mutex_lock(&ams_info.lock);
...@@ -59,14 +58,10 @@ static int ams_input_enable(void) ...@@ -59,14 +58,10 @@ static int ams_input_enable(void)
ams_info.ycalib = y; ams_info.ycalib = y;
ams_info.zcalib = z; ams_info.zcalib = z;
ams_info.idev = input_allocate_polled_device(); input = input_allocate_device();
if (!ams_info.idev) if (!input)
return -ENOMEM; return -ENOMEM;
ams_info.idev->poll = ams_idev_poll;
ams_info.idev->poll_interval = 25;
input = ams_info.idev->input;
input->name = "Apple Motion Sensor"; input->name = "Apple Motion Sensor";
input->id.bustype = ams_info.bustype; input->id.bustype = ams_info.bustype;
input->id.vendor = 0; input->id.vendor = 0;
...@@ -75,28 +70,32 @@ static int ams_input_enable(void) ...@@ -75,28 +70,32 @@ static int ams_input_enable(void)
input_set_abs_params(input, ABS_X, -50, 50, 3, 0); input_set_abs_params(input, ABS_X, -50, 50, 3, 0);
input_set_abs_params(input, ABS_Y, -50, 50, 3, 0); input_set_abs_params(input, ABS_Y, -50, 50, 3, 0);
input_set_abs_params(input, ABS_Z, -50, 50, 3, 0); input_set_abs_params(input, ABS_Z, -50, 50, 3, 0);
input_set_capability(input, EV_KEY, BTN_TOUCH);
set_bit(EV_ABS, input->evbit); error = input_setup_polling(input, ams_idev_poll);
set_bit(EV_KEY, input->evbit); if (error)
set_bit(BTN_TOUCH, input->keybit); goto err_free_input;
error = input_register_polled_device(ams_info.idev); input_set_poll_interval(input, 25);
if (error) {
input_free_polled_device(ams_info.idev);
ams_info.idev = NULL;
return error;
}
error = input_register_device(input);
if (error)
goto err_free_input;
ams_info.idev = input;
joystick = true; joystick = true;
return 0; return 0;
err_free_input:
input_free_device(input);
return error;
} }
static void ams_input_disable(void) static void ams_input_disable(void)
{ {
if (ams_info.idev) { if (ams_info.idev) {
input_unregister_polled_device(ams_info.idev); input_unregister_device(ams_info.idev);
input_free_polled_device(ams_info.idev);
ams_info.idev = NULL; ams_info.idev = NULL;
} }
......
/* SPDX-License-Identifier: GPL-2.0 */ /* SPDX-License-Identifier: GPL-2.0 */
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/input-polldev.h> #include <linux/input.h>
#include <linux/kthread.h> #include <linux/kthread.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
...@@ -51,7 +51,7 @@ struct ams { ...@@ -51,7 +51,7 @@ struct ams {
#endif #endif
/* Joystick emulation */ /* Joystick emulation */
struct input_polled_dev *idev; struct input_dev *idev;
__u16 bustype; __u16 bustype;
/* calibrated null values */ /* calibrated null values */
......
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