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) 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... 123