Skip to content

Commit b98abe5

Browse files
sredtor
authored andcommitted
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>
1 parent 50525cb commit b98abe5

File tree

5 files changed

+99
-0
lines changed

5 files changed

+99
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
General Touchscreen Properties:
2+
3+
Optional properties for Touchscreens:
4+
- touchscreen-size-x : horizontal resolution of touchscreen
5+
(in pixels)
6+
- touchscreen-size-y : vertical resolution of touchscreen
7+
(in pixels)
8+
- touchscreen-max-pressure : maximum reported pressure (arbitrary range
9+
dependent on the controller)
10+
- touchscreen-fuzz-x : horizontal noise value of the absolute input
11+
device (in pixels)
12+
- touchscreen-fuzz-y : vertical noise value of the absolute input
13+
device (in pixels)
14+
- touchscreen-fuzz-pressure : pressure noise value of the absolute input
15+
device (arbitrary range dependent on the
16+
controller)
17+
- touchscreen-inverted-x : X axis is inverted (boolean)
18+
- touchscreen-inverted-y : Y axis is inverted (boolean)
19+
20+
Deprecated properties for Touchscreens:
21+
- x-size : deprecated name for touchscreen-size-x
22+
- y-size : deprecated name for touchscreen-size-y
23+
- moving-threshold : deprecated name for a combination of
24+
touchscreen-fuzz-x and touchscreen-fuzz-y
25+
- contact-threshold : deprecated name for touchscreen-fuzz-pressure
26+
- x-invert : deprecated name for touchscreen-inverted-x
27+
- y-invert : deprecated name for touchscreen-inverted-y

drivers/input/touchscreen/Kconfig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ menuconfig INPUT_TOUCHSCREEN
1111

1212
if INPUT_TOUCHSCREEN
1313

14+
config OF_TOUCHSCREEN
15+
def_tristate INPUT
16+
depends on INPUT && OF
17+
1418
config TOUCHSCREEN_88PM860X
1519
tristate "Marvell 88PM860x touchscreen"
1620
depends on MFD_88PM860X

drivers/input/touchscreen/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
wm97xx-ts-y := wm97xx-core.o
88

9+
obj-$(CONFIG_OF_TOUCHSCREEN) += of_touchscreen.o
910
obj-$(CONFIG_TOUCHSCREEN_88PM860X) += 88pm860x-ts.o
1011
obj-$(CONFIG_TOUCHSCREEN_AD7877) += ad7877.o
1112
obj-$(CONFIG_TOUCHSCREEN_AD7879) += ad7879.o
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
*/
24+
void 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+
}
45+
EXPORT_SYMBOL(touchscreen_parse_of_params);

include/linux/input/touchscreen.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
* Copyright (c) 2014 Sebastian Reichel <sre@kernel.org>
3+
*
4+
* This program is free software; you can redistribute it and/or modify it
5+
* under the terms of the GNU General Public License version 2 as published by
6+
* the Free Software Foundation.
7+
*/
8+
9+
#ifndef _TOUCHSCREEN_H
10+
#define _TOUCHSCREEN_H
11+
12+
#include <linux/input.h>
13+
14+
#ifdef CONFIG_OF
15+
void touchscreen_parse_of_params(struct input_dev *dev);
16+
#else
17+
static inline void touchscreen_parse_of_params(struct input_dev *dev)
18+
{
19+
}
20+
#endif
21+
22+
#endif

0 commit comments

Comments
 (0)