18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/st,stmfx.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: STMicroelectonics Multi-Function eXpander (STMFX) bindings
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cidescription: ST Multi-Function eXpander (STMFX) is a slave controller using I2C for
108c2ecf20Sopenharmony_ci               communication with the main MCU. Its main features are GPIO expansion,
118c2ecf20Sopenharmony_ci               main MCU IDD measurement (IDD is the amount of current that flows
128c2ecf20Sopenharmony_ci               through VDD) and resistive touchscreen controller.
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_cimaintainers:
158c2ecf20Sopenharmony_ci  - Amelie Delaunay <amelie.delaunay@st.com>
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciproperties:
188c2ecf20Sopenharmony_ci  compatible:
198c2ecf20Sopenharmony_ci    const: st,stmfx-0300
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci  reg:
228c2ecf20Sopenharmony_ci    enum: [ 0x42, 0x43 ]
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci  interrupts:
258c2ecf20Sopenharmony_ci    maxItems: 1
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci  drive-open-drain: true
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci  vdd-supply:
308c2ecf20Sopenharmony_ci    maxItems: 1
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci  pinctrl:
338c2ecf20Sopenharmony_ci    type: object
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci    properties:
368c2ecf20Sopenharmony_ci      compatible:
378c2ecf20Sopenharmony_ci        const: st,stmfx-0300-pinctrl
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci      "#gpio-cells":
408c2ecf20Sopenharmony_ci        const: 2
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci      "#interrupt-cells":
438c2ecf20Sopenharmony_ci        const: 2
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci      gpio-controller: true
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci      interrupt-controller: true
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci      gpio-ranges:
508c2ecf20Sopenharmony_ci        description: if all STMFX pins[24:0] are available (no other STMFX function in use),
518c2ecf20Sopenharmony_ci                     you should use gpio-ranges = <&stmfx_pinctrl 0 0 24>;
528c2ecf20Sopenharmony_ci                     if agpio[3:0] are not available (STMFX Touchscreen function in use),
538c2ecf20Sopenharmony_ci                     you should use gpio-ranges = <&stmfx_pinctrl 0 0 16>, <&stmfx_pinctrl 20 20 4>;
548c2ecf20Sopenharmony_ci                     if agpio[7:4] are not available (STMFX IDD function in use),
558c2ecf20Sopenharmony_ci                     you should use gpio-ranges = <&stmfx_pinctrl 0 0 20>;
568c2ecf20Sopenharmony_ci        maxItems: 1
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci    patternProperties:
598c2ecf20Sopenharmony_ci      "^[a-zA-Z]*-pins$":
608c2ecf20Sopenharmony_ci        type: object
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci        allOf:
638c2ecf20Sopenharmony_ci          - $ref: ../pinctrl/pinmux-node.yaml
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci        properties:
668c2ecf20Sopenharmony_ci          pins: true
678c2ecf20Sopenharmony_ci          bias-disable: true
688c2ecf20Sopenharmony_ci          bias-pull-up: true
698c2ecf20Sopenharmony_ci          bias-pull-pin-default: true
708c2ecf20Sopenharmony_ci          bias-pull-down: true
718c2ecf20Sopenharmony_ci          drive-open-drain: true
728c2ecf20Sopenharmony_ci          drive-push-pull: true
738c2ecf20Sopenharmony_ci          output-high: true
748c2ecf20Sopenharmony_ci          output-low: true
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci    additionalProperties: false
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci    required:
798c2ecf20Sopenharmony_ci      - compatible
808c2ecf20Sopenharmony_ci      - "#gpio-cells"
818c2ecf20Sopenharmony_ci      - "#interrupt-cells"
828c2ecf20Sopenharmony_ci      - gpio-controller
838c2ecf20Sopenharmony_ci      - interrupt-controller
848c2ecf20Sopenharmony_ci      - gpio-ranges
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ciadditionalProperties: false
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_cirequired:
898c2ecf20Sopenharmony_ci  - compatible
908c2ecf20Sopenharmony_ci  - reg
918c2ecf20Sopenharmony_ci  - interrupts
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ciexamples:
948c2ecf20Sopenharmony_ci  - |
958c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
968c2ecf20Sopenharmony_ci    i2c {
978c2ecf20Sopenharmony_ci      #address-cells = <1>;
988c2ecf20Sopenharmony_ci      #size-cells = <0>;
998c2ecf20Sopenharmony_ci      stmfx@42 {
1008c2ecf20Sopenharmony_ci        compatible = "st,stmfx-0300";
1018c2ecf20Sopenharmony_ci        reg = <0x42>;
1028c2ecf20Sopenharmony_ci        interrupts = <8 IRQ_TYPE_EDGE_RISING>;
1038c2ecf20Sopenharmony_ci        interrupt-parent = <&gpioi>;
1048c2ecf20Sopenharmony_ci        vdd-supply = <&v3v3>;
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ci        stmfx_pinctrl: pinctrl {
1078c2ecf20Sopenharmony_ci          compatible = "st,stmfx-0300-pinctrl";
1088c2ecf20Sopenharmony_ci          #gpio-cells = <2>;
1098c2ecf20Sopenharmony_ci          #interrupt-cells = <2>;
1108c2ecf20Sopenharmony_ci          gpio-controller;
1118c2ecf20Sopenharmony_ci          interrupt-controller;
1128c2ecf20Sopenharmony_ci          gpio-ranges = <&stmfx_pinctrl 0 0 24>;
1138c2ecf20Sopenharmony_ci
1148c2ecf20Sopenharmony_ci          joystick_pins: joystick-pins {
1158c2ecf20Sopenharmony_ci            pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4";
1168c2ecf20Sopenharmony_ci            drive-push-pull;
1178c2ecf20Sopenharmony_ci            bias-pull-up;
1188c2ecf20Sopenharmony_ci          };
1198c2ecf20Sopenharmony_ci        };
1208c2ecf20Sopenharmony_ci      };
1218c2ecf20Sopenharmony_ci    };
1228c2ecf20Sopenharmony_ci...
123