1e8da9ed0SBenjamin Gaignard# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2e8da9ed0SBenjamin Gaignard%YAML 1.2
3e8da9ed0SBenjamin Gaignard---
4e8da9ed0SBenjamin Gaignard$id: http://devicetree.org/schemas/mfd/st,stmfx.yaml#
5e8da9ed0SBenjamin Gaignard$schema: http://devicetree.org/meta-schemas/core.yaml#
6e8da9ed0SBenjamin Gaignard
7e8da9ed0SBenjamin Gaignardtitle: STMicroelectonics Multi-Function eXpander (STMFX) bindings
8e8da9ed0SBenjamin Gaignard
9e8da9ed0SBenjamin Gaignarddescription: ST Multi-Function eXpander (STMFX) is a slave controller using I2C for
10e8da9ed0SBenjamin Gaignard               communication with the main MCU. Its main features are GPIO expansion,
11e8da9ed0SBenjamin Gaignard               main MCU IDD measurement (IDD is the amount of current that flows
12e8da9ed0SBenjamin Gaignard               through VDD) and resistive touchscreen controller.
13e8da9ed0SBenjamin Gaignard
14e8da9ed0SBenjamin Gaignardmaintainers:
15e8da9ed0SBenjamin Gaignard  - Amelie Delaunay <amelie.delaunay@st.com>
16e8da9ed0SBenjamin Gaignard
17e8da9ed0SBenjamin Gaignardproperties:
18e8da9ed0SBenjamin Gaignard  compatible:
19e8da9ed0SBenjamin Gaignard    const: st,stmfx-0300
20e8da9ed0SBenjamin Gaignard
21e8da9ed0SBenjamin Gaignard  reg:
22e8da9ed0SBenjamin Gaignard    enum: [ 0x42, 0x43 ]
23e8da9ed0SBenjamin Gaignard
24e8da9ed0SBenjamin Gaignard  interrupts:
25e8da9ed0SBenjamin Gaignard    maxItems: 1
26e8da9ed0SBenjamin Gaignard
27e8da9ed0SBenjamin Gaignard  drive-open-drain: true
28e8da9ed0SBenjamin Gaignard
29e8da9ed0SBenjamin Gaignard  vdd-supply:
30e8da9ed0SBenjamin Gaignard    maxItems: 1
31e8da9ed0SBenjamin Gaignard
32e8da9ed0SBenjamin Gaignard  pinctrl:
33e8da9ed0SBenjamin Gaignard    type: object
34e8da9ed0SBenjamin Gaignard
35e8da9ed0SBenjamin Gaignard    properties:
36e8da9ed0SBenjamin Gaignard      compatible:
37e8da9ed0SBenjamin Gaignard        const: st,stmfx-0300-pinctrl
38e8da9ed0SBenjamin Gaignard
39e8da9ed0SBenjamin Gaignard      "#gpio-cells":
40e8da9ed0SBenjamin Gaignard        const: 2
41e8da9ed0SBenjamin Gaignard
42e8da9ed0SBenjamin Gaignard      "#interrupt-cells":
43e8da9ed0SBenjamin Gaignard        const: 2
44e8da9ed0SBenjamin Gaignard
45e8da9ed0SBenjamin Gaignard      gpio-controller: true
46e8da9ed0SBenjamin Gaignard
47e8da9ed0SBenjamin Gaignard      interrupt-controller: true
48e8da9ed0SBenjamin Gaignard
49e8da9ed0SBenjamin Gaignard      gpio-ranges:
50e8da9ed0SBenjamin Gaignard        description: if all STMFX pins[24:0] are available (no other STMFX function in use),
51e8da9ed0SBenjamin Gaignard                     you should use gpio-ranges = <&stmfx_pinctrl 0 0 24>;
52e8da9ed0SBenjamin Gaignard                     if agpio[3:0] are not available (STMFX Touchscreen function in use),
53e8da9ed0SBenjamin Gaignard                     you should use gpio-ranges = <&stmfx_pinctrl 0 0 16>, <&stmfx_pinctrl 20 20 4>;
54e8da9ed0SBenjamin Gaignard                     if agpio[7:4] are not available (STMFX IDD function in use),
55e8da9ed0SBenjamin Gaignard                     you should use gpio-ranges = <&stmfx_pinctrl 0 0 20>;
56e8da9ed0SBenjamin Gaignard        maxItems: 1
57e8da9ed0SBenjamin Gaignard
58e8da9ed0SBenjamin Gaignard    patternProperties:
59e8da9ed0SBenjamin Gaignard      "^[a-zA-Z]*-pins$":
60e8da9ed0SBenjamin Gaignard        type: object
61e8da9ed0SBenjamin Gaignard
62e8da9ed0SBenjamin Gaignard        allOf:
63e8da9ed0SBenjamin Gaignard          - $ref: ../pinctrl/pinmux-node.yaml
64e8da9ed0SBenjamin Gaignard
65e8da9ed0SBenjamin Gaignard        properties:
66e8da9ed0SBenjamin Gaignard          pins: true
67e8da9ed0SBenjamin Gaignard          bias-disable: true
68e8da9ed0SBenjamin Gaignard          bias-pull-up: true
69e8da9ed0SBenjamin Gaignard          bias-pull-pin-default: true
70e8da9ed0SBenjamin Gaignard          bias-pull-down: true
71e8da9ed0SBenjamin Gaignard          drive-open-drain: true
72e8da9ed0SBenjamin Gaignard          drive-push-pull: true
73e8da9ed0SBenjamin Gaignard          output-high: true
74e8da9ed0SBenjamin Gaignard          output-low: true
75e8da9ed0SBenjamin Gaignard
76e8da9ed0SBenjamin Gaignard      additionalProperties: false
77e8da9ed0SBenjamin Gaignard
78e8da9ed0SBenjamin Gaignard    additionalProperties: false
79e8da9ed0SBenjamin Gaignard
80e8da9ed0SBenjamin Gaignard    required:
81e8da9ed0SBenjamin Gaignard      - compatible
82e8da9ed0SBenjamin Gaignard      - "#gpio-cells"
83e8da9ed0SBenjamin Gaignard      - "#interrupt-cells"
84e8da9ed0SBenjamin Gaignard      - gpio-controller
85e8da9ed0SBenjamin Gaignard      - interrupt-controller
86e8da9ed0SBenjamin Gaignard      - gpio-ranges
87e8da9ed0SBenjamin Gaignard
88e8da9ed0SBenjamin GaignardadditionalProperties: false
89e8da9ed0SBenjamin Gaignard
90e8da9ed0SBenjamin Gaignardrequired:
91e8da9ed0SBenjamin Gaignard  - compatible
92e8da9ed0SBenjamin Gaignard  - reg
93e8da9ed0SBenjamin Gaignard  - interrupts
94e8da9ed0SBenjamin Gaignard
95e8da9ed0SBenjamin Gaignardexamples:
96e8da9ed0SBenjamin Gaignard  - |
97e8da9ed0SBenjamin Gaignard    #include <dt-bindings/interrupt-controller/arm-gic.h>
98e8da9ed0SBenjamin Gaignard    i2c@0 {
99e8da9ed0SBenjamin Gaignard      #address-cells = <1>;
100e8da9ed0SBenjamin Gaignard      #size-cells = <0>;
101e8da9ed0SBenjamin Gaignard      stmfx@42 {
102e8da9ed0SBenjamin Gaignard        compatible = "st,stmfx-0300";
103e8da9ed0SBenjamin Gaignard        reg = <0x42>;
104e8da9ed0SBenjamin Gaignard        interrupts = <8 IRQ_TYPE_EDGE_RISING>;
105e8da9ed0SBenjamin Gaignard        interrupt-parent = <&gpioi>;
106e8da9ed0SBenjamin Gaignard        vdd-supply = <&v3v3>;
107e8da9ed0SBenjamin Gaignard
108e8da9ed0SBenjamin Gaignard        stmfx_pinctrl: pinctrl {
109e8da9ed0SBenjamin Gaignard          compatible = "st,stmfx-0300-pinctrl";
110e8da9ed0SBenjamin Gaignard          #gpio-cells = <2>;
111e8da9ed0SBenjamin Gaignard          #interrupt-cells = <2>;
112e8da9ed0SBenjamin Gaignard          gpio-controller;
113e8da9ed0SBenjamin Gaignard          interrupt-controller;
114e8da9ed0SBenjamin Gaignard          gpio-ranges = <&stmfx_pinctrl 0 0 24>;
115e8da9ed0SBenjamin Gaignard
116e8da9ed0SBenjamin Gaignard          joystick_pins: joystick-pins {
117e8da9ed0SBenjamin Gaignard            pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4";
118e8da9ed0SBenjamin Gaignard            drive-push-pull;
119e8da9ed0SBenjamin Gaignard            bias-pull-up;
120e8da9ed0SBenjamin Gaignard          };
121e8da9ed0SBenjamin Gaignard        };
122e8da9ed0SBenjamin Gaignard      };
123e8da9ed0SBenjamin Gaignard    };
124e8da9ed0SBenjamin Gaignard...
125