linux/Documentation/devicetree/bindings/input/adc-joystick.yaml
<<
>>
Prefs
   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
   8title: ADC attached joystick
   9
  10maintainers:
  11  - Artur Rojek <contact@artur-rojek.eu>
  12
  13description: >
  14  Bindings for joystick devices connected to ADC controllers supporting
  15  the Industrial I/O subsystem.
  16
  17properties:
  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
  28      https://github.com/devicetree-org/dt-schema/blob/master/schemas/iio/iio-consumer.yaml
  29      for details.
  30
  31  '#address-cells':
  32    const: 1
  33
  34  '#size-cells':
  35    const: 0
  36
  37required:
  38  - compatible
  39  - io-channels
  40  - '#address-cells'
  41  - '#size-cells'
  42
  43additionalProperties: false
  44
  45patternProperties:
  46  "^axis@[0-9a-f]+$":
  47    type: object
  48    description: >
  49      Represents a joystick axis bound to the given ADC channel.
  50      For each entry in the io-channels list, one axis subnode with a matching
  51      reg property must be specified.
  52
  53    properties:
  54      reg:
  55        minimum: 0
  56        maximum: 1023
  57        description: Index of an io-channels list entry bound to this axis.
  58
  59      linux,code:
  60        $ref: /schemas/types.yaml#/definitions/uint32
  61        description: EV_ABS specific event code generated by the axis.
  62
  63      abs-range:
  64        allOf:
  65          - $ref: /schemas/types.yaml#/definitions/uint32-array
  66          - items:
  67              - description: minimum value
  68              - description: maximum value
  69        description: >
  70          Minimum and maximum values produced by the axis.
  71          For an ABS_X axis this will be the left-most and right-most
  72          inclination of the joystick. If min > max, it is left to userspace to
  73          treat the axis as inverted.
  74          This property is interpreted as two signed 32 bit values.
  75
  76      abs-fuzz:
  77        $ref: /schemas/types.yaml#/definitions/uint32
  78        description: >
  79          Amount of noise in the input value.
  80          Omitting this property indicates the axis is precise.
  81
  82      abs-flat:
  83        $ref: /schemas/types.yaml#/definitions/uint32
  84        description: >
  85          Axial "deadzone", or area around the center position, where the axis
  86          is considered to be at rest.
  87          Omitting this property indicates the axis always returns to exactly
  88          the center position.
  89
  90    required:
  91      - reg
  92      - linux,code
  93      - abs-range
  94
  95    additionalProperties: false
  96
  97examples:
  98  - |
  99    #include <dt-bindings/iio/adc/ingenic,adc.h>
 100    #include <dt-bindings/input/input.h>
 101
 102    joystick: adc-joystick {
 103      compatible = "adc-joystick";
 104      io-channels = <&adc INGENIC_ADC_TOUCH_XP>,
 105                    <&adc INGENIC_ADC_TOUCH_YP>;
 106      #address-cells = <1>;
 107      #size-cells = <0>;
 108
 109      axis@0 {
 110              reg = <0>;
 111              linux,code = <ABS_X>;
 112              abs-range = <3300 0>;
 113              abs-fuzz = <4>;
 114              abs-flat = <200>;
 115      };
 116      axis@1 {
 117              reg = <1>;
 118              linux,code = <ABS_Y>;
 119              abs-range = <0 3300>;
 120              abs-fuzz = <4>;
 121              abs-flat = <200>;
 122      };
 123    };
 124