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