17b9ec811SGeert Uytterhoeven# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
27b9ec811SGeert Uytterhoeven%YAML 1.2
37b9ec811SGeert Uytterhoeven---
47b9ec811SGeert Uytterhoeven$id: http://devicetree.org/schemas/pinctrl/renesas,pfc.yaml#
57b9ec811SGeert Uytterhoeven$schema: http://devicetree.org/meta-schemas/core.yaml#
67b9ec811SGeert Uytterhoeven
77b9ec811SGeert Uytterhoeventitle: Renesas Pin Function Controller (GPIO and Pin Mux/Config)
87b9ec811SGeert Uytterhoeven
97b9ec811SGeert Uytterhoevenmaintainers:
107b9ec811SGeert Uytterhoeven  - Geert Uytterhoeven <geert+renesas@glider.be>
117b9ec811SGeert Uytterhoeven
127b9ec811SGeert Uytterhoevendescription:
137b9ec811SGeert Uytterhoeven  The Pin Function Controller (PFC) is a Pin Mux/Config controller.
147b9ec811SGeert Uytterhoeven  On SH/R-Mobile SoCs it also acts as a GPIO controller.
157b9ec811SGeert Uytterhoeven
167b9ec811SGeert Uytterhoevenproperties:
177b9ec811SGeert Uytterhoeven  compatible:
187b9ec811SGeert Uytterhoeven    enum:
197b9ec811SGeert Uytterhoeven      - renesas,pfc-emev2       # EMMA Mobile EV2
207b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a73a4     # R-Mobile APE6
217b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7740     # R-Mobile A1
227b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7742     # RZ/G1H
237b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7743     # RZ/G1M
247b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7744     # RZ/G1N
257b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7745     # RZ/G1E
267b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a77470    # RZ/G1C
277b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a774a1    # RZ/G2M
287b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a774b1    # RZ/G2N
297b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a774c0    # RZ/G2E
307b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a774e1    # RZ/G2H
317b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7778     # R-Car M1
327b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7779     # R-Car H1
337b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7790     # R-Car H2
347b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7791     # R-Car M2-W
357b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7792     # R-Car V2H
367b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7793     # R-Car M2-N
377b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7794     # R-Car E2
387b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7795     # R-Car H3
397b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a7796     # R-Car M3-W
407b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a77961    # R-Car M3-W+
417b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a77965    # R-Car M3-N
427b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a77970    # R-Car V3M
437b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a77980    # R-Car V3H
447b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a77990    # R-Car E3
457b9ec811SGeert Uytterhoeven      - renesas,pfc-r8a77995    # R-Car D3
4688a1590bSUlrich Hecht      - renesas,pfc-r8a779a0    # R-Car V3U
47*64d45eddSLUU HOAI      - renesas,pfc-r8a779f0    # R-Car S4-8
487b9ec811SGeert Uytterhoeven      - renesas,pfc-sh73a0      # SH-Mobile AG5
497b9ec811SGeert Uytterhoeven
507b9ec811SGeert Uytterhoeven  reg:
517b9ec811SGeert Uytterhoeven    minItems: 1
5288a1590bSUlrich Hecht    maxItems: 10
537b9ec811SGeert Uytterhoeven
547b9ec811SGeert Uytterhoeven  gpio-controller: true
557b9ec811SGeert Uytterhoeven
567b9ec811SGeert Uytterhoeven  '#gpio-cells':
577b9ec811SGeert Uytterhoeven    const: 2
587b9ec811SGeert Uytterhoeven
597b9ec811SGeert Uytterhoeven  gpio-ranges:
607b9ec811SGeert Uytterhoeven    minItems: 1
617b9ec811SGeert Uytterhoeven    maxItems: 16
627b9ec811SGeert Uytterhoeven
637b9ec811SGeert Uytterhoeven  interrupts-extended:
647b9ec811SGeert Uytterhoeven    minItems: 32
657b9ec811SGeert Uytterhoeven    maxItems: 64
667b9ec811SGeert Uytterhoeven    description:
677b9ec811SGeert Uytterhoeven      Specify the interrupts associated with external IRQ pins on SoCs where
687b9ec811SGeert Uytterhoeven      the PFC acts as a GPIO controller.  It must contain one interrupt per
697b9ec811SGeert Uytterhoeven      external IRQ, sorted by external IRQ number.
707b9ec811SGeert Uytterhoeven
717b9ec811SGeert Uytterhoeven  power-domains:
727b9ec811SGeert Uytterhoeven    maxItems: 1
737b9ec811SGeert Uytterhoeven
74c09acbc4SRafał MiłeckiallOf:
75c09acbc4SRafał Miłecki  - $ref: "pinctrl.yaml#"
76c09acbc4SRafał Miłecki
777b9ec811SGeert Uytterhoevenrequired:
787b9ec811SGeert Uytterhoeven  - compatible
797b9ec811SGeert Uytterhoeven  - reg
807b9ec811SGeert Uytterhoeven
817b9ec811SGeert Uytterhoevenif:
827b9ec811SGeert Uytterhoeven  properties:
837b9ec811SGeert Uytterhoeven    compatible:
847b9ec811SGeert Uytterhoeven      enum:
857b9ec811SGeert Uytterhoeven        - renesas,pfc-r8a73a4
867b9ec811SGeert Uytterhoeven        - renesas,pfc-r8a7740
877b9ec811SGeert Uytterhoeven        - renesas,pfc-sh73a0
887b9ec811SGeert Uytterhoeventhen:
897b9ec811SGeert Uytterhoeven  required:
907b9ec811SGeert Uytterhoeven    - interrupts-extended
917b9ec811SGeert Uytterhoeven    - gpio-controller
927b9ec811SGeert Uytterhoeven    - '#gpio-cells'
937b9ec811SGeert Uytterhoeven    - gpio-ranges
947b9ec811SGeert Uytterhoeven    - power-domains
957b9ec811SGeert Uytterhoeven
967b9ec811SGeert UytterhoevenadditionalProperties:
977b9ec811SGeert Uytterhoeven  anyOf:
987b9ec811SGeert Uytterhoeven    - type: object
997b9ec811SGeert Uytterhoeven      allOf:
1007b9ec811SGeert Uytterhoeven        - $ref: pincfg-node.yaml#
1017b9ec811SGeert Uytterhoeven        - $ref: pinmux-node.yaml#
1027b9ec811SGeert Uytterhoeven
1037b9ec811SGeert Uytterhoeven      description:
1047b9ec811SGeert Uytterhoeven        Pin controller client devices use pin configuration subnodes (children
1057b9ec811SGeert Uytterhoeven        and grandchildren) for desired pin configuration.
1067b9ec811SGeert Uytterhoeven        Client device subnodes use below standard properties.
1077b9ec811SGeert Uytterhoeven
1087b9ec811SGeert Uytterhoeven      properties:
1097b9ec811SGeert Uytterhoeven        phandle: true
1107b9ec811SGeert Uytterhoeven        function: true
1117b9ec811SGeert Uytterhoeven        groups: true
1127b9ec811SGeert Uytterhoeven        pins: true
1137b9ec811SGeert Uytterhoeven        bias-disable: true
1147b9ec811SGeert Uytterhoeven        bias-pull-down: true
1157b9ec811SGeert Uytterhoeven        bias-pull-up: true
1167b9ec811SGeert Uytterhoeven        drive-strength:
1177b9ec811SGeert Uytterhoeven          enum: [ 3, 6, 9, 12, 15, 18, 21, 24 ] # Superset of supported values
1187b9ec811SGeert Uytterhoeven        power-source:
1197b9ec811SGeert Uytterhoeven          enum: [ 1800, 3300 ]
1207b9ec811SGeert Uytterhoeven        gpio-hog: true
1217b9ec811SGeert Uytterhoeven        gpios: true
1227b9ec811SGeert Uytterhoeven        input: true
1237b9ec811SGeert Uytterhoeven        output-high: true
1247b9ec811SGeert Uytterhoeven        output-low: true
1257b9ec811SGeert Uytterhoeven
1267b9ec811SGeert Uytterhoeven      additionalProperties: false
1277b9ec811SGeert Uytterhoeven
1287b9ec811SGeert Uytterhoeven    - type: object
1297b9ec811SGeert Uytterhoeven      properties:
1307b9ec811SGeert Uytterhoeven        phandle: true
1317b9ec811SGeert Uytterhoeven
1327b9ec811SGeert Uytterhoeven      additionalProperties:
1337b9ec811SGeert Uytterhoeven        $ref: "#/additionalProperties/anyOf/0"
1347b9ec811SGeert Uytterhoeven
1357b9ec811SGeert Uytterhoevenexamples:
1367b9ec811SGeert Uytterhoeven  - |
1377b9ec811SGeert Uytterhoeven    pfc: pinctrl@e6050000 {
1387b9ec811SGeert Uytterhoeven            compatible = "renesas,pfc-r8a7740";
1397b9ec811SGeert Uytterhoeven            reg = <0xe6050000 0x8000>,
1407b9ec811SGeert Uytterhoeven                  <0xe605800c 0x20>;
1417b9ec811SGeert Uytterhoeven            gpio-controller;
1427b9ec811SGeert Uytterhoeven            #gpio-cells = <2>;
1437b9ec811SGeert Uytterhoeven            gpio-ranges = <&pfc 0 0 212>;
1447b9ec811SGeert Uytterhoeven            interrupts-extended =
1457b9ec811SGeert Uytterhoeven                <&irqpin0 0 0>, <&irqpin0 1 0>, <&irqpin0 2 0>, <&irqpin0 3 0>,
1467b9ec811SGeert Uytterhoeven                <&irqpin0 4 0>, <&irqpin0 5 0>, <&irqpin0 6 0>, <&irqpin0 7 0>,
1477b9ec811SGeert Uytterhoeven                <&irqpin1 0 0>, <&irqpin1 1 0>, <&irqpin1 2 0>, <&irqpin1 3 0>,
1487b9ec811SGeert Uytterhoeven                <&irqpin1 4 0>, <&irqpin1 5 0>, <&irqpin1 6 0>, <&irqpin1 7 0>,
1497b9ec811SGeert Uytterhoeven                <&irqpin2 0 0>, <&irqpin2 1 0>, <&irqpin2 2 0>, <&irqpin2 3 0>,
1507b9ec811SGeert Uytterhoeven                <&irqpin2 4 0>, <&irqpin2 5 0>, <&irqpin2 6 0>, <&irqpin2 7 0>,
1517b9ec811SGeert Uytterhoeven                <&irqpin3 0 0>, <&irqpin3 1 0>, <&irqpin3 2 0>, <&irqpin3 3 0>,
1527b9ec811SGeert Uytterhoeven                <&irqpin3 4 0>, <&irqpin3 5 0>, <&irqpin3 6 0>, <&irqpin3 7 0>;
1537b9ec811SGeert Uytterhoeven            power-domains = <&pd_c5>;
1547b9ec811SGeert Uytterhoeven
155cdfd8606SKrzysztof Kozlowski            lcd0-mux-hog {
1567b9ec811SGeert Uytterhoeven                    /* DBGMD/LCDC0/FSIA MUX */
1577b9ec811SGeert Uytterhoeven                    gpio-hog;
1587b9ec811SGeert Uytterhoeven                    gpios = <176 0>;
1597b9ec811SGeert Uytterhoeven                    output-high;
1607b9ec811SGeert Uytterhoeven            };
1617b9ec811SGeert Uytterhoeven    };
1627b9ec811SGeert Uytterhoeven
1637b9ec811SGeert Uytterhoeven  - |
1647b9ec811SGeert Uytterhoeven    pinctrl@e6060000 {
1657b9ec811SGeert Uytterhoeven            compatible = "renesas,pfc-r8a7795";
1667b9ec811SGeert Uytterhoeven            reg = <0xe6060000 0x50c>;
1677b9ec811SGeert Uytterhoeven
1687b9ec811SGeert Uytterhoeven            avb_pins: avb {
1697b9ec811SGeert Uytterhoeven                    mux {
1707b9ec811SGeert Uytterhoeven                            groups = "avb_link", "avb_mdio", "avb_mii";
1717b9ec811SGeert Uytterhoeven                            function = "avb";
1727b9ec811SGeert Uytterhoeven                    };
1737b9ec811SGeert Uytterhoeven
1747b9ec811SGeert Uytterhoeven                    pins_mdio {
1757b9ec811SGeert Uytterhoeven                            groups = "avb_mdio";
1767b9ec811SGeert Uytterhoeven                            drive-strength = <24>;
1777b9ec811SGeert Uytterhoeven                    };
1787b9ec811SGeert Uytterhoeven
1797b9ec811SGeert Uytterhoeven                    pins_mii_tx {
1807b9ec811SGeert Uytterhoeven                            pins = "PIN_AVB_TX_CTL", "PIN_AVB_TXC",
1817b9ec811SGeert Uytterhoeven                                   "PIN_AVB_TD0", "PIN_AVB_TD1", "PIN_AVB_TD2",
1827b9ec811SGeert Uytterhoeven                                   "PIN_AVB_TD3";
1837b9ec811SGeert Uytterhoeven                            drive-strength = <12>;
1847b9ec811SGeert Uytterhoeven                    };
1857b9ec811SGeert Uytterhoeven            };
1867b9ec811SGeert Uytterhoeven
1877b9ec811SGeert Uytterhoeven            keys_pins: keys {
1887b9ec811SGeert Uytterhoeven                    pins = "GP_5_17", "GP_5_20", "GP_5_22", "GP_2_1";
1897b9ec811SGeert Uytterhoeven                    bias-pull-up;
1907b9ec811SGeert Uytterhoeven            };
1917b9ec811SGeert Uytterhoeven
1927b9ec811SGeert Uytterhoeven            sdhi0_pins: sd0 {
1937b9ec811SGeert Uytterhoeven                    groups = "sdhi0_data4", "sdhi0_ctrl";
1947b9ec811SGeert Uytterhoeven                    function = "sdhi0";
1957b9ec811SGeert Uytterhoeven                    power-source = <3300>;
1967b9ec811SGeert Uytterhoeven            };
1977b9ec811SGeert Uytterhoeven    };
198