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 7title: STMicroelectonics Multi-Function eXpander (STMFX) bindings 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@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 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 85additionalProperties: false 86 87required: 88 - compatible 89 - reg 90 - interrupts 91 92examples: 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... 122