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