# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/pinctrl/renesas,r9a09g077-pinctrl.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Renesas RZ/T2H and RZ/N2H Pin and GPIO controller maintainers: - Lad Prabhakar description: The Renesas RZ/T2H and RZ/N2H SoCs feature a combined Pin and GPIO controller. Pin multiplexing and GPIO configuration are performed on a per-pin basis. Each port supports up to 8 pins, each configurable for either GPIO (port mode) or alternate function mode. Each pin supports function mode values ranging from 0x0 to 0x2A, allowing selection from up to 43 different functions. properties: compatible: enum: - renesas,r9a09g077-pinctrl # RZ/T2H - renesas,r9a09g087-pinctrl # RZ/N2H reg: minItems: 1 items: - description: Non-safety I/O Port base - description: Safety I/O Port safety region base - description: Safety I/O Port Non-safety region base reg-names: minItems: 1 items: - const: nsr - const: srs - const: srn gpio-controller: true '#gpio-cells': const: 2 description: The first cell contains the global GPIO port index, constructed using the RZT2H_GPIO() helper macro from (e.g. "RZT2H_GPIO(3, 0)" for P03_0). The second cell represents the consumer flag. Use the macros defined in include/dt-bindings/gpio/gpio.h. gpio-ranges: maxItems: 1 clocks: maxItems: 1 power-domains: maxItems: 1 definitions: renesas-rzt2h-n2h-pins-node: type: object allOf: - $ref: pincfg-node.yaml# - $ref: pinmux-node.yaml# properties: pinmux: description: Values are constructed from I/O port number, pin number, and alternate function configuration number using the RZT2H_PORT_PINMUX() helper macro from . pins: true phandle: true input: true input-enable: true output-enable: true oneOf: - required: [pinmux] - required: [pins] additionalProperties: false patternProperties: # Grouping nodes: allow multiple "-pins" subnodes within a "-group" '.*-group$': type: object description: Pin controller client devices can organize pin configuration entries into grouping nodes ending in "-group". These group nodes may contain multiple child nodes each ending in "-pins" to configure distinct sets of pins. additionalProperties: false patternProperties: '-pins$': $ref: '#/definitions/renesas-rzt2h-n2h-pins-node' # Standalone "-pins" nodes under client devices or groups '-pins$': $ref: '#/definitions/renesas-rzt2h-n2h-pins-node' '-hog$': type: object description: GPIO hog node properties: gpio-hog: true gpios: true input: true output-high: true output-low: true line-name: true required: - gpio-hog - gpios additionalProperties: false allOf: - $ref: pinctrl.yaml# required: - compatible - reg - reg-names - gpio-controller - '#gpio-cells' - gpio-ranges - clocks - power-domains unevaluatedProperties: false examples: - | #include #include pinctrl@802c0000 { compatible = "renesas,r9a09g077-pinctrl"; reg = <0x802c0000 0x2000>, <0x812c0000 0x2000>, <0x802b0000 0x2000>; reg-names = "nsr", "srs", "srn"; clocks = <&cpg CPG_CORE R9A09G077_CLK_PCLKM>; gpio-controller; #gpio-cells = <2>; gpio-ranges = <&pinctrl 0 0 288>; power-domains = <&cpg>; serial0-pins { pinmux = , /* Tx */ ; /* Rx */ }; sd1-pwr-en-hog { gpio-hog; gpios = ; output-high; line-name = "sd1_pwr_en"; }; i2c0-pins { pins = "RIIC0_SDA", "RIIC0_SCL"; input-enable; }; sd0-sd-group { ctrl-pins { pinmux = , /* SD0_CLK */ ; /* SD0_CMD */ }; data-pins { pinmux = , /* SD0_CLK */ ; /* SD0_CMD */ }; }; };