Merge tag 'for-5.11/dm-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/device...
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / input / adc-joystick.yaml
1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 # Copyright 2019-2020 Artur Rojek
3 %YAML 1.2
4 ---
5 $id: "http://devicetree.org/schemas/input/adc-joystick.yaml#"
6 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
7
8 title: ADC attached joystick
9
10 maintainers:
11   - Artur Rojek <contact@artur-rojek.eu>
12
13 description: >
14   Bindings for joystick devices connected to ADC controllers supporting
15   the Industrial I/O subsystem.
16
17 properties:
18   compatible:
19     const: adc-joystick
20
21   io-channels:
22     minItems: 1
23     maxItems: 1024
24     description: >
25       List of phandle and IIO specifier pairs.
26       Each pair defines one ADC channel to which a joystick axis is connected.
27       See Documentation/devicetree/bindings/iio/iio-bindings.txt for details.
28
29   '#address-cells':
30     const: 1
31
32   '#size-cells':
33     const: 0
34
35 required:
36   - compatible
37   - io-channels
38   - '#address-cells'
39   - '#size-cells'
40
41 additionalProperties: false
42
43 patternProperties:
44   "^axis@[0-9a-f]+$":
45     type: object
46     description: >
47       Represents a joystick axis bound to the given ADC channel.
48       For each entry in the io-channels list, one axis subnode with a matching
49       reg property must be specified.
50
51     properties:
52       reg:
53         minimum: 0
54         maximum: 1023
55         description: Index of an io-channels list entry bound to this axis.
56
57       linux,code:
58         $ref: /schemas/types.yaml#/definitions/uint32
59         description: EV_ABS specific event code generated by the axis.
60
61       abs-range:
62         allOf:
63           - $ref: /schemas/types.yaml#/definitions/uint32-array
64           - items:
65               - description: minimum value
66               - description: maximum value
67         description: >
68           Minimum and maximum values produced by the axis.
69           For an ABS_X axis this will be the left-most and right-most
70           inclination of the joystick. If min > max, it is left to userspace to
71           treat the axis as inverted.
72           This property is interpreted as two signed 32 bit values.
73
74       abs-fuzz:
75         $ref: /schemas/types.yaml#/definitions/uint32
76         description: >
77           Amount of noise in the input value.
78           Omitting this property indicates the axis is precise.
79
80       abs-flat:
81         $ref: /schemas/types.yaml#/definitions/uint32
82         description: >
83           Axial "deadzone", or area around the center position, where the axis
84           is considered to be at rest.
85           Omitting this property indicates the axis always returns to exactly
86           the center position.
87
88     required:
89       - reg
90       - linux,code
91       - abs-range
92
93     additionalProperties: false
94
95 examples:
96   - |
97     #include <dt-bindings/iio/adc/ingenic,adc.h>
98     #include <dt-bindings/input/input.h>
99
100     joystick: adc-joystick {
101       compatible = "adc-joystick";
102       io-channels = <&adc INGENIC_ADC_TOUCH_XP>,
103                     <&adc INGENIC_ADC_TOUCH_YP>;
104       #address-cells = <1>;
105       #size-cells = <0>;
106
107       axis@0 {
108               reg = <0>;
109               linux,code = <ABS_X>;
110               abs-range = <3300 0>;
111               abs-fuzz = <4>;
112               abs-flat = <200>;
113       };
114       axis@1 {
115               reg = <1>;
116               linux,code = <ABS_Y>;
117               abs-range = <0 3300>;
118               abs-fuzz = <4>;
119               abs-flat = <200>;
120       };
121     };