# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/mfd/st,stmfx.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: STMicroelectonics Multi-Function eXpander (STMFX) description: ST Multi-Function eXpander (STMFX) is a slave controller using I2C for communication with the main MCU. Its main features are GPIO expansion, main MCU IDD measurement (IDD is the amount of current that flows through VDD) and resistive touchscreen controller. maintainers: - Amelie Delaunay <amelie.delaunay@foss.st.com> properties: compatible: const: st,stmfx-0300 reg: enum: [ 0x42, 0x43 ] interrupts: maxItems: 1 drive-open-drain: true vdd-supply: true pinctrl: type: object properties: compatible: const: st,stmfx-0300-pinctrl "#gpio-cells": const: 2 "#interrupt-cells": const: 2 gpio-controller: true interrupt-controller: true gpio-ranges: description: if all STMFX pins[24:0] are available (no other STMFX function in use), you should use gpio-ranges = <&stmfx_pinctrl 0 0 24>; if agpio[3:0] are not available (STMFX Touchscreen function in use), you should use gpio-ranges = <&stmfx_pinctrl 0 0 16>, <&stmfx_pinctrl 20 20 4>; if agpio[7:4] are not available (STMFX IDD function in use), you should use gpio-ranges = <&stmfx_pinctrl 0 0 20>; maxItems: 1 patternProperties: "^[a-zA-Z]*-pins$": type: object additionalProperties: false allOf: - $ref: ../pinctrl/pinmux-node.yaml properties: pins: true bias-disable: true bias-pull-up: true bias-pull-pin-default: true bias-pull-down: true drive-open-drain: true drive-push-pull: true output-high: true output-low: true additionalProperties: false required: - compatible - "#gpio-cells" - "#interrupt-cells" - gpio-controller - interrupt-controller - gpio-ranges additionalProperties: false required: - compatible - reg - interrupts examples: - | #include <dt-bindings/interrupt-controller/arm-gic.h> i2c { #address-cells = <1>; #size-cells = <0>; stmfx@42 { compatible = "st,stmfx-0300"; reg = <0x42>; interrupts = <8 IRQ_TYPE_EDGE_RISING>; interrupt-parent = <&gpioi>; vdd-supply = <&v3v3>; stmfx_pinctrl: pinctrl { compatible = "st,stmfx-0300-pinctrl"; #gpio-cells = <2>; #interrupt-cells = <2>; gpio-controller; interrupt-controller; gpio-ranges = <&stmfx_pinctrl 0 0 24>; joystick_pins: joystick-pins { pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4"; drive-push-pull; bias-pull-up; }; }; }; }; ...