1*cb7aa33aSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2*cb7aa33aSEmmanuel Vadot%YAML 1.2 3*cb7aa33aSEmmanuel Vadot--- 4*cb7aa33aSEmmanuel Vadot$id: http://devicetree.org/schemas/pinctrl/starfive,jh7110-sys-pinctrl.yaml# 5*cb7aa33aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*cb7aa33aSEmmanuel Vadot 7*cb7aa33aSEmmanuel Vadottitle: StarFive JH7110 SYS Pin Controller 8*cb7aa33aSEmmanuel Vadot 9*cb7aa33aSEmmanuel Vadotdescription: | 10*cb7aa33aSEmmanuel Vadot Bindings for the JH7110 RISC-V SoC from StarFive Technology Ltd. 11*cb7aa33aSEmmanuel Vadot 12*cb7aa33aSEmmanuel Vadot Out of the SoC's many pins only the ones named PAD_GPIO0 to PAD_GPIO63 13*cb7aa33aSEmmanuel Vadot can be multiplexed and have configurable bias, drive strength, 14*cb7aa33aSEmmanuel Vadot schmitt trigger etc. 15*cb7aa33aSEmmanuel Vadot Some peripherals have their I/O go through the 64 "GPIOs". This also 16*cb7aa33aSEmmanuel Vadot includes a number of other UARTs, I2Cs, SPIs, PWMs etc. 17*cb7aa33aSEmmanuel Vadot All these peripherals are connected to all 64 GPIOs such that 18*cb7aa33aSEmmanuel Vadot any GPIO can be set up to be controlled by any of the peripherals. 19*cb7aa33aSEmmanuel Vadot 20*cb7aa33aSEmmanuel Vadotmaintainers: 21*cb7aa33aSEmmanuel Vadot - Jianlong Huang <jianlong.huang@starfivetech.com> 22*cb7aa33aSEmmanuel Vadot 23*cb7aa33aSEmmanuel Vadotproperties: 24*cb7aa33aSEmmanuel Vadot compatible: 25*cb7aa33aSEmmanuel Vadot const: starfive,jh7110-sys-pinctrl 26*cb7aa33aSEmmanuel Vadot 27*cb7aa33aSEmmanuel Vadot reg: 28*cb7aa33aSEmmanuel Vadot maxItems: 1 29*cb7aa33aSEmmanuel Vadot 30*cb7aa33aSEmmanuel Vadot clocks: 31*cb7aa33aSEmmanuel Vadot maxItems: 1 32*cb7aa33aSEmmanuel Vadot 33*cb7aa33aSEmmanuel Vadot resets: 34*cb7aa33aSEmmanuel Vadot maxItems: 1 35*cb7aa33aSEmmanuel Vadot 36*cb7aa33aSEmmanuel Vadot interrupts: 37*cb7aa33aSEmmanuel Vadot maxItems: 1 38*cb7aa33aSEmmanuel Vadot 39*cb7aa33aSEmmanuel Vadot interrupt-controller: true 40*cb7aa33aSEmmanuel Vadot 41*cb7aa33aSEmmanuel Vadot '#interrupt-cells': 42*cb7aa33aSEmmanuel Vadot const: 2 43*cb7aa33aSEmmanuel Vadot 44*cb7aa33aSEmmanuel Vadot gpio-controller: true 45*cb7aa33aSEmmanuel Vadot 46*cb7aa33aSEmmanuel Vadot '#gpio-cells': 47*cb7aa33aSEmmanuel Vadot const: 2 48*cb7aa33aSEmmanuel Vadot 49*cb7aa33aSEmmanuel VadotpatternProperties: 50*cb7aa33aSEmmanuel Vadot '-[0-9]+$': 51*cb7aa33aSEmmanuel Vadot type: object 52*cb7aa33aSEmmanuel Vadot additionalProperties: false 53*cb7aa33aSEmmanuel Vadot patternProperties: 54*cb7aa33aSEmmanuel Vadot '-pins$': 55*cb7aa33aSEmmanuel Vadot type: object 56*cb7aa33aSEmmanuel Vadot description: | 57*cb7aa33aSEmmanuel Vadot A pinctrl node should contain at least one subnode representing the 58*cb7aa33aSEmmanuel Vadot pinctrl groups available on the machine. Each subnode will list the 59*cb7aa33aSEmmanuel Vadot pins it needs, and how they should be configured, with regard to 60*cb7aa33aSEmmanuel Vadot muxer configuration, bias, input enable/disable, input schmitt 61*cb7aa33aSEmmanuel Vadot trigger enable/disable, slew-rate and drive strength. 62*cb7aa33aSEmmanuel Vadot allOf: 63*cb7aa33aSEmmanuel Vadot - $ref: /schemas/pinctrl/pincfg-node.yaml 64*cb7aa33aSEmmanuel Vadot - $ref: /schemas/pinctrl/pinmux-node.yaml 65*cb7aa33aSEmmanuel Vadot additionalProperties: false 66*cb7aa33aSEmmanuel Vadot 67*cb7aa33aSEmmanuel Vadot properties: 68*cb7aa33aSEmmanuel Vadot pinmux: 69*cb7aa33aSEmmanuel Vadot description: | 70*cb7aa33aSEmmanuel Vadot The list of GPIOs and their mux settings that properties in the 71*cb7aa33aSEmmanuel Vadot node apply to. This should be set using the GPIOMUX or PINMUX 72*cb7aa33aSEmmanuel Vadot macros. 73*cb7aa33aSEmmanuel Vadot 74*cb7aa33aSEmmanuel Vadot bias-disable: true 75*cb7aa33aSEmmanuel Vadot 76*cb7aa33aSEmmanuel Vadot bias-pull-up: 77*cb7aa33aSEmmanuel Vadot type: boolean 78*cb7aa33aSEmmanuel Vadot 79*cb7aa33aSEmmanuel Vadot bias-pull-down: 80*cb7aa33aSEmmanuel Vadot type: boolean 81*cb7aa33aSEmmanuel Vadot 82*cb7aa33aSEmmanuel Vadot drive-strength: 83*cb7aa33aSEmmanuel Vadot enum: [ 2, 4, 8, 12 ] 84*cb7aa33aSEmmanuel Vadot 85*cb7aa33aSEmmanuel Vadot input-enable: true 86*cb7aa33aSEmmanuel Vadot 87*cb7aa33aSEmmanuel Vadot input-disable: true 88*cb7aa33aSEmmanuel Vadot 89*cb7aa33aSEmmanuel Vadot input-schmitt-enable: true 90*cb7aa33aSEmmanuel Vadot 91*cb7aa33aSEmmanuel Vadot input-schmitt-disable: true 92*cb7aa33aSEmmanuel Vadot 93*cb7aa33aSEmmanuel Vadot slew-rate: 94*cb7aa33aSEmmanuel Vadot maximum: 1 95*cb7aa33aSEmmanuel Vadot 96*cb7aa33aSEmmanuel Vadotrequired: 97*cb7aa33aSEmmanuel Vadot - compatible 98*cb7aa33aSEmmanuel Vadot - reg 99*cb7aa33aSEmmanuel Vadot - clocks 100*cb7aa33aSEmmanuel Vadot - interrupts 101*cb7aa33aSEmmanuel Vadot - interrupt-controller 102*cb7aa33aSEmmanuel Vadot - '#interrupt-cells' 103*cb7aa33aSEmmanuel Vadot - gpio-controller 104*cb7aa33aSEmmanuel Vadot - '#gpio-cells' 105*cb7aa33aSEmmanuel Vadot 106*cb7aa33aSEmmanuel VadotadditionalProperties: false 107*cb7aa33aSEmmanuel Vadot 108*cb7aa33aSEmmanuel Vadotexamples: 109*cb7aa33aSEmmanuel Vadot - | 110*cb7aa33aSEmmanuel Vadot pinctrl@13040000 { 111*cb7aa33aSEmmanuel Vadot compatible = "starfive,jh7110-sys-pinctrl"; 112*cb7aa33aSEmmanuel Vadot reg = <0x13040000 0x10000>; 113*cb7aa33aSEmmanuel Vadot clocks = <&syscrg 112>; 114*cb7aa33aSEmmanuel Vadot resets = <&syscrg 2>; 115*cb7aa33aSEmmanuel Vadot interrupts = <86>; 116*cb7aa33aSEmmanuel Vadot interrupt-controller; 117*cb7aa33aSEmmanuel Vadot #interrupt-cells = <2>; 118*cb7aa33aSEmmanuel Vadot gpio-controller; 119*cb7aa33aSEmmanuel Vadot #gpio-cells = <2>; 120*cb7aa33aSEmmanuel Vadot 121*cb7aa33aSEmmanuel Vadot uart0-0 { 122*cb7aa33aSEmmanuel Vadot tx-pins { 123*cb7aa33aSEmmanuel Vadot pinmux = <0xff140005>; 124*cb7aa33aSEmmanuel Vadot bias-disable; 125*cb7aa33aSEmmanuel Vadot drive-strength = <12>; 126*cb7aa33aSEmmanuel Vadot input-disable; 127*cb7aa33aSEmmanuel Vadot input-schmitt-disable; 128*cb7aa33aSEmmanuel Vadot slew-rate = <0>; 129*cb7aa33aSEmmanuel Vadot }; 130*cb7aa33aSEmmanuel Vadot 131*cb7aa33aSEmmanuel Vadot rx-pins { 132*cb7aa33aSEmmanuel Vadot pinmux = <0x0E000406>; 133*cb7aa33aSEmmanuel Vadot bias-pull-up; 134*cb7aa33aSEmmanuel Vadot drive-strength = <2>; 135*cb7aa33aSEmmanuel Vadot input-enable; 136*cb7aa33aSEmmanuel Vadot input-schmitt-enable; 137*cb7aa33aSEmmanuel Vadot slew-rate = <0>; 138*cb7aa33aSEmmanuel Vadot }; 139*cb7aa33aSEmmanuel Vadot }; 140*cb7aa33aSEmmanuel Vadot }; 141*cb7aa33aSEmmanuel Vadot 142*cb7aa33aSEmmanuel Vadot... 143