Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso...
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / mfd / st,stmfx.yaml
1 # 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
7 title: STMicroelectonics Multi-Function eXpander (STMFX) bindings
8
9 description: 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
14 maintainers:
15   - Amelie Delaunay <amelie.delaunay@st.com>
16
17 properties:
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
61         allOf:
62           - $ref: ../pinctrl/pinmux-node.yaml
63
64         properties:
65           pins: true
66           bias-disable: true
67           bias-pull-up: true
68           bias-pull-pin-default: true
69           bias-pull-down: true
70           drive-open-drain: true
71           drive-push-pull: true
72           output-high: true
73           output-low: true
74
75     additionalProperties: false
76
77     required:
78       - compatible
79       - "#gpio-cells"
80       - "#interrupt-cells"
81       - gpio-controller
82       - interrupt-controller
83       - gpio-ranges
84
85 additionalProperties: false
86
87 required:
88   - compatible
89   - reg
90   - interrupts
91
92 examples:
93   - |
94     #include <dt-bindings/interrupt-controller/arm-gic.h>
95     i2c {
96       #address-cells = <1>;
97       #size-cells = <0>;
98       stmfx@42 {
99         compatible = "st,stmfx-0300";
100         reg = <0x42>;
101         interrupts = <8 IRQ_TYPE_EDGE_RISING>;
102         interrupt-parent = <&gpioi>;
103         vdd-supply = <&v3v3>;
104
105         stmfx_pinctrl: pinctrl {
106           compatible = "st,stmfx-0300-pinctrl";
107           #gpio-cells = <2>;
108           #interrupt-cells = <2>;
109           gpio-controller;
110           interrupt-controller;
111           gpio-ranges = <&stmfx_pinctrl 0 0 24>;
112
113           joystick_pins: joystick-pins {
114             pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4";
115             drive-push-pull;
116             bias-pull-up;
117           };
118         };
119       };
120     };
121 ...