diff options
-rw-r--r-- | drivers/input/touchscreen/of_touchscreen.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/drivers/input/touchscreen/of_touchscreen.c b/drivers/input/touchscreen/of_touchscreen.c index fe80d8ba7efa..b82b5207c78b 100644 --- a/drivers/input/touchscreen/of_touchscreen.c +++ b/drivers/input/touchscreen/of_touchscreen.c | |||
@@ -11,6 +11,7 @@ | |||
11 | 11 | ||
12 | #include <linux/of.h> | 12 | #include <linux/of.h> |
13 | #include <linux/input.h> | 13 | #include <linux/input.h> |
14 | #include <linux/input/mt.h> | ||
14 | #include <linux/input/touchscreen.h> | 15 | #include <linux/input/touchscreen.h> |
15 | 16 | ||
16 | static u32 of_get_optional_u32(struct device_node *np, | 17 | static u32 of_get_optional_u32(struct device_node *np, |
@@ -30,8 +31,13 @@ static void touchscreen_set_params(struct input_dev *dev, | |||
30 | struct input_absinfo *absinfo; | 31 | struct input_absinfo *absinfo; |
31 | 32 | ||
32 | if (!test_bit(axis, dev->absbit)) { | 33 | if (!test_bit(axis, dev->absbit)) { |
33 | dev_warn(&dev->dev, | 34 | /* |
34 | "DT specifies parameters but the axis is not set up\n"); | 35 | * Emit a warning only if the axis is not a multitouch |
36 | * axis, which might not be set by the driver. | ||
37 | */ | ||
38 | if (!input_is_mt_axis(axis)) | ||
39 | dev_warn(&dev->dev, | ||
40 | "DT specifies parameters but the axis is not set up\n"); | ||
35 | return; | 41 | return; |
36 | } | 42 | } |
37 | 43 | ||
@@ -59,17 +65,23 @@ void touchscreen_parse_of_params(struct input_dev *dev) | |||
59 | 65 | ||
60 | maximum = of_get_optional_u32(np, "touchscreen-size-x"); | 66 | maximum = of_get_optional_u32(np, "touchscreen-size-x"); |
61 | fuzz = of_get_optional_u32(np, "touchscreen-fuzz-x"); | 67 | fuzz = of_get_optional_u32(np, "touchscreen-fuzz-x"); |
62 | if (maximum || fuzz) | 68 | if (maximum || fuzz) { |
63 | touchscreen_set_params(dev, ABS_X, maximum, fuzz); | 69 | touchscreen_set_params(dev, ABS_X, maximum, fuzz); |
70 | touchscreen_set_params(dev, ABS_MT_POSITION_X, maximum, fuzz); | ||
71 | } | ||
64 | 72 | ||
65 | maximum = of_get_optional_u32(np, "touchscreen-size-y"); | 73 | maximum = of_get_optional_u32(np, "touchscreen-size-y"); |
66 | fuzz = of_get_optional_u32(np, "touchscreen-fuzz-y"); | 74 | fuzz = of_get_optional_u32(np, "touchscreen-fuzz-y"); |
67 | if (maximum || fuzz) | 75 | if (maximum || fuzz) { |
68 | touchscreen_set_params(dev, ABS_Y, maximum, fuzz); | 76 | touchscreen_set_params(dev, ABS_Y, maximum, fuzz); |
77 | touchscreen_set_params(dev, ABS_MT_POSITION_Y, maximum, fuzz); | ||
78 | } | ||
69 | 79 | ||
70 | maximum = of_get_optional_u32(np, "touchscreen-max-pressure"); | 80 | maximum = of_get_optional_u32(np, "touchscreen-max-pressure"); |
71 | fuzz = of_get_optional_u32(np, "touchscreen-fuzz-pressure"); | 81 | fuzz = of_get_optional_u32(np, "touchscreen-fuzz-pressure"); |
72 | if (maximum || fuzz) | 82 | if (maximum || fuzz) { |
73 | touchscreen_set_params(dev, ABS_PRESSURE, maximum, fuzz); | 83 | touchscreen_set_params(dev, ABS_PRESSURE, maximum, fuzz); |
84 | touchscreen_set_params(dev, ABS_MT_PRESSURE, maximum, fuzz); | ||
85 | } | ||
74 | } | 86 | } |
75 | EXPORT_SYMBOL(touchscreen_parse_of_params); | 87 | EXPORT_SYMBOL(touchscreen_parse_of_params); |