input: touchscreen: Add generic touchscreen softbutton support
Subsystems (4)
cover input: touchscreen: Add generic touchscreen softbutton support
Hi Dmitry,
Some touchscreens extend over the display they cover and have a number of capacative softbuttons outside of the display the cover.
With some hardware these softbuttons simply report touches with coordinates outside of the normal coordinate space for touches on the display.
This patch-series adds some generic helper code for supporting such setups, including support for triggering a led as visual feedback that a softbutton has been touched.
It also uses the generic helpers to add softbutton support to the edt-ft5x06 driver.
Can you please review patches 1-3 and if they are to your liking merge them ?
Note patch 4 is included mostly as illustration how this all can be used, I will submit that to the sunxi dt maintainers once the input bits have been merged.
Regards,
Hans
PATCH 1/4 input: touchscreen: Add generic touchscreen softbutton handling code
Some touchscreens extend over the display they cover and have a number of capacative softbuttons outside of the display the cover.
With some hardware these softbuttons simply report touches with coordinates outside of the normal coordinate space for touches on the display.
This commit adds a devicetree binding for describing such buttons in devicetree and a bunch of helper functions to easily add support for these to existing touchscreen drivers.
--- .../bindings/input/touchscreen/softbuttons.txt | 58 +++++++++ drivers/input/touchscreen/Makefile | 2 +- drivers/input/touchscreen/softbuttons.c | 145 +++++++++++++++++++++ include/linux/input/touchscreen.h | 9 ++ 4 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt create mode 100644 drivers/input/touchscreen/softbuttons.c
Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt new file +58 -0
@@ -0,0 +1,58 @@ +General Touchscreen Softbutton Properties: + +Some touchscreens extend over the display they cover and have a number +of capacative softbuttons outside of the display the cover. + +Some of these softbuttons simply report touches with coordinates outside of +the normal coordinate space for touches on the display. This binding is for +describing such buttons in devicetree. + +Each softkey is represented as a sub-node of the touchscreen node. + +Required subnode-properties: + - label : Descriptive name of the key. + - linux,code : Keycode to emit. + - softbutton-min-x : X start of the area the softbutton area covers + - softbutton-max-x : X end of the area the softbutton area covers + - softbutton-min-y : Y start of the area the softbutton area covers + - softbutton-max-y : Y end of the area the softbutton area covers + +Example: + +#include <dt-bindings/input/input.h> + +&i2c2 { + ft5406ee8: touchscreen at 38 { + compatible = "edt,edt-ft5406"; + reg = <0x38>; + touchscreen-size-x = <1024>; + touchscreen-size-y = <768>; + + button at 0 { + label = "Esc"; + linux,code = <KEY_ESC>; + softbutton-min-x = <1084>; + softbutton-max-x = <1098>; + softbutton-min-y = <0>; + softbutton-max-y = <49>; + }; + + button at 1 { + label = "Home"; + linux,code = <KEY_HOMEPAGE>; + softbutton-min-x = <1084>; + softbutton-max-x = <1098>; + softbutton-min-y = <50>; + softbutton-max-y = <99>; + }; + + button at 2 { + label = "Menu"; + linux,code = <KEY_MENU>; + softbutton-min-x = <1084>; + softbutton-max-x = <1098>; + softbutton-min-y = <100>; + softbutton-max-y = <149>; + }; + }; +};
drivers/input/touchscreen/Makefile +1 -1
@@ -6,7 +6,7 @@ wm97xx-ts-y := wm97xx-core.o -obj-$(CONFIG_TOUCHSCREEN_PROPERTIES) += of_touchscreen.o +obj-$(CONFIG_TOUCHSCREEN_PROPERTIES) += of_touchscreen.o softbuttons.o obj-$(CONFIG_TOUCHSCREEN_88PM860X) += 88pm860x-ts.o obj-$(CONFIG_TOUCHSCREEN_AD7877) += ad7877.o obj-$(CONFIG_TOUCHSCREEN_AD7879) += ad7879.o
drivers/input/touchscreen/softbuttons.c new file +145 -0
145 lines not on this page · raw message
include/linux/input/touchscreen.h +9 -0
@@ -9,8 +9,11 @@ #ifndef _TOUCHSCREEN_H #define _TOUCHSCREEN_H +#include <linux/types.h> + struct input_dev; struct input_mt_pos; +struct touchscreen_softbutton_info; struct touchscreen_properties { unsigned int max_x;
@@ -32,4 +35,10 @@ void touchscreen_report_pos(struct input_dev *input, unsigned int x, unsigned int y, bool multitouch); +struct touchscreen_softbutton_info *devm_touchscreen_alloc_softbuttons ( +struct input_dev *input); + +bool touchscreen_handle_softbuttons (struct touchscreen_softbutton_info *info, +unsigned int x,unsigned int y,bool down); +#endif
Signature · 1 line
2.7.4
Rob Herring
maintainerPATCH 1/4 input: touchscreen: Add generic touchscreen softbutton handling code
Quoted 35 lines · Hans de Goede
Some touchscreens extend over the display they cover and have a number of capacative softbuttons outside of the display the cover.
With some hardware these softbuttons simply report touches with coordinates outside of the normal coordinate space for touches on the display.
This commit adds a devicetree binding for describing such buttons in devicetree and a bunch of helper functions to easily add support for these to existing touchscreen drivers.
Signed-off-by Hans de Goede <[email protected]>--- .../bindings/input/touchscreen/softbuttons.txt | 58 +++++++++ drivers/input/touchscreen/Makefile | 2 +- drivers/input/touchscreen/softbuttons.c | 145 +++++++++++++++++++++ include/linux/input/touchscreen.h | 9 ++ 4 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt create mode 100644 drivers/input/touchscreen/softbuttons.cDocumentation/devicetree/bindings/input/touchscreen/softbuttons.txt new file +8
-0@@ -0,0 +1,58 @@ +General Touchscreen Softbutton Properties: + +Some touchscreens extend over the display they cover and have a number +of capacative softbuttons outside of the display the cover. + +Some of these softbuttons simply report touches with coordinates outside of +the normal coordinate space for touches on the display. This binding is for +describing such buttons in devicetree.
Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt line 18
Quoted 10 lines
Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt new file +10
-0+ +Each softkey is represented as a sub-node of the touchscreen node. + +Required subnode-properties: + - label : Descriptive name of the key. + - linux,code : Keycode to emit. + - softbutton-min-x : X start of the area the softbutton area covers + - softbutton-max-x : X end of the area the softbutton area covers + - softbutton-min-y : Y start of the area the softbutton area covers + - softbutton-max-y : Y end of the area the softbutton area covers
This generally looks fine to me, but I am wondering one thing. If the buttons are located at the origin of an axis, can we handle that case? I don't think you can unless you assume softbutton-max-? is 0 for the touchscreen. To put it another way, you have a gap from 1024 to 1084 which you can't express for buttons at the origin unless you do negative numbers.
Rob
Dmitry Torokhov
maintainerPATCH 1/4 input: touchscreen: Add generic touchscreen softbutton handling code
Quoted 45 lines · Rob Herring
Quoted 44 lines · Hans de Goede
Some touchscreens extend over the display they cover and have a number of capacative softbuttons outside of the display the cover.
With some hardware these softbuttons simply report touches with coordinates outside of the normal coordinate space for touches on the display.
This commit adds a devicetree binding for describing such buttons in devicetree and a bunch of helper functions to easily add support for these to existing touchscreen drivers.
Signed-off-by Hans de Goede <[email protected]>--- .../bindings/input/touchscreen/softbuttons.txt | 58 +++++++++ drivers/input/touchscreen/Makefile | 2 +- drivers/input/touchscreen/softbuttons.c | 145 +++++++++++++++++++++ include/linux/input/touchscreen.h | 9 ++ 4 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt create mode 100644 drivers/input/touchscreen/softbuttons.cDocumentation/devicetree/bindings/input/touchscreen/softbuttons.txt new file +17
-0@@ -0,0 +1,58 @@ +General Touchscreen Softbutton Properties: + +Some touchscreens extend over the display they cover and have a number +of capacative softbuttons outside of the display the cover. + +Some of these softbuttons simply report touches with coordinates outside of +the normal coordinate space for touches on the display. This binding is for +describing such buttons in devicetree. + +Each softkey is represented as a sub-node of the touchscreen node. + +Required subnode-properties: + - label : Descriptive name of the key. + - linux,code : Keycode to emit. + - softbutton-min-x : X start of the area the softbutton area covers + - softbutton-max-x : X end of the area the softbutton area covers + - softbutton-min-y : Y start of the area the softbutton area covers
Quoted 8 lines
Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt line 18
Quoted 1 line
Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt new file +1
-0+ - softbutton-max-y : Y end of the area the softbutton area coversThis generally looks fine to me, but I am wondering one thing. If the buttons are located at the origin of an axis, can we handle that case? I don't think you can unless you assume softbutton-max-? is 0 for the touchscreen. To put it another way, you have a gap from 1024 to 1084 which you can't express for buttons at the origin unless you do negative numbers.
I do not this this should be done in kernel: I do not see nay difference in softbuttons or sliders or circular controls or... They are not controller-specific and I think are better handled in userspace. We do that for Synaptics touchpads with softbuttons, we can do that for other controllers.
Also, what is or stance when there is no bezel and we sill want to have the softbutons (i.e. all Nexus phones and tablets)?
Thanks.
Signature · 1 line
Dmitry
PATCH 1/4 input: touchscreen: Add generic touchscreen softbutton handling code
Hi,
Quoted 55 lines · Dmitry Torokhov
Quoted 45 lines · Rob Herring
Quoted 44 lines · Hans de Goede
Some touchscreens extend over the display they cover and have a number of capacative softbuttons outside of the display the cover.
With some hardware these softbuttons simply report touches with coordinates outside of the normal coordinate space for touches on the display.
This commit adds a devicetree binding for describing such buttons in devicetree and a bunch of helper functions to easily add support for these to existing touchscreen drivers.
Signed-off-by Hans de Goede <[email protected]>--- .../bindings/input/touchscreen/softbuttons.txt | 58 +++++++++ drivers/input/touchscreen/Makefile | 2 +- drivers/input/touchscreen/softbuttons.c | 145 +++++++++++++++++++++ include/linux/input/touchscreen.h | 9 ++ 4 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt create mode 100644 drivers/input/touchscreen/softbuttons.cDocumentation/devicetree/bindings/input/touchscreen/softbuttons.txt new file +17
-0@@ -0,0 +1,58 @@ +General Touchscreen Softbutton Properties: + +Some touchscreens extend over the display they cover and have a number +of capacative softbuttons outside of the display the cover. + +Some of these softbuttons simply report touches with coordinates outside of +the normal coordinate space for touches on the display. This binding is for +describing such buttons in devicetree. + +Each softkey is represented as a sub-node of the touchscreen node. + +Required subnode-properties: + - label : Descriptive name of the key. + - linux,code : Keycode to emit. + - softbutton-min-x : X start of the area the softbutton area covers + - softbutton-max-x : X end of the area the softbutton area covers + - softbutton-min-y : Y start of the area the softbutton area coversQuoted 8 lines
Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt line 18
Quoted 1 line
Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt new file +1
-0+ - softbutton-max-y : Y end of the area the softbutton area coversThis generally looks fine to me, but I am wondering one thing. If the buttons are located at the origin of an axis, can we handle that case? I don't think you can unless you assume softbutton-max-? is 0 for the touchscreen. To put it another way, you have a gap from 1024 to 1084 which you can't express for buttons at the origin unless you do negative numbers.
Quoted 8 lines
I do not this this should be done in kernel: I do not see nay difference in softbuttons or sliders or circular controls or... They are not controller-specific and I think are better handled in userspace. We do that for Synaptics touchpads with softbuttons, we can do that for other controllers.
Also, what is or stance when there is no bezel and we sill want to have the softbutons (i.e. all Nexus phones and tablets)?
Maybe softbuttons is not the best name (I googled and it seemed to match), so first lets make clear what I'm talking about here, I wrote this patch-set for this tablet:
https://content.hwigroup.net/images/products_xl/157078/dserve-dsrv-9703c.jpg
I decided to make it generic, since it seemed to me that there will likely be other hardware which is similar (but uses a different touch screen controller) out there, so keeping this generic seemed best.
Now back to the kernelspace vs userspace solution question, if you look at the picture you will see 3 clearly marked buttons on the front of the tablet, outside of the display: menu, home and back. These are not buttons which get generated / drawn on the display when you touch the bottom of the screen, these are separate single-purpose buttons which happen to report presses via the touchscreen controller then via a separate hw mechanism.
If these buttons used a separate capacative button controller as used in e.g. capacitive numpads, say something like this:
Then there would be no question that this belongs in the kernel. I do not see how these are any different really. These cannot be runtime re-configured, they are separate dedicated buttons which happens to report presses via the touchscreen controllers.
There also is the question of hardware description, no matter where we put support for this, we need some place were we describe the presence of these buttons to the software bits which end up dealing with them.
And we already have a mechanism for describing "fixed" hardware for a certain model machine / board in the form of devicetree. To me putting the hardware description for this anywhere but in devicetree makes no sense because then we start scattering the description of a single device-type over multiple places which seems like a bad idea.
And once we decided to put the description in devicetree, then dealing with this in the kernel becomes the logical thing to do.
Regards,
Hans
p.s.
One other example of buttons like these are those on the nexus one:
http://www.informatica.com.do/7BZ-PortalImageUpload/image/2010151059110.google-nexus-one-01.jpg
Note I'm not saying this binding will work for those, I've no idea how they are hooked up, but they are the same in that they are really 4 dedicated separate buttons which happen to be part of the main digitizer.
PATCH 1/4 input: touchscreen: Add generic touchscreen softbutton handling code
Quoted 114 lines · Hans de Goede
Hi,
Quoted 55 lines · Dmitry Torokhov
Quoted 45 lines · Rob Herring
Quoted 44 lines · Hans de Goede
Some touchscreens extend over the display they cover and have a number of capacative softbuttons outside of the display the cover.
With some hardware these softbuttons simply report touches with coordinates outside of the normal coordinate space for touches on the display.
This commit adds a devicetree binding for describing such buttons in devicetree and a bunch of helper functions to easily add support for these to existing touchscreen drivers.
Signed-off-by Hans de Goede <[email protected]>--- .../bindings/input/touchscreen/softbuttons.txt | 58 +++++++++ drivers/input/touchscreen/Makefile | 2 +- drivers/input/touchscreen/softbuttons.c | 145 +++++++++++++++++++++ include/linux/input/touchscreen.h | 9 ++ 4 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt create mode 100644 drivers/input/touchscreen/softbuttons.cDocumentation/devicetree/bindings/input/touchscreen/softbuttons.txt new file +17
-0@@ -0,0 +1,58 @@ +General Touchscreen Softbutton Properties: + +Some touchscreens extend over the display they cover and have a number +of capacative softbuttons outside of the display the cover. + +Some of these softbuttons simply report touches with coordinates outside of +the normal coordinate space for touches on the display. This binding is for +describing such buttons in devicetree. + +Each softkey is represented as a sub-node of the touchscreen node. + +Required subnode-properties: + - label : Descriptive name of the key. + - linux,code : Keycode to emit. + - softbutton-min-x : X start of the area the softbutton area covers + - softbutton-max-x : X end of the area the softbutton area covers + - softbutton-min-y : Y start of the area the softbutton area coversQuoted 8 lines
Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt line 18
Quoted 1 line
Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt new file +1
-0+ - softbutton-max-y : Y end of the area the softbutton area coversThis generally looks fine to me, but I am wondering one thing. If the buttons are located at the origin of an axis, can we handle that case? I don't think you can unless you assume softbutton-max-? is 0 for the touchscreen. To put it another way, you have a gap from 1024 to 1084 which you can't express for buttons at the origin unless you do negative numbers.
Quoted 8 lines
I do not this this should be done in kernel: I do not see nay difference in softbuttons or sliders or circular controls or... They are not controller-specific and I think are better handled in userspace. We do that for Synaptics touchpads with softbuttons, we can do that for other controllers.
Also, what is or stance when there is no bezel and we sill want to have the softbutons (i.e. all Nexus phones and tablets)?
Maybe softbuttons is not the best name (I googled and it seemed to match), so first lets make clear what I'm talking about here, I wrote this patch-set for this tablet:
https://content.hwigroup.net/images/products_xl/157078/dserve-dsrv-9703c.jpg
I decided to make it generic, since it seemed to me that there will likely be other hardware which is similar (but uses a different touch screen controller) out there, so keeping this generic seemed best.
Now back to the kernelspace vs userspace solution question, if you look at the picture you will see 3 clearly marked buttons on the front of the tablet, outside of the display: menu, home and back. These are not buttons which get generated / drawn on the display when you touch the bottom of the screen, these are separate single-purpose buttons which happen to report presses via the touchscreen controller then via a separate hw mechanism.
If these buttons used a separate capacative button controller as used in e.g. capacitive numpads, say something like this:
Then there would be no question that this belongs in the kernel. I do not see how these are any different really. These cannot be runtime re-configured, they are separate dedicated buttons which happens to report presses via the touchscreen controllers.
There also is the question of hardware description, no matter where we put support for this, we need some place were we describe the presence of these buttons to the software bits which end up dealing with them.
And we already have a mechanism for describing "fixed" hardware for a certain model machine / board in the form of devicetree. To me putting the hardware description for this anywhere but in devicetree makes no sense because then we start scattering the description of a single device-type over multiple places which seems like a bad idea.
And once we decided to put the description in devicetree, then dealing with this in the kernel becomes the logical thing to do.
Regards,
Hans
p.s.
Quoted 7 lines
One other example of buttons like these are those on the nexus one:
http://www.informatica.com.do/7BZ-PortalImageUpload/image/2010151059110.google-nexus-one-01.jpg
Note I'm not saying this binding will work for those, I've no idea how they are hooked up, but they are the same in that they are really 4 dedicated separate buttons which happen to be part of the main digitizer.
Dmitry, ping? Any reaction to the above ?
Regards,
Hans
p.s.
I've been thinking a bit more about this, trying to envision a reasonable user-space solution and I do not really see any. IMHO this really belongs in the kernel, and it is not a lot of code, the basic softbutton core is quite small, and the actually needed touchscreen driver changer are only a couple of line, so it is not like doing this in the kernel is a hassle, where as doing this in userspace will be a hassle.
PATCH 1/4 input: touchscreen: Add generic touchscreen softbutton handling code
In reply to Rob HerringHi Rob,
Quoted 45 lines · Rob Herring
Quoted 44 lines · Hans de Goede
Some touchscreens extend over the display they cover and have a number of capacative softbuttons outside of the display the cover.
With some hardware these softbuttons simply report touches with coordinates outside of the normal coordinate space for touches on the display.
This commit adds a devicetree binding for describing such buttons in devicetree and a bunch of helper functions to easily add support for these to existing touchscreen drivers.
Signed-off-by Hans de Goede <[email protected]>--- .../bindings/input/touchscreen/softbuttons.txt | 58 +++++++++ drivers/input/touchscreen/Makefile | 2 +- drivers/input/touchscreen/softbuttons.c | 145 +++++++++++++++++++++ include/linux/input/touchscreen.h | 9 ++ 4 files changed, 213 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt create mode 100644 drivers/input/touchscreen/softbuttons.cDocumentation/devicetree/bindings/input/touchscreen/softbuttons.txt new file +17
-0@@ -0,0 +1,58 @@ +General Touchscreen Softbutton Properties: + +Some touchscreens extend over the display they cover and have a number +of capacative softbuttons outside of the display the cover. + +Some of these softbuttons simply report touches with coordinates outside of +the normal coordinate space for touches on the display. This binding is for +describing such buttons in devicetree. + +Each softkey is represented as a sub-node of the touchscreen node. + +Required subnode-properties: + - label : Descriptive name of the key. + - linux,code : Keycode to emit. + - softbutton-min-x : X start of the area the softbutton area covers + - softbutton-max-x : X end of the area the softbutton area covers + - softbutton-min-y : Y start of the area the softbutton area covers
Quoted 8 lines
Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt line 18
Quoted 1 line
Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt new file +1
-0+ - softbutton-max-y : Y end of the area the softbutton area coversThis generally looks fine to me, but I am wondering one thing. If the buttons are located at the origin of an axis, can we handle that case? I don't think you can unless you assume softbutton-max-? is 0 for the touchscreen. To put it another way, you have a gap from 1024 to 1084 which you can't express for buttons at the origin unless you do negative numbers.
Actually for the touchscreen I'm working on:
https://content.hwigroup.net/images/products_xl/157078/dserve-dsrv-9703c.jpg
The buttons are past the display edge which corresponds to x coordinate 0, so they should logically send negative coordinates but the "firmware" (which I believe is more config / calibration data) maps them to coordinates above 1024, so logically across the other edge. But I can envision some other hardware doing this differently. I suggest we deal with this when we need too, likely we just need to add a note that the dt min/max values should be interpreted as a s32 rather then an u32, I can do that now if you want.
Regards,
Hans
Quoted 3 lines
Rob
PATCH 2/4 input: touchscreen: Add LED trigger support to the softbutton code
In reply to Hans de GoedeIn some hardware there are 1 or more LEDs behind the touchscreen softbuttons, which are intended to provide visual feedback to the user that the softbutton has been pressed, this commit adds support for this.
--- .../bindings/input/touchscreen/softbuttons.txt | 4 ++ drivers/input/touchscreen/softbuttons.c | 49 +++++++++++++++++++++- 2 files changed, 52 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/input/touchscreen/softbuttons.txt +4 -0
@@ -17,6 +17,10 @@ Required subnode-properties: - softbutton-min-y : Y start of the area the softbutton area covers - softbutton-max-y : Y end of the area the softbutton area covers +Optional subnode-properties: +- linux,led-trigger : String for a LED trigger for providing visual + feedback that the softbutton has been pressed + Example: #include <dt-bindings/input/input.h>
drivers/input/touchscreen/softbuttons.c +48 -1
85 lines not on this page · raw message
Signature · 1 line
2.7.4
PATCH 3/4 input: touchscreen: edt-ft5x06: Add support for softbuttons
In reply to Hans de GoedeAdd support for softbuttons to the edt-ft5x06 driver.
--- drivers/input/touchscreen/edt-ft5x06.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/input/touchscreen/edt-ft5x06.c +8 -0
@@ -86,6 +86,7 @@ struct edt_reg_addr {struct edt_ft5x06_ts_data {struct i2c_client *client;struct input_dev *input; +struct touchscreen_softbutton_info *buttons;struct touchscreen_properties prop;u16 num_x;u16 num_y;
@@ -241,6 +242,9 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id) id = (buf[2 ] >>4 ) &0x0f ; down = type !=TOUCH_EVENT_UP ; +if (touchscreen_handle_softbuttons (tsdata->buttons, x, y, down)) +continue ; +input_mt_slot (tsdata->input, id);input_mt_report_slot_state (tsdata->input,MT_TOOL_FINGER , down);
@@ -975,6 +979,10 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,touchscreen_parse_properties (input, true, &tsdata->prop); + tsdata->buttons =devm_touchscreen_alloc_softbuttons (input); +if (IS_ERR (tsdata->buttons)) +return PTR_ERR (tsdata->buttons); + error =input_mt_init_slots (input, tsdata->max_support_points,INPUT_MT_DIRECT );if (error) {
Signature · 1 line
2.7.4
PATCH 4/4 ARM: dts: sun4i: Describe softbuttons in dserve-dsrv9703c touchscreen node
In reply to Hans de GoedeThe dserve-dsrv9703c touchscreen has 3 softbuttons, describe these in the dts.
--- arch/arm/boot/dts/sun4i-a10-dserve-dsrv9703c.dts | 49 ++++++++++++++++++++++++ 1 file changed, 49 insertions(+)
arch/arm/boot/dts/sun4i-a10-dserve-dsrv9703c.dts +49 -0
@@ -78,6 +78,18 @@ max-microvolt = <3000000>; }; + leds { + compatible = "gpio-leds"; + pinctrl-names = "default"; + pinctrl-0 = <&led_pins>; + + touchscreen_softbuttons_led { + label = "dsrv9703c:white:touschscreen-softbuttons"; + gpios = <&pio 0 5 GPIO_ACTIVE_HIGH>; /* PA5 */ + linux,default-trigger = "touschscreen-softbuttons"; + }; + }; + reg_motor: reg_motor { compatible = "regulator-fixed"; pinctrl-names = "default";
@@ -140,6 +152,36 @@ reset-gpios = <&pio 1 13 GPIO_ACTIVE_LOW>; touchscreen-size-x = <1024>; touchscreen-size-y = <768>; + + button at 0 { + label = "Esc"; + linux,code = <KEY_ESC>; + softbutton-min-x = <1084>; + softbutton-max-x = <1098>; + softbutton-min-y = <0>; + softbutton-max-y = <49>; + linux,led-trigger = "touschscreen-softbuttons"; + }; + + button at 1 { + label = "Home"; + linux,code = <KEY_HOMEPAGE>; + softbutton-min-x = <1084>; + softbutton-max-x = <1098>; + softbutton-min-y = <50>; + softbutton-max-y = <99>; + linux,led-trigger = "touschscreen-softbuttons"; + }; + + button at 2 { + label = "Menu"; + linux,code = <KEY_MENU>; + softbutton-min-x = <1084>; + softbutton-max-x = <1098>; + softbutton-min-y = <100>; + softbutton-max-y = <149>; + linux,led-trigger = "touschscreen-softbuttons"; + }; }; };
@@ -191,6 +233,13 @@ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; }; + led_pins: led_pins at 0 { + allwinner,pins = "PA5"; + allwinner,function = "gpio_out"; + allwinner,drive = <SUN4I_PINCTRL_10_MA>; + allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; + }; + motor_pins: motor_pins at 0 { allwinner,pins = "PB3"; allwinner,function = "gpio_out";
Signature · 1 line
2.7.4