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: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20191002214854.GA114387@dtor-ws
This commit is contained in:
Dmitry Torokhov 2019-10-02 14:48:54 -07:00 committed by Michael Ellerman
parent 0755e85570
commit 0c444d98ef
3 changed files with 20 additions and 22 deletions

View File

@ -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.

View File

@ -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)
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)
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;
} }

View File

@ -1,6 +1,6 @@
/* 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 {
#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 */