[PATCH v7 1/2] dt-bindings: input: touchscreen: add Hynitron CST816X

From: Oleh Kuzhylnyi
Date: Thu Sep 12 2024 - 09:28:47 EST


Add documentation for the Hynitron CST816X touchscreen bindings.

Reviewed-by: Conor Dooley <conor.dooley@xxxxxxxxxxxxx>
Signed-off-by: Oleh Kuzhylnyi <kuzhylol@xxxxxxxxx>
---

Changes in v7:
- Introduce the gestures field along with its sub-fields
- Make reset-gpio property optional
- Extend main description
- Remove "touchscreen" reference

Changes in v6:
- Fix minor tweak adviced by Krzysztof:
- Move additionalProperties field after required

Changes in v5:
- No code changes

Changes in v4:
- Add Conor's Dooley "Reviewed-by" tag

Changes in v3:
- Rename filename to hynitron,cst816s.yaml
- Update description with display details

Changes in v2:
- Apply pin definitions and DT headers
- Use generic name for DT node
- Drop status field

.../input/touchscreen/hynitron,cst816s.yaml | 126 ++++++++++++++++++
1 file changed, 126 insertions(+)
create mode 100644 Documentation/devicetree/bindings/input/touchscreen/hynitron,cst816s.yaml

diff --git a/Documentation/devicetree/bindings/input/touchscreen/hynitron,cst816s.yaml b/Documentation/devicetree/bindings/input/touchscreen/hynitron,cst816s.yaml
new file mode 100644
index 000000000000..99ac29da7a5a
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/hynitron,cst816s.yaml
@@ -0,0 +1,126 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/input/touchscreen/hynitron,cst816s.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Hynitron CST816S Touchscreen controller
+
+description:
+ The CST816S is a touchscreen controller from Hynitron, which supports gesture
+ recognition for swipe directions, tap, and long-press actions. This binding
+ document defines the necessary properties for integrating the CST816S with
+ a Linux system.
+
+maintainers:
+ - Oleh Kuzhylnyi <kuzhylol@xxxxxxxxx>
+
+properties:
+ compatible:
+ enum:
+ - hynitron,cst816s
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ reset-gpios:
+ maxItems: 1
+ description:
+ Optional GPIO line used to reset the touchscreen controller.
+ optional: true
+
+ gestures:
+ type: object
+ description:
+ A list of gestures supported by the CST816S touchscreen controller and
+ their associated Linux input event codes.
+ optional: true
+
+ properties:
+ "^.*$":
+ type: object
+ description:
+ Each child node represents a gesture that the touchscreen controller
+ can recognize.
+
+ properties:
+ cst816x,gesture:
+ description:
+ Numeric value representing the gesture ID recognized by the
+ CST816S touchscreen controller.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ linux,code:
+ description:
+ Linux input event code (from linux/input-event-codes.h) that
+ corresponds to the gesture.
+ $ref: /schemas/types.yaml#/definitions/uint32
+
+ required:
+ - cst816x,gesture
+ - linux,code
+
+ additionalProperties: false
+
+required:
+ - compatible
+ - reg
+ - interrupts
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/input/linux-event-codes.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ touchscreen@15 {
+ compatible = "hynitron,cst816s";
+ reg = <0x15>;
+ interrupt-parent = <&gpio0>;
+ interrupts = <4 IRQ_TYPE_EDGE_RISING>;
+ reset-gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+
+ gestures {
+ swipe_up {
+ cst816x,gesture = <0x1>;
+ linux,code = <BTN_FORWARD>;
+ };
+
+ swipe_down {
+ cst816x,gesture = <0x2>;
+ linux,code = <BTN_BACK>;
+ };
+
+ swipe_left {
+ cst816x,gesture = <0x3>;
+ linux,code = <BTN_LEFT>;
+ };
+
+ swipe_right {
+ cst816x,gesture = <0x4>;
+ linux,code = <BTN_RIGHT>;
+ };
+
+ single_tap {
+ cst816x,gesture = <0x5>;
+ linux,code = <BTN_TOUCH>;
+ };
+
+ long_press {
+ cst816x,gesture = <0xC>;
+ linux,code = <BTN_TOOL_TRIPLETAP>;
+ };
+ };
+ };
+ };
+
+...
--
2.34.1