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