[RFC,1/2] dt-bindings: adc-joystick: add valid-range
Commit Message
The valid-range property aims to cover detachable/lock-able
joysticks where measured value goes outside valid-range.
Signed-off-by: Siarhei Volkau <lis8215@gmail.com>
---
.../bindings/input/adc-joystick.yaml | 62 +++++++++++++++++++
1 file changed, 62 insertions(+)
Comments
On Mon, 31 Oct 2022 22:01:58 +0300, Siarhei Volkau wrote:
> The valid-range property aims to cover detachable/lock-able
> joysticks where measured value goes outside valid-range.
>
> Signed-off-by: Siarhei Volkau <lis8215@gmail.com>
> ---
> .../bindings/input/adc-joystick.yaml | 62 +++++++++++++++++++
> 1 file changed, 62 insertions(+)
>
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:
Documentation/devicetree/bindings/input/adc-joystick.example.dts:82.28-104.11: ERROR (duplicate_label): /example-1/joystick: Duplicate label 'joystick' on /example-1/joystick and /example-0/adc-joystick
ERROR: Input tree has errors, aborting (use -f to force output)
make[1]: *** [scripts/Makefile.lib:406: Documentation/devicetree/bindings/input/adc-joystick.example.dtb] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:1492: dt_binding_check] Error 2
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/patch/
This check can fail if there are any dependencies. The base for a patch
series is generally the most recent rc1.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit.
On Mon, Oct 31, 2022 at 05:05:54PM -0500, Rob Herring wrote:
>
> On Mon, 31 Oct 2022 22:01:58 +0300, Siarhei Volkau wrote:
> > The valid-range property aims to cover detachable/lock-able
> > joysticks where measured value goes outside valid-range.
> >
> > Signed-off-by: Siarhei Volkau <lis8215@gmail.com>
> > ---
> > .../bindings/input/adc-joystick.yaml | 62 +++++++++++++++++++
> > 1 file changed, 62 insertions(+)
> >
>
> My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
> on your patch (DT_CHECKER_FLAGS is new in v5.13):
>
> yamllint warnings/errors:
>
> dtschema/dtc warnings/errors:
> Documentation/devicetree/bindings/input/adc-joystick.example.dts:82.28-104.11: ERROR (duplicate_label): /example-1/joystick: Duplicate label 'joystick' on /example-1/joystick and /example-0/adc-joystick
> ERROR: Input tree has errors, aborting (use -f to force output)
> make[1]: *** [scripts/Makefile.lib:406: Documentation/devicetree/bindings/input/adc-joystick.example.dtb] Error 2
> make[1]: *** Waiting for unfinished jobs....
> make: *** [Makefile:1492: dt_binding_check] Error 2
The examples aren't completely independent, so you can't use the same
labels.
Rob
вт, 1 нояб. 2022 г. в 04:08, Rob Herring <robh@kernel.org>:
>
> On Mon, Oct 31, 2022 at 05:05:54PM -0500, Rob Herring wrote:
> >
> > On Mon, 31 Oct 2022 22:01:58 +0300, Siarhei Volkau wrote:
> > > The valid-range property aims to cover detachable/lock-able
> > > joysticks where measured value goes outside valid-range.
> > >
> > > Signed-off-by: Siarhei Volkau <lis8215@gmail.com>
> > > ---
> > > .../bindings/input/adc-joystick.yaml | 62 +++++++++++++++++++
> > > 1 file changed, 62 insertions(+)
> > >
> >
> > My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
> > on your patch (DT_CHECKER_FLAGS is new in v5.13):
> >
> > yamllint warnings/errors:
> >
> > dtschema/dtc warnings/errors:
> > Documentation/devicetree/bindings/input/adc-joystick.example.dts:82.28-104.11: ERROR (duplicate_label): /example-1/joystick: Duplicate label 'joystick' on /example-1/joystick and /example-0/adc-joystick
> > ERROR: Input tree has errors, aborting (use -f to force output)
> > make[1]: *** [scripts/Makefile.lib:406: Documentation/devicetree/bindings/input/adc-joystick.example.dtb] Error 2
> > make[1]: *** Waiting for unfinished jobs....
> > make: *** [Makefile:1492: dt_binding_check] Error 2
>
> The examples aren't completely independent, so you can't use the same
> labels.
Good explanation, thank you.
@@ -91,6 +91,20 @@ patternProperties:
Omitting this property indicates the axis always returns to exactly
the center position.
+ valid-range:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ items:
+ - description: minimum value
+ - description: maximum value
+ description: >
+ Minimum and maximum values which are still valid for the axis.
+ If the value is outside the range an event won't emitted.
+ Shall fully cover the abs-range with some space added,
+ to take into account imprecise analog nature of the joystick.
+ When value goes out of valid range - corresponding axis is
+ centered. The center point calculated on abs-range basis.
+ This property is interpreted as two signed 32 bit values.
+
required:
- reg
- linux,code
@@ -125,3 +139,51 @@ examples:
abs-flat = <200>;
};
};
+ # A rather complex joystick hardware definition
+ # with two axes muxed into one ADC channel.
+ - |
+ #include <dt-bindings/iio/adc/ingenic,adc.h>
+ #include <dt-bindings/input/input.h>
+ #include <dt-bindings/gpio/gpio.h>
+
+ gpio_mux: mux-controller {
+ compatible = "gpio-mux";
+ #mux-control-cells = <0>;
+
+ mux-gpios = <&gpe 2 GPIO_ACTIVE_HIGH>;
+ };
+
+ adcmux: adc-mux {
+ compatible = "io-channel-mux";
+ io-channels = <&adc INGENIC_ADC_AUX>;
+ io-channel-names = "parent";
+ #io-channel-cells = <1>;
+
+ mux-controls = <&gpio_mux>;
+
+ channels = "joystick-axis-x", "joystick-axis-y";
+ };
+
+ joystick: joystick {
+ compatible = "adc-joystick";
+ io-channels = <&adcmux 0>, <&adcmux 1>;
+ io-channel-names = "joystick-axis-x", "joystick-axis-y";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ poll-interval = <16>;
+
+ axis@0 {
+ reg = <0>;
+ linux,code = <ABS_X>;
+ abs-range = <3400 670>;
+ valid-range = <300 3700>;
+ };
+
+ axis@1 {
+ reg = <1>;
+ linux,code = <ABS_Y>;
+ abs-range = <670 3400>;
+ valid-range = <300 3700>;
+ };
+ };