xref: /freebsd/sys/contrib/device-tree/Bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml (revision cb7aa33ac6cd46a5434798e50363136e64f3ae98)
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