aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/touchscreen
diff options
context:
space:
mode:
authorSebastian Reichel <sre@kernel.org>2014-05-29 02:51:53 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2014-05-29 03:05:59 -0400
commitb98abe52fa8e2a3797d3cc2db3d0e109f4549c03 (patch)
treee3ffbc076e4ff36eda0564106aada80fe67d8e2a /drivers/input/touchscreen
parent50525cb3bf9dc7fe4cb8d4cd9b9e389257eaa8ee (diff)
Input: add common DT binding for touchscreens
Add common DT binding documentation for touchscreen devices and implement input_parse_touchscreen_of_params, which parses the common properties and configures the input device accordingly. The method currently does not interpret the axis inversion properties, since there is no matching flag in the generic linux input device. Reviewed-by: Pavel Machek <pavel@ucw.cz> Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi> Signed-off-by: Sebastian Reichel <sre@kernel.org> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/touchscreen')
-rw-r--r--drivers/input/touchscreen/Kconfig4
-rw-r--r--drivers/input/touchscreen/Makefile1
-rw-r--r--drivers/input/touchscreen/of_touchscreen.c45
3 files changed, 50 insertions, 0 deletions
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 43389c097b02..8e07fe8505fd 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -11,6 +11,10 @@ menuconfig INPUT_TOUCHSCREEN
11 11
12if INPUT_TOUCHSCREEN 12if INPUT_TOUCHSCREEN
13 13
14config OF_TOUCHSCREEN
15 def_tristate INPUT
16 depends on INPUT && OF
17
14config TOUCHSCREEN_88PM860X 18config TOUCHSCREEN_88PM860X
15 tristate "Marvell 88PM860x touchscreen" 19 tristate "Marvell 88PM860x touchscreen"
16 depends on MFD_88PM860X 20 depends on MFD_88PM860X
diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
index 71a97559ce68..4d479fb0a768 100644
--- a/drivers/input/touchscreen/Makefile
+++ b/drivers/input/touchscreen/Makefile
@@ -6,6 +6,7 @@
6 6
7wm97xx-ts-y := wm97xx-core.o 7wm97xx-ts-y := wm97xx-core.o
8 8
9obj-$(CONFIG_OF_TOUCHSCREEN) += of_touchscreen.o
9obj-$(CONFIG_TOUCHSCREEN_88PM860X) += 88pm860x-ts.o 10obj-$(CONFIG_TOUCHSCREEN_88PM860X) += 88pm860x-ts.o
10obj-$(CONFIG_TOUCHSCREEN_AD7877) += ad7877.o 11obj-$(CONFIG_TOUCHSCREEN_AD7877) += ad7877.o
11obj-$(CONFIG_TOUCHSCREEN_AD7879) += ad7879.o 12obj-$(CONFIG_TOUCHSCREEN_AD7879) += ad7879.o
diff --git a/drivers/input/touchscreen/of_touchscreen.c b/drivers/input/touchscreen/of_touchscreen.c
new file mode 100644
index 000000000000..f8f9b84230b1
--- /dev/null
+++ b/drivers/input/touchscreen/of_touchscreen.c
@@ -0,0 +1,45 @@
1/*
2 * Generic DT helper functions for touchscreen devices
3 *
4 * Copyright (c) 2014 Sebastian Reichel <sre@kernel.org>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11
12#include <linux/of.h>
13#include <linux/input.h>
14#include <linux/input/touchscreen.h>
15
16/**
17 * touchscreen_parse_of_params - parse common touchscreen DT properties
18 * @dev: device that should be parsed
19 *
20 * This function parses common DT properties for touchscreens and setups the
21 * input device accordingly. The function keeps previously setuped default
22 * values if no value is specified via DT.
23 */
24void touchscreen_parse_of_params(struct input_dev *dev)
25{
26 struct device_node *np = dev->dev.parent->of_node;
27 struct input_absinfo *absinfo;
28
29 input_alloc_absinfo(dev);
30 if (!dev->absinfo)
31 return;
32
33 absinfo = &dev->absinfo[ABS_X];
34 of_property_read_u32(np, "touchscreen-size-x", &absinfo->maximum);
35 of_property_read_u32(np, "touchscreen-fuzz-x", &absinfo->fuzz);
36
37 absinfo = &dev->absinfo[ABS_Y];
38 of_property_read_u32(np, "touchscreen-size-y", &absinfo->maximum);
39 of_property_read_u32(np, "touchscreen-fuzz-y", &absinfo->fuzz);
40
41 absinfo = &dev->absinfo[ABS_PRESSURE];
42 of_property_read_u32(np, "touchscreen-max-pressure", &absinfo->maximum);
43 of_property_read_u32(np, "touchscreen-fuzz-pressure", &absinfo->fuzz);
44}
45EXPORT_SYMBOL(touchscreen_parse_of_params);