xref: /openbmc/linux/Documentation/devicetree/bindings/pinctrl/renesas,rzg2l-pinctrl.yaml (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
17958f88aSLad Prabhakar# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
27958f88aSLad Prabhakar%YAML 1.2
37958f88aSLad Prabhakar---
47958f88aSLad Prabhakar$id: http://devicetree.org/schemas/pinctrl/renesas,rzg2l-pinctrl.yaml#
57958f88aSLad Prabhakar$schema: http://devicetree.org/meta-schemas/core.yaml#
67958f88aSLad Prabhakar
7c07b19deSBiju Dastitle: Renesas RZ/{G2L,V2L} combined Pin and GPIO controller
87958f88aSLad Prabhakar
97958f88aSLad Prabhakarmaintainers:
107958f88aSLad Prabhakar  - Geert Uytterhoeven <geert+renesas@glider.be>
117958f88aSLad Prabhakar  - Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
127958f88aSLad Prabhakar
137958f88aSLad Prabhakardescription:
1474273035SBiju Das  The Renesas SoCs of the RZ/{G2L,V2L} alike series feature a combined Pin and
1574273035SBiju Das  GPIO controller.
167958f88aSLad Prabhakar  Pin multiplexing and GPIO configuration is performed on a per-pin basis.
177958f88aSLad Prabhakar  Each port features up to 8 pins, each of them configurable for GPIO function
187958f88aSLad Prabhakar  (port mode) or in alternate function mode.
197958f88aSLad Prabhakar  Up to 8 different alternate function modes exist for each single pin.
207958f88aSLad Prabhakar
217958f88aSLad Prabhakarproperties:
227958f88aSLad Prabhakar  compatible:
23c07b19deSBiju Das    oneOf:
24c07b19deSBiju Das      - items:
25c07b19deSBiju Das          - enum:
2696355be8SLad Prabhakar              - renesas,r9a07g043-pinctrl # RZ/G2UL{Type-1,Type-2} and RZ/Five
277958f88aSLad Prabhakar              - renesas,r9a07g044-pinctrl # RZ/G2{L,LC}
287958f88aSLad Prabhakar
29c07b19deSBiju Das      - items:
30c07b19deSBiju Das          - enum:
31c07b19deSBiju Das              - renesas,r9a07g054-pinctrl     # RZ/V2L
32c07b19deSBiju Das          - const: renesas,r9a07g044-pinctrl  # RZ/G2{L,LC} fallback for RZ/V2L
33c07b19deSBiju Das
347958f88aSLad Prabhakar  reg:
357958f88aSLad Prabhakar    maxItems: 1
367958f88aSLad Prabhakar
377958f88aSLad Prabhakar  gpio-controller: true
387958f88aSLad Prabhakar
397958f88aSLad Prabhakar  '#gpio-cells':
407958f88aSLad Prabhakar    const: 2
417958f88aSLad Prabhakar    description:
427958f88aSLad Prabhakar      The first cell contains the global GPIO port index, constructed using the
437958f88aSLad Prabhakar      RZG2L_GPIO() helper macro in <dt-bindings/pinctrl/rzg2l-pinctrl.h> and the
447958f88aSLad Prabhakar      second cell represents consumer flag as mentioned in ../gpio/gpio.txt
457958f88aSLad Prabhakar      E.g. "RZG2L_GPIO(39, 1)" for P39_1.
467958f88aSLad Prabhakar
477958f88aSLad Prabhakar  gpio-ranges:
487958f88aSLad Prabhakar    maxItems: 1
497958f88aSLad Prabhakar
5035c37efdSLad Prabhakar  interrupt-controller: true
5135c37efdSLad Prabhakar
5235c37efdSLad Prabhakar  '#interrupt-cells':
5335c37efdSLad Prabhakar    const: 2
5435c37efdSLad Prabhakar    description:
5535c37efdSLad Prabhakar      The first cell contains the global GPIO port index, constructed using the
5635c37efdSLad Prabhakar      RZG2L_GPIO() helper macro in <dt-bindings/pinctrl/rzg2l-pinctrl.h> and the
5735c37efdSLad Prabhakar      second cell is used to specify the flag.
5835c37efdSLad Prabhakar      E.g. "interrupts = <RZG2L_GPIO(43, 0) IRQ_TYPE_EDGE_FALLING>;" if P43_0 is
5935c37efdSLad Prabhakar      being used as an interrupt.
6035c37efdSLad Prabhakar
617958f88aSLad Prabhakar  clocks:
627958f88aSLad Prabhakar    maxItems: 1
637958f88aSLad Prabhakar
647958f88aSLad Prabhakar  power-domains:
657958f88aSLad Prabhakar    maxItems: 1
667958f88aSLad Prabhakar
677958f88aSLad Prabhakar  resets:
687958f88aSLad Prabhakar    items:
697958f88aSLad Prabhakar      - description: GPIO_RSTN signal
707958f88aSLad Prabhakar      - description: GPIO_PORT_RESETN signal
717958f88aSLad Prabhakar      - description: GPIO_SPARE_RESETN signal
727958f88aSLad Prabhakar
737958f88aSLad PrabhakaradditionalProperties:
747958f88aSLad Prabhakar  anyOf:
757958f88aSLad Prabhakar    - type: object
767958f88aSLad Prabhakar      allOf:
777958f88aSLad Prabhakar        - $ref: pincfg-node.yaml#
787958f88aSLad Prabhakar        - $ref: pinmux-node.yaml#
797958f88aSLad Prabhakar
807958f88aSLad Prabhakar      description:
817958f88aSLad Prabhakar        Pin controller client devices use pin configuration subnodes (children
827958f88aSLad Prabhakar        and grandchildren) for desired pin configuration.
837958f88aSLad Prabhakar        Client device subnodes use below standard properties.
847958f88aSLad Prabhakar
857958f88aSLad Prabhakar      properties:
867958f88aSLad Prabhakar        pinmux:
877958f88aSLad Prabhakar          description:
887958f88aSLad Prabhakar            Values are constructed from GPIO port number, pin number, and
897958f88aSLad Prabhakar            alternate function configuration number using the RZG2L_PORT_PINMUX()
907958f88aSLad Prabhakar            helper macro in <dt-bindings/pinctrl/rzg2l-pinctrl.h>.
917958f88aSLad Prabhakar        pins: true
927958f88aSLad Prabhakar        drive-strength:
937958f88aSLad Prabhakar          enum: [ 2, 4, 8, 12 ]
94aa52b008SLad Prabhakar        output-impedance-ohms:
95aa52b008SLad Prabhakar          enum: [ 33, 50, 66, 100 ]
967958f88aSLad Prabhakar        power-source:
971dcb6b78SLad Prabhakar          description: I/O voltage in millivolt.
987958f88aSLad Prabhakar          enum: [ 1800, 2500, 3300 ]
997958f88aSLad Prabhakar        slew-rate: true
1007958f88aSLad Prabhakar        gpio-hog: true
1017958f88aSLad Prabhakar        gpios: true
1027958f88aSLad Prabhakar        input-enable: true
1037958f88aSLad Prabhakar        output-high: true
1047958f88aSLad Prabhakar        output-low: true
1057958f88aSLad Prabhakar        line-name: true
1067958f88aSLad Prabhakar
1077958f88aSLad Prabhakar    - type: object
1087958f88aSLad Prabhakar      additionalProperties:
1097958f88aSLad Prabhakar        $ref: "#/additionalProperties/anyOf/0"
1107958f88aSLad Prabhakar
111c09acbc4SRafał MiłeckiallOf:
112*49cd1dd1SRob Herring  - $ref: pinctrl.yaml#
113c09acbc4SRafał Miłecki
1147958f88aSLad Prabhakarrequired:
1157958f88aSLad Prabhakar  - compatible
1167958f88aSLad Prabhakar  - reg
1177958f88aSLad Prabhakar  - gpio-controller
1187958f88aSLad Prabhakar  - '#gpio-cells'
1197958f88aSLad Prabhakar  - gpio-ranges
12035c37efdSLad Prabhakar  - interrupt-controller
12135c37efdSLad Prabhakar  - '#interrupt-cells'
1227958f88aSLad Prabhakar  - clocks
1237958f88aSLad Prabhakar  - power-domains
1247958f88aSLad Prabhakar  - resets
1257958f88aSLad Prabhakar
1267958f88aSLad Prabhakarexamples:
1277958f88aSLad Prabhakar  - |
1287958f88aSLad Prabhakar    #include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
1297958f88aSLad Prabhakar    #include <dt-bindings/clock/r9a07g044-cpg.h>
1307958f88aSLad Prabhakar
1317958f88aSLad Prabhakar    pinctrl: pinctrl@11030000 {
1327958f88aSLad Prabhakar            compatible = "renesas,r9a07g044-pinctrl";
1337958f88aSLad Prabhakar            reg = <0x11030000 0x10000>;
1347958f88aSLad Prabhakar
1357958f88aSLad Prabhakar            gpio-controller;
1367958f88aSLad Prabhakar            #gpio-cells = <2>;
1377958f88aSLad Prabhakar            gpio-ranges = <&pinctrl 0 0 392>;
13835c37efdSLad Prabhakar            interrupt-controller;
13935c37efdSLad Prabhakar            #interrupt-cells = <2>;
1407958f88aSLad Prabhakar            clocks = <&cpg CPG_MOD R9A07G044_GPIO_HCLK>;
1417958f88aSLad Prabhakar            resets = <&cpg R9A07G044_GPIO_RSTN>,
1427958f88aSLad Prabhakar                     <&cpg R9A07G044_GPIO_PORT_RESETN>,
1437958f88aSLad Prabhakar                     <&cpg R9A07G044_GPIO_SPARE_RESETN>;
1447958f88aSLad Prabhakar            power-domains = <&cpg>;
1457958f88aSLad Prabhakar
1467958f88aSLad Prabhakar            scif0_pins: serial0 {
1477958f88aSLad Prabhakar                    pinmux = <RZG2L_PORT_PINMUX(38, 0, 1)>, /* Tx */
1487958f88aSLad Prabhakar                             <RZG2L_PORT_PINMUX(38, 1, 1)>; /* Rx */
1497958f88aSLad Prabhakar            };
1507958f88aSLad Prabhakar
1517958f88aSLad Prabhakar            i2c1_pins: i2c1 {
1527958f88aSLad Prabhakar                    pins = "RIIC1_SDA", "RIIC1_SCL";
1537958f88aSLad Prabhakar                    input-enable;
1547958f88aSLad Prabhakar            };
1557958f88aSLad Prabhakar
1567958f88aSLad Prabhakar            sd1-pwr-en-hog {
1577958f88aSLad Prabhakar                    gpio-hog;
1587958f88aSLad Prabhakar                    gpios = <RZG2L_GPIO(39, 2) 0>;
1597958f88aSLad Prabhakar                    output-high;
1607958f88aSLad Prabhakar                    line-name = "sd1_pwr_en";
1617958f88aSLad Prabhakar            };
1627958f88aSLad Prabhakar
1637958f88aSLad Prabhakar            sdhi1_pins: sd1 {
1647958f88aSLad Prabhakar                    sd1_mux {
1657958f88aSLad Prabhakar                            pinmux = <RZG2L_PORT_PINMUX(19, 0, 1)>, /* CD */
1667958f88aSLad Prabhakar                                     <RZG2L_PORT_PINMUX(19, 1, 1)>; /* WP */
1677958f88aSLad Prabhakar                            power-source  = <3300>;
1687958f88aSLad Prabhakar                    };
1697958f88aSLad Prabhakar
1707958f88aSLad Prabhakar                    sd1_data {
1717958f88aSLad Prabhakar                            pins = "SD1_DATA0", "SD1_DATA1", "SD1_DATA2", "SD1_DATA3";
1727958f88aSLad Prabhakar                            power-source  = <3300>;
1737958f88aSLad Prabhakar                    };
1747958f88aSLad Prabhakar
1757958f88aSLad Prabhakar                    sd1_ctrl {
1767958f88aSLad Prabhakar                            pins = "SD1_CLK", "SD1_CMD";
1777958f88aSLad Prabhakar                            power-source  = <3300>;
1787958f88aSLad Prabhakar                    };
1797958f88aSLad Prabhakar            };
1807958f88aSLad Prabhakar    };
181