浏览代码

Input: edt-ft5x06 - allow to setting the maximum axes value through the DT

Currently the driver relies on some obscure and undocumented register to set
the maximum axis value.

The reported value is way too high to be meaningful, which confuses some
userspace tools like QT's evdevtouch plugin which try to scale the reported
events to the maximum values.

Use the values from the DT to set meaningful values.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Maxime Ripard 10 年之前
父节点
当前提交
2c00559884
共有 1 个文件被更改,包括 5 次插入0 次删除
  1. 5 0
      drivers/input/touchscreen/edt-ft5x06.c

+ 5 - 0
drivers/input/touchscreen/edt-ft5x06.c

@@ -37,6 +37,7 @@
 #include <linux/gpio.h>
 #include <linux/gpio.h>
 #include <linux/of_gpio.h>
 #include <linux/of_gpio.h>
 #include <linux/input/mt.h>
 #include <linux/input/mt.h>
+#include <linux/input/touchscreen.h>
 #include <linux/input/edt-ft5x06.h>
 #include <linux/input/edt-ft5x06.h>
 
 
 #define MAX_SUPPORT_POINTS		5
 #define MAX_SUPPORT_POINTS		5
@@ -1044,6 +1045,10 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 			     0, tsdata->num_x * 64 - 1, 0, 0);
 			     0, tsdata->num_x * 64 - 1, 0, 0);
 	input_set_abs_params(input, ABS_MT_POSITION_Y,
 	input_set_abs_params(input, ABS_MT_POSITION_Y,
 			     0, tsdata->num_y * 64 - 1, 0, 0);
 			     0, tsdata->num_y * 64 - 1, 0, 0);
+
+	if (!pdata)
+		touchscreen_parse_of_params(input);
+
 	error = input_mt_init_slots(input, MAX_SUPPORT_POINTS, 0);
 	error = input_mt_init_slots(input, MAX_SUPPORT_POINTS, 0);
 	if (error) {
 	if (error) {
 		dev_err(&client->dev, "Unable to init MT slots.\n");
 		dev_err(&client->dev, "Unable to init MT slots.\n");