Message ID | 20191002214345.GA108728@dtor-ws (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | hwmon: applesmc: switch to using input device polling mode | expand |
On Wed, Oct 02, 2019 at 02:43:45PM -0700, Dmitry Torokhov wrote: > 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> Applied to hwmon-next. I don't know what 0-day is complaining about; the code builds fine for me with the supposedly failing configuration. We'll see if we get into trouble when the patch shows up in -next. Guenter > --- > drivers/hwmon/Kconfig | 1 - > drivers/hwmon/applesmc.c | 38 ++++++++++++++++++-------------------- > 2 files changed, 18 insertions(+), 21 deletions(-) > > diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig > index 650dd71f9724..c5adca9cd465 100644 > --- a/drivers/hwmon/Kconfig > +++ b/drivers/hwmon/Kconfig > @@ -299,7 +299,6 @@ config SENSORS_APPLESMC > depends on INPUT && X86 > select NEW_LEDS > select LEDS_CLASS > - select INPUT_POLLDEV > help > This driver provides support for the Apple System Management > Controller, which provides an accelerometer (Apple Sudden Motion > diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c > index 183ff3d25129..ec93b8d673f5 100644 > --- a/drivers/hwmon/applesmc.c > +++ b/drivers/hwmon/applesmc.c > @@ -19,7 +19,7 @@ > > #include <linux/delay.h> > #include <linux/platform_device.h> > -#include <linux/input-polldev.h> > +#include <linux/input.h> > #include <linux/kernel.h> > #include <linux/slab.h> > #include <linux/module.h> > @@ -140,7 +140,7 @@ static s16 rest_y; > static u8 backlight_state[2]; > > static struct device *hwmon_dev; > -static struct input_polled_dev *applesmc_idev; > +static struct input_dev *applesmc_idev; > > /* > * Last index written to key_at_index sysfs file, and value to use for all other > @@ -681,9 +681,8 @@ static void applesmc_calibrate(void) > rest_x = -rest_x; > } > > -static void applesmc_idev_poll(struct input_polled_dev *dev) > +static void applesmc_idev_poll(struct input_dev *idev) > { > - struct input_dev *idev = dev->input; > s16 x, y; > > if (applesmc_read_s16(MOTION_SENSOR_X_KEY, &x)) > @@ -1134,7 +1133,6 @@ static int applesmc_create_nodes(struct applesmc_node_group *groups, int num) > /* Create accelerometer resources */ > static int applesmc_create_accelerometer(void) > { > - struct input_dev *idev; > int ret; > > if (!smcreg.has_accelerometer) > @@ -1144,37 +1142,38 @@ static int applesmc_create_accelerometer(void) > if (ret) > goto out; > > - applesmc_idev = input_allocate_polled_device(); > + applesmc_idev = input_allocate_device(); > if (!applesmc_idev) { > ret = -ENOMEM; > goto out_sysfs; > } > > - applesmc_idev->poll = applesmc_idev_poll; > - applesmc_idev->poll_interval = APPLESMC_POLL_INTERVAL; > - > /* initial calibrate for the input device */ > applesmc_calibrate(); > > /* initialize the input device */ > - idev = applesmc_idev->input; > - idev->name = "applesmc"; > - idev->id.bustype = BUS_HOST; > - idev->dev.parent = &pdev->dev; > - idev->evbit[0] = BIT_MASK(EV_ABS); > - input_set_abs_params(idev, ABS_X, > + applesmc_idev->name = "applesmc"; > + applesmc_idev->id.bustype = BUS_HOST; > + applesmc_idev->dev.parent = &pdev->dev; > + input_set_abs_params(applesmc_idev, ABS_X, > -256, 256, APPLESMC_INPUT_FUZZ, APPLESMC_INPUT_FLAT); > - input_set_abs_params(idev, ABS_Y, > + input_set_abs_params(applesmc_idev, ABS_Y, > -256, 256, APPLESMC_INPUT_FUZZ, APPLESMC_INPUT_FLAT); > > - ret = input_register_polled_device(applesmc_idev); > + ret = input_setup_polling(applesmc_idev, applesmc_idev_poll); > + if (ret) > + goto out_idev; > + > + input_set_poll_interval(applesmc_idev, APPLESMC_POLL_INTERVAL); > + > + ret = input_register_device(applesmc_idev); > if (ret) > goto out_idev; > > return 0; > > out_idev: > - input_free_polled_device(applesmc_idev); > + input_free_device(applesmc_idev); > > out_sysfs: > applesmc_destroy_nodes(accelerometer_group); > @@ -1189,8 +1188,7 @@ static void applesmc_release_accelerometer(void) > { > if (!smcreg.has_accelerometer) > return; > - input_unregister_polled_device(applesmc_idev); > - input_free_polled_device(applesmc_idev); > + input_unregister_device(applesmc_idev); > applesmc_destroy_nodes(accelerometer_group); > } >
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index 650dd71f9724..c5adca9cd465 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig @@ -299,7 +299,6 @@ config SENSORS_APPLESMC depends on INPUT && X86 select NEW_LEDS select LEDS_CLASS - select INPUT_POLLDEV help This driver provides support for the Apple System Management Controller, which provides an accelerometer (Apple Sudden Motion diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c index 183ff3d25129..ec93b8d673f5 100644 --- a/drivers/hwmon/applesmc.c +++ b/drivers/hwmon/applesmc.c @@ -19,7 +19,7 @@ #include <linux/delay.h> #include <linux/platform_device.h> -#include <linux/input-polldev.h> +#include <linux/input.h> #include <linux/kernel.h> #include <linux/slab.h> #include <linux/module.h> @@ -140,7 +140,7 @@ static s16 rest_y; static u8 backlight_state[2]; static struct device *hwmon_dev; -static struct input_polled_dev *applesmc_idev; +static struct input_dev *applesmc_idev; /* * Last index written to key_at_index sysfs file, and value to use for all other @@ -681,9 +681,8 @@ static void applesmc_calibrate(void) rest_x = -rest_x; } -static void applesmc_idev_poll(struct input_polled_dev *dev) +static void applesmc_idev_poll(struct input_dev *idev) { - struct input_dev *idev = dev->input; s16 x, y; if (applesmc_read_s16(MOTION_SENSOR_X_KEY, &x)) @@ -1134,7 +1133,6 @@ static int applesmc_create_nodes(struct applesmc_node_group *groups, int num) /* Create accelerometer resources */ static int applesmc_create_accelerometer(void) { - struct input_dev *idev; int ret; if (!smcreg.has_accelerometer) @@ -1144,37 +1142,38 @@ static int applesmc_create_accelerometer(void) if (ret) goto out; - applesmc_idev = input_allocate_polled_device(); + applesmc_idev = input_allocate_device(); if (!applesmc_idev) { ret = -ENOMEM; goto out_sysfs; } - applesmc_idev->poll = applesmc_idev_poll; - applesmc_idev->poll_interval = APPLESMC_POLL_INTERVAL; - /* initial calibrate for the input device */ applesmc_calibrate(); /* initialize the input device */ - idev = applesmc_idev->input; - idev->name = "applesmc"; - idev->id.bustype = BUS_HOST; - idev->dev.parent = &pdev->dev; - idev->evbit[0] = BIT_MASK(EV_ABS); - input_set_abs_params(idev, ABS_X, + applesmc_idev->name = "applesmc"; + applesmc_idev->id.bustype = BUS_HOST; + applesmc_idev->dev.parent = &pdev->dev; + input_set_abs_params(applesmc_idev, ABS_X, -256, 256, APPLESMC_INPUT_FUZZ, APPLESMC_INPUT_FLAT); - input_set_abs_params(idev, ABS_Y, + input_set_abs_params(applesmc_idev, ABS_Y, -256, 256, APPLESMC_INPUT_FUZZ, APPLESMC_INPUT_FLAT); - ret = input_register_polled_device(applesmc_idev); + ret = input_setup_polling(applesmc_idev, applesmc_idev_poll); + if (ret) + goto out_idev; + + input_set_poll_interval(applesmc_idev, APPLESMC_POLL_INTERVAL); + + ret = input_register_device(applesmc_idev); if (ret) goto out_idev; return 0; out_idev: - input_free_polled_device(applesmc_idev); + input_free_device(applesmc_idev); out_sysfs: applesmc_destroy_nodes(accelerometer_group); @@ -1189,8 +1188,7 @@ static void applesmc_release_accelerometer(void) { if (!smcreg.has_accelerometer) return; - input_unregister_polled_device(applesmc_idev); - input_free_polled_device(applesmc_idev); + input_unregister_device(applesmc_idev); applesmc_destroy_nodes(accelerometer_group); }
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> --- drivers/hwmon/Kconfig | 1 - drivers/hwmon/applesmc.c | 38 ++++++++++++++++++-------------------- 2 files changed, 18 insertions(+), 21 deletions(-)