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