xref: /openbmc/linux/Documentation/devicetree/bindings/input/adc-joystick.yaml (revision db6da59cf27b5661ced03754ae0550f8914eda9e)
17956b0d4SArtur Rojek# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
27956b0d4SArtur Rojek# Copyright 2019-2020 Artur Rojek
37956b0d4SArtur Rojek%YAML 1.2
47956b0d4SArtur Rojek---
5*fcb52d7dSRob Herring$id: http://devicetree.org/schemas/input/adc-joystick.yaml#
6*fcb52d7dSRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml#
77956b0d4SArtur Rojek
87956b0d4SArtur Rojektitle: ADC attached joystick
97956b0d4SArtur Rojek
107956b0d4SArtur Rojekmaintainers:
117956b0d4SArtur Rojek  - Artur Rojek <contact@artur-rojek.eu>
127956b0d4SArtur Rojek
137956b0d4SArtur Rojekdescription: >
147956b0d4SArtur Rojek  Bindings for joystick devices connected to ADC controllers supporting
157956b0d4SArtur Rojek  the Industrial I/O subsystem.
167956b0d4SArtur Rojek
17c42a5ff5SChris MorganallOf:
18c42a5ff5SChris Morgan  - $ref: input.yaml#
19c42a5ff5SChris Morgan
207956b0d4SArtur Rojekproperties:
217956b0d4SArtur Rojek  compatible:
227956b0d4SArtur Rojek    const: adc-joystick
237956b0d4SArtur Rojek
247956b0d4SArtur Rojek  io-channels:
257956b0d4SArtur Rojek    minItems: 1
267956b0d4SArtur Rojek    maxItems: 1024
277956b0d4SArtur Rojek    description: >
287956b0d4SArtur Rojek      List of phandle and IIO specifier pairs.
297956b0d4SArtur Rojek      Each pair defines one ADC channel to which a joystick axis is connected.
308235ef15SMauro Carvalho Chehab      See
318235ef15SMauro Carvalho Chehab      https://github.com/devicetree-org/dt-schema/blob/master/schemas/iio/iio-consumer.yaml
328235ef15SMauro Carvalho Chehab      for details.
337956b0d4SArtur Rojek
34c42a5ff5SChris Morgan  poll-interval: true
35c42a5ff5SChris Morgan
367956b0d4SArtur Rojek  '#address-cells':
377956b0d4SArtur Rojek    const: 1
387956b0d4SArtur Rojek
397956b0d4SArtur Rojek  '#size-cells':
407956b0d4SArtur Rojek    const: 0
417956b0d4SArtur Rojek
427956b0d4SArtur Rojekrequired:
437956b0d4SArtur Rojek  - compatible
447956b0d4SArtur Rojek  - io-channels
457956b0d4SArtur Rojek  - '#address-cells'
467956b0d4SArtur Rojek  - '#size-cells'
477956b0d4SArtur Rojek
487956b0d4SArtur RojekadditionalProperties: false
497956b0d4SArtur Rojek
507956b0d4SArtur RojekpatternProperties:
517956b0d4SArtur Rojek  "^axis@[0-9a-f]+$":
527956b0d4SArtur Rojek    type: object
538ac14d2cSRob Herring    $ref: input.yaml#
547956b0d4SArtur Rojek    description: >
557956b0d4SArtur Rojek      Represents a joystick axis bound to the given ADC channel.
567956b0d4SArtur Rojek      For each entry in the io-channels list, one axis subnode with a matching
577956b0d4SArtur Rojek      reg property must be specified.
587956b0d4SArtur Rojek
597956b0d4SArtur Rojek    properties:
607956b0d4SArtur Rojek      reg:
617956b0d4SArtur Rojek        minimum: 0
627956b0d4SArtur Rojek        maximum: 1023
637956b0d4SArtur Rojek        description: Index of an io-channels list entry bound to this axis.
647956b0d4SArtur Rojek
657956b0d4SArtur Rojek      linux,code:
667956b0d4SArtur Rojek        description: EV_ABS specific event code generated by the axis.
677956b0d4SArtur Rojek
687956b0d4SArtur Rojek      abs-range:
69dca66935SRob Herring        $ref: /schemas/types.yaml#/definitions/uint32-array
70dca66935SRob Herring        items:
717956b0d4SArtur Rojek          - description: minimum value
727956b0d4SArtur Rojek          - description: maximum value
737956b0d4SArtur Rojek        description: >
747956b0d4SArtur Rojek          Minimum and maximum values produced by the axis.
757956b0d4SArtur Rojek          For an ABS_X axis this will be the left-most and right-most
767956b0d4SArtur Rojek          inclination of the joystick. If min > max, it is left to userspace to
777956b0d4SArtur Rojek          treat the axis as inverted.
787956b0d4SArtur Rojek          This property is interpreted as two signed 32 bit values.
797956b0d4SArtur Rojek
807956b0d4SArtur Rojek      abs-fuzz:
817956b0d4SArtur Rojek        $ref: /schemas/types.yaml#/definitions/uint32
827956b0d4SArtur Rojek        description: >
837956b0d4SArtur Rojek          Amount of noise in the input value.
847956b0d4SArtur Rojek          Omitting this property indicates the axis is precise.
857956b0d4SArtur Rojek
867956b0d4SArtur Rojek      abs-flat:
877956b0d4SArtur Rojek        $ref: /schemas/types.yaml#/definitions/uint32
887956b0d4SArtur Rojek        description: >
897956b0d4SArtur Rojek          Axial "deadzone", or area around the center position, where the axis
907956b0d4SArtur Rojek          is considered to be at rest.
917956b0d4SArtur Rojek          Omitting this property indicates the axis always returns to exactly
927956b0d4SArtur Rojek          the center position.
937956b0d4SArtur Rojek
947956b0d4SArtur Rojek    required:
957956b0d4SArtur Rojek      - reg
967956b0d4SArtur Rojek      - linux,code
977956b0d4SArtur Rojek      - abs-range
987956b0d4SArtur Rojek
997956b0d4SArtur Rojek    additionalProperties: false
1007956b0d4SArtur Rojek
1017956b0d4SArtur Rojekexamples:
1027956b0d4SArtur Rojek  - |
1037956b0d4SArtur Rojek    #include <dt-bindings/iio/adc/ingenic,adc.h>
1047956b0d4SArtur Rojek    #include <dt-bindings/input/input.h>
1057956b0d4SArtur Rojek
1067956b0d4SArtur Rojek    joystick: adc-joystick {
1077956b0d4SArtur Rojek      compatible = "adc-joystick";
1087956b0d4SArtur Rojek      io-channels = <&adc INGENIC_ADC_TOUCH_XP>,
1097956b0d4SArtur Rojek                    <&adc INGENIC_ADC_TOUCH_YP>;
1107956b0d4SArtur Rojek      #address-cells = <1>;
1117956b0d4SArtur Rojek      #size-cells = <0>;
1127956b0d4SArtur Rojek
1137956b0d4SArtur Rojek      axis@0 {
1147956b0d4SArtur Rojek              reg = <0>;
1157956b0d4SArtur Rojek              linux,code = <ABS_X>;
1167956b0d4SArtur Rojek              abs-range = <3300 0>;
1177956b0d4SArtur Rojek              abs-fuzz = <4>;
1187956b0d4SArtur Rojek              abs-flat = <200>;
1197956b0d4SArtur Rojek      };
1207956b0d4SArtur Rojek      axis@1 {
1217956b0d4SArtur Rojek              reg = <1>;
1227956b0d4SArtur Rojek              linux,code = <ABS_Y>;
1237956b0d4SArtur Rojek              abs-range = <0 3300>;
1247956b0d4SArtur Rojek              abs-fuzz = <4>;
1257956b0d4SArtur Rojek              abs-flat = <200>;
1267956b0d4SArtur Rojek      };
1277956b0d4SArtur Rojek    };
128