diff options
Diffstat (limited to 'drivers/input/touchscreen/raspberrypi-ts.c')
| -rw-r--r-- | drivers/input/touchscreen/raspberrypi-ts.c | 38 | 
1 files changed, 20 insertions, 18 deletions
diff --git a/drivers/input/touchscreen/raspberrypi-ts.c b/drivers/input/touchscreen/raspberrypi-ts.c index 69881265d121..0e2e08f3f433 100644 --- a/drivers/input/touchscreen/raspberrypi-ts.c +++ b/drivers/input/touchscreen/raspberrypi-ts.c @@ -16,7 +16,6 @@  #include <linux/platform_device.h>  #include <linux/input.h>  #include <linux/input/mt.h> -#include <linux/input-polldev.h>  #include <linux/input/touchscreen.h>  #include <soc/bcm2835/raspberrypi-firmware.h> @@ -34,7 +33,7 @@  struct rpi_ts {  	struct platform_device *pdev; -	struct input_polled_dev *poll_dev; +	struct input_dev *input;  	struct touchscreen_properties prop;  	void __iomem *fw_regs_va; @@ -57,10 +56,9 @@ struct rpi_ts_regs {  	} point[RPI_TS_MAX_SUPPORTED_POINTS];  }; -static void rpi_ts_poll(struct input_polled_dev *dev) +static void rpi_ts_poll(struct input_dev *input)  { -	struct input_dev *input = dev->input; -	struct rpi_ts *ts = dev->private; +	struct rpi_ts *ts = input_get_drvdata(input);  	struct rpi_ts_regs regs;  	int modified_ids = 0;  	long released_ids; @@ -123,10 +121,9 @@ static int rpi_ts_probe(struct platform_device *pdev)  {  	struct device *dev = &pdev->dev;  	struct device_node *np = dev->of_node; -	struct input_polled_dev *poll_dev; +	struct input_dev *input;  	struct device_node *fw_node;  	struct rpi_firmware *fw; -	struct input_dev *input;  	struct rpi_ts *ts;  	u32 touchbuf;  	int error; @@ -160,7 +157,6 @@ static int rpi_ts_probe(struct platform_device *pdev)  		return error;  	} -  	touchbuf = (u32)ts->fw_regs_phys;  	error = rpi_firmware_property(fw, RPI_FIRMWARE_FRAMEBUFFER_SET_TOUCHBUF,  				      &touchbuf, sizeof(touchbuf)); @@ -170,19 +166,17 @@ static int rpi_ts_probe(struct platform_device *pdev)  		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;  	} -	ts->poll_dev = poll_dev; -	input = poll_dev->input; + +	ts->input = input; +	input_set_drvdata(input, ts);  	input->name = "raspberrypi-ts";  	input->id.bustype = BUS_HOST; -	poll_dev->poll_interval = RPI_TS_POLL_INTERVAL; -	poll_dev->poll = rpi_ts_poll; -	poll_dev->private = ts;  	input_set_abs_params(input, ABS_MT_POSITION_X, 0,  			     RPI_TS_DEFAULT_WIDTH, 0, 0); @@ -197,7 +191,15 @@ static int rpi_ts_probe(struct platform_device *pdev)  		return error;  	} -	error = input_register_polled_device(poll_dev); +	error = input_setup_polling(input, rpi_ts_poll); +	if (error) { +		dev_err(dev, "could not set up polling mode, %d\n", error); +		return error; +	} + +	input_set_poll_interval(input, RPI_TS_POLL_INTERVAL); + +	error = input_register_device(input);  	if (error) {  		dev_err(dev, "could not register input device, %d\n", error);  		return error; @@ -214,10 +216,10 @@ MODULE_DEVICE_TABLE(of, rpi_ts_match);  static struct platform_driver rpi_ts_driver = {  	.driver = { -		.name   = "raspberrypi-ts", +		.name = "raspberrypi-ts",  		.of_match_table = rpi_ts_match,  	}, -	.probe          = rpi_ts_probe, +	.probe = rpi_ts_probe,  };  module_platform_driver(rpi_ts_driver);  |