diff options
Diffstat (limited to 'drivers/input/keyboard/adc-keys.c')
| -rw-r--r-- | drivers/input/keyboard/adc-keys.c | 36 | 
1 files changed, 19 insertions, 17 deletions
diff --git a/drivers/input/keyboard/adc-keys.c b/drivers/input/keyboard/adc-keys.c index 9885fd56f5f9..6d5be48d1b3d 100644 --- a/drivers/input/keyboard/adc-keys.c +++ b/drivers/input/keyboard/adc-keys.c @@ -9,7 +9,6 @@  #include <linux/iio/consumer.h>  #include <linux/iio/types.h>  #include <linux/input.h> -#include <linux/input-polldev.h>  #include <linux/kernel.h>  #include <linux/module.h>  #include <linux/of.h> @@ -30,9 +29,9 @@ struct adc_keys_state {  	const struct adc_keys_button *map;  }; -static void adc_keys_poll(struct input_polled_dev *dev) +static void adc_keys_poll(struct input_dev *input)  { -	struct adc_keys_state *st = dev->private; +	struct adc_keys_state *st = input_get_drvdata(input);  	int i, value, ret;  	u32 diff, closest = 0xffffffff;  	int keycode = 0; @@ -55,12 +54,12 @@ static void adc_keys_poll(struct input_polled_dev *dev)  		keycode = 0;  	if (st->last_key && st->last_key != keycode) -		input_report_key(dev->input, st->last_key, 0); +		input_report_key(input, st->last_key, 0);  	if (keycode) -		input_report_key(dev->input, keycode, 1); +		input_report_key(input, keycode, 1); -	input_sync(dev->input); +	input_sync(input);  	st->last_key = keycode;  } @@ -108,7 +107,6 @@ static int adc_keys_probe(struct platform_device *pdev)  {  	struct device *dev = &pdev->dev;  	struct adc_keys_state *st; -	struct input_polled_dev *poll_dev;  	struct input_dev *input;  	enum iio_chan_type type;  	int i, value; @@ -145,19 +143,13 @@ static int adc_keys_probe(struct platform_device *pdev)  	if (error)  		return error; -	poll_dev = devm_input_allocate_polled_device(dev); -	if (!poll_dev) { +	input = devm_input_allocate_device(dev); +	if (!input) {  		dev_err(dev, "failed to allocate input device\n");  		return -ENOMEM;  	} -	if (!device_property_read_u32(dev, "poll-interval", &value)) -		poll_dev->poll_interval = value; - -	poll_dev->poll = adc_keys_poll; -	poll_dev->private = st; - -	input = poll_dev->input; +	input_set_drvdata(input, st);  	input->name = pdev->name;  	input->phys = "adc-keys/input0"; @@ -174,7 +166,17 @@ static int adc_keys_probe(struct platform_device *pdev)  	if (device_property_read_bool(dev, "autorepeat"))  		__set_bit(EV_REP, input->evbit); -	error = input_register_polled_device(poll_dev); + +	error = input_setup_polling(input, adc_keys_poll); +	if (error) { +		dev_err(dev, "Unable to set up polling: %d\n", error); +		return error; +	} + +	if (!device_property_read_u32(dev, "poll-interval", &value)) +		input_set_poll_interval(input, value); + +	error = input_register_device(input);  	if (error) {  		dev_err(dev, "Unable to register input device: %d\n", error);  		return error;  |