xref: /linux/Documentation/devicetree/bindings/pinctrl/renesas,r9a09g077-pinctrl.yaml (revision ec7336475d52575381149aa67f9526c2f6d45e0d)
1*5293e8f2SLad Prabhakar# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*5293e8f2SLad Prabhakar%YAML 1.2
3*5293e8f2SLad Prabhakar---
4*5293e8f2SLad Prabhakar$id: http://devicetree.org/schemas/pinctrl/renesas,r9a09g077-pinctrl.yaml#
5*5293e8f2SLad Prabhakar$schema: http://devicetree.org/meta-schemas/core.yaml#
6*5293e8f2SLad Prabhakar
7*5293e8f2SLad Prabhakartitle: Renesas RZ/T2H and RZ/N2H Pin and GPIO controller
8*5293e8f2SLad Prabhakar
9*5293e8f2SLad Prabhakarmaintainers:
10*5293e8f2SLad Prabhakar  - Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
11*5293e8f2SLad Prabhakar
12*5293e8f2SLad Prabhakardescription:
13*5293e8f2SLad Prabhakar  The Renesas RZ/T2H and RZ/N2H SoCs feature a combined Pin and GPIO controller.
14*5293e8f2SLad Prabhakar  Pin multiplexing and GPIO configuration are performed on a per-pin basis.
15*5293e8f2SLad Prabhakar  Each port supports up to 8 pins, each configurable for either GPIO (port mode)
16*5293e8f2SLad Prabhakar  or alternate function mode. Each pin supports function mode values ranging from
17*5293e8f2SLad Prabhakar  0x0 to 0x2A, allowing selection from up to 43 different functions.
18*5293e8f2SLad Prabhakar
19*5293e8f2SLad Prabhakarproperties:
20*5293e8f2SLad Prabhakar  compatible:
21*5293e8f2SLad Prabhakar    enum:
22*5293e8f2SLad Prabhakar      - renesas,r9a09g077-pinctrl # RZ/T2H
23*5293e8f2SLad Prabhakar      - renesas,r9a09g087-pinctrl # RZ/N2H
24*5293e8f2SLad Prabhakar
25*5293e8f2SLad Prabhakar  reg:
26*5293e8f2SLad Prabhakar    minItems: 1
27*5293e8f2SLad Prabhakar    items:
28*5293e8f2SLad Prabhakar      - description: Non-safety I/O Port base
29*5293e8f2SLad Prabhakar      - description: Safety I/O Port safety region base
30*5293e8f2SLad Prabhakar      - description: Safety I/O Port Non-safety region base
31*5293e8f2SLad Prabhakar
32*5293e8f2SLad Prabhakar  reg-names:
33*5293e8f2SLad Prabhakar    minItems: 1
34*5293e8f2SLad Prabhakar    items:
35*5293e8f2SLad Prabhakar      - const: nsr
36*5293e8f2SLad Prabhakar      - const: srs
37*5293e8f2SLad Prabhakar      - const: srn
38*5293e8f2SLad Prabhakar
39*5293e8f2SLad Prabhakar  gpio-controller: true
40*5293e8f2SLad Prabhakar
41*5293e8f2SLad Prabhakar  '#gpio-cells':
42*5293e8f2SLad Prabhakar    const: 2
43*5293e8f2SLad Prabhakar    description:
44*5293e8f2SLad Prabhakar      The first cell contains the global GPIO port index, constructed using the
45*5293e8f2SLad Prabhakar      RZT2H_GPIO() helper macro from <dt-bindings/pinctrl/renesas,r9a09g077-pinctrl.h>
46*5293e8f2SLad Prabhakar      (e.g. "RZT2H_GPIO(3, 0)" for P03_0). The second cell represents the consumer
47*5293e8f2SLad Prabhakar      flag. Use the macros defined in include/dt-bindings/gpio/gpio.h.
48*5293e8f2SLad Prabhakar
49*5293e8f2SLad Prabhakar  gpio-ranges:
50*5293e8f2SLad Prabhakar    maxItems: 1
51*5293e8f2SLad Prabhakar
52*5293e8f2SLad Prabhakar  clocks:
53*5293e8f2SLad Prabhakar    maxItems: 1
54*5293e8f2SLad Prabhakar
55*5293e8f2SLad Prabhakar  power-domains:
56*5293e8f2SLad Prabhakar    maxItems: 1
57*5293e8f2SLad Prabhakar
58*5293e8f2SLad Prabhakardefinitions:
59*5293e8f2SLad Prabhakar  renesas-rzt2h-n2h-pins-node:
60*5293e8f2SLad Prabhakar    type: object
61*5293e8f2SLad Prabhakar    allOf:
62*5293e8f2SLad Prabhakar      - $ref: pincfg-node.yaml#
63*5293e8f2SLad Prabhakar      - $ref: pinmux-node.yaml#
64*5293e8f2SLad Prabhakar    properties:
65*5293e8f2SLad Prabhakar      pinmux:
66*5293e8f2SLad Prabhakar        description:
67*5293e8f2SLad Prabhakar          Values are constructed from I/O port number, pin number, and
68*5293e8f2SLad Prabhakar          alternate function configuration number using the RZT2H_PORT_PINMUX()
69*5293e8f2SLad Prabhakar          helper macro from <dt-bindings/pinctrl/renesas,r9a09g077-pinctrl.h>.
70*5293e8f2SLad Prabhakar      pins: true
71*5293e8f2SLad Prabhakar      phandle: true
72*5293e8f2SLad Prabhakar      input: true
73*5293e8f2SLad Prabhakar      input-enable: true
74*5293e8f2SLad Prabhakar      output-enable: true
75*5293e8f2SLad Prabhakar    oneOf:
76*5293e8f2SLad Prabhakar      - required: [pinmux]
77*5293e8f2SLad Prabhakar      - required: [pins]
78*5293e8f2SLad Prabhakar    additionalProperties: false
79*5293e8f2SLad Prabhakar
80*5293e8f2SLad PrabhakarpatternProperties:
81*5293e8f2SLad Prabhakar  # Grouping nodes: allow multiple "-pins" subnodes within a "-group"
82*5293e8f2SLad Prabhakar  '.*-group$':
83*5293e8f2SLad Prabhakar    type: object
84*5293e8f2SLad Prabhakar    description:
85*5293e8f2SLad Prabhakar      Pin controller client devices can organize pin configuration entries into
86*5293e8f2SLad Prabhakar      grouping nodes ending in "-group". These group nodes may contain multiple
87*5293e8f2SLad Prabhakar      child nodes each ending in "-pins" to configure distinct sets of pins.
88*5293e8f2SLad Prabhakar    additionalProperties: false
89*5293e8f2SLad Prabhakar    patternProperties:
90*5293e8f2SLad Prabhakar      '-pins$':
91*5293e8f2SLad Prabhakar        $ref: '#/definitions/renesas-rzt2h-n2h-pins-node'
92*5293e8f2SLad Prabhakar
93*5293e8f2SLad Prabhakar  # Standalone "-pins" nodes under client devices or groups
94*5293e8f2SLad Prabhakar  '-pins$':
95*5293e8f2SLad Prabhakar    $ref: '#/definitions/renesas-rzt2h-n2h-pins-node'
96*5293e8f2SLad Prabhakar
97*5293e8f2SLad Prabhakar  '-hog$':
98*5293e8f2SLad Prabhakar    type: object
99*5293e8f2SLad Prabhakar    description: GPIO hog node
100*5293e8f2SLad Prabhakar    properties:
101*5293e8f2SLad Prabhakar      gpio-hog: true
102*5293e8f2SLad Prabhakar      gpios: true
103*5293e8f2SLad Prabhakar      input: true
104*5293e8f2SLad Prabhakar      output-high: true
105*5293e8f2SLad Prabhakar      output-low: true
106*5293e8f2SLad Prabhakar      line-name: true
107*5293e8f2SLad Prabhakar    required:
108*5293e8f2SLad Prabhakar      - gpio-hog
109*5293e8f2SLad Prabhakar      - gpios
110*5293e8f2SLad Prabhakar    additionalProperties: false
111*5293e8f2SLad Prabhakar
112*5293e8f2SLad PrabhakarallOf:
113*5293e8f2SLad Prabhakar  - $ref: pinctrl.yaml#
114*5293e8f2SLad Prabhakar
115*5293e8f2SLad Prabhakarrequired:
116*5293e8f2SLad Prabhakar  - compatible
117*5293e8f2SLad Prabhakar  - reg
118*5293e8f2SLad Prabhakar  - reg-names
119*5293e8f2SLad Prabhakar  - gpio-controller
120*5293e8f2SLad Prabhakar  - '#gpio-cells'
121*5293e8f2SLad Prabhakar  - gpio-ranges
122*5293e8f2SLad Prabhakar  - clocks
123*5293e8f2SLad Prabhakar  - power-domains
124*5293e8f2SLad Prabhakar
125*5293e8f2SLad PrabhakarunevaluatedProperties: false
126*5293e8f2SLad Prabhakar
127*5293e8f2SLad Prabhakarexamples:
128*5293e8f2SLad Prabhakar  - |
129*5293e8f2SLad Prabhakar    #include <dt-bindings/clock/renesas,r9a09g077-cpg-mssr.h>
130*5293e8f2SLad Prabhakar    #include <dt-bindings/pinctrl/renesas,r9a09g077-pinctrl.h>
131*5293e8f2SLad Prabhakar
132*5293e8f2SLad Prabhakar    pinctrl@802c0000 {
133*5293e8f2SLad Prabhakar        compatible = "renesas,r9a09g077-pinctrl";
134*5293e8f2SLad Prabhakar        reg = <0x802c0000 0x2000>,
135*5293e8f2SLad Prabhakar              <0x812c0000 0x2000>,
136*5293e8f2SLad Prabhakar              <0x802b0000 0x2000>;
137*5293e8f2SLad Prabhakar        reg-names = "nsr", "srs", "srn";
138*5293e8f2SLad Prabhakar        clocks = <&cpg CPG_CORE R9A09G077_CLK_PCLKM>;
139*5293e8f2SLad Prabhakar        gpio-controller;
140*5293e8f2SLad Prabhakar        #gpio-cells = <2>;
141*5293e8f2SLad Prabhakar        gpio-ranges = <&pinctrl 0 0 288>;
142*5293e8f2SLad Prabhakar        power-domains = <&cpg>;
143*5293e8f2SLad Prabhakar
144*5293e8f2SLad Prabhakar        serial0-pins {
145*5293e8f2SLad Prabhakar            pinmux = <RZT2H_PORT_PINMUX(38, 0, 1)>, /* Tx */
146*5293e8f2SLad Prabhakar                     <RZT2H_PORT_PINMUX(38, 1, 1)>; /* Rx */
147*5293e8f2SLad Prabhakar        };
148*5293e8f2SLad Prabhakar
149*5293e8f2SLad Prabhakar        sd1-pwr-en-hog {
150*5293e8f2SLad Prabhakar            gpio-hog;
151*5293e8f2SLad Prabhakar            gpios = <RZT2H_GPIO(39, 2) 0>;
152*5293e8f2SLad Prabhakar            output-high;
153*5293e8f2SLad Prabhakar            line-name = "sd1_pwr_en";
154*5293e8f2SLad Prabhakar        };
155*5293e8f2SLad Prabhakar
156*5293e8f2SLad Prabhakar        i2c0-pins {
157*5293e8f2SLad Prabhakar            pins = "RIIC0_SDA", "RIIC0_SCL";
158*5293e8f2SLad Prabhakar            input-enable;
159*5293e8f2SLad Prabhakar        };
160*5293e8f2SLad Prabhakar
161*5293e8f2SLad Prabhakar        sd0-sd-group {
162*5293e8f2SLad Prabhakar            ctrl-pins {
163*5293e8f2SLad Prabhakar                pinmux = <RZT2H_PORT_PINMUX(12, 0, 0x29)>, /* SD0_CLK */
164*5293e8f2SLad Prabhakar                         <RZT2H_PORT_PINMUX(12, 1, 0x29)>; /* SD0_CMD */
165*5293e8f2SLad Prabhakar            };
166*5293e8f2SLad Prabhakar
167*5293e8f2SLad Prabhakar            data-pins {
168*5293e8f2SLad Prabhakar                pinmux = <RZT2H_PORT_PINMUX(12, 0, 0x29)>, /* SD0_CLK */
169*5293e8f2SLad Prabhakar                         <RZT2H_PORT_PINMUX(12, 1, 0x29)>; /* SD0_CMD */
170*5293e8f2SLad Prabhakar            };
171*5293e8f2SLad Prabhakar        };
172*5293e8f2SLad Prabhakar    };
173