xref: /freebsd/sys/contrib/device-tree/Bindings/gpu/nvidia,gk20a.yaml (revision 1537cf73828a2db2a67622ccfff77383c7db6f07)
1*1537cf73SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*1537cf73SEmmanuel Vadot%YAML 1.2
3*1537cf73SEmmanuel Vadot---
4*1537cf73SEmmanuel Vadot$id: http://devicetree.org/schemas/gpu/nvidia,gk20a.yaml#
5*1537cf73SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*1537cf73SEmmanuel Vadot
7*1537cf73SEmmanuel Vadottitle: NVIDIA Tegra Graphics Processing Units
8*1537cf73SEmmanuel Vadot
9*1537cf73SEmmanuel Vadotmaintainers:
10*1537cf73SEmmanuel Vadot  - Alexandre Courbot <acourbot@nvidia.com>
11*1537cf73SEmmanuel Vadot  - Jon Hunter <jonathanh@nvidia.com>
12*1537cf73SEmmanuel Vadot  - Thierry Reding <treding@nvidia.com>
13*1537cf73SEmmanuel Vadot
14*1537cf73SEmmanuel Vadotproperties:
15*1537cf73SEmmanuel Vadot  compatible:
16*1537cf73SEmmanuel Vadot    enum:
17*1537cf73SEmmanuel Vadot      - nvidia,gk20a
18*1537cf73SEmmanuel Vadot      - nvidia,gm20b
19*1537cf73SEmmanuel Vadot      - nvidia,gp10b
20*1537cf73SEmmanuel Vadot      - nvidia,gv11b
21*1537cf73SEmmanuel Vadot
22*1537cf73SEmmanuel Vadot  reg:
23*1537cf73SEmmanuel Vadot    items:
24*1537cf73SEmmanuel Vadot      - description: Bar0 register window
25*1537cf73SEmmanuel Vadot      - description: Bar1 register window
26*1537cf73SEmmanuel Vadot
27*1537cf73SEmmanuel Vadot  interrupts:
28*1537cf73SEmmanuel Vadot    items:
29*1537cf73SEmmanuel Vadot      - description: Stall interrupt
30*1537cf73SEmmanuel Vadot      - description: Nonstall interrupt
31*1537cf73SEmmanuel Vadot
32*1537cf73SEmmanuel Vadot  interrupt-names:
33*1537cf73SEmmanuel Vadot    items:
34*1537cf73SEmmanuel Vadot      - const: stall
35*1537cf73SEmmanuel Vadot      - const: nonstall
36*1537cf73SEmmanuel Vadot
37*1537cf73SEmmanuel Vadot  vdd-supply:
38*1537cf73SEmmanuel Vadot    description:
39*1537cf73SEmmanuel Vadot      Regulator for GPU supply voltage
40*1537cf73SEmmanuel Vadot
41*1537cf73SEmmanuel Vadot  clocks:
42*1537cf73SEmmanuel Vadot    minItems: 2
43*1537cf73SEmmanuel Vadot    items:
44*1537cf73SEmmanuel Vadot      - description: GPU clock
45*1537cf73SEmmanuel Vadot      - description: Power clock
46*1537cf73SEmmanuel Vadot      - description: Reference or fuse clock
47*1537cf73SEmmanuel Vadot
48*1537cf73SEmmanuel Vadot  clock-names:
49*1537cf73SEmmanuel Vadot    minItems: 2
50*1537cf73SEmmanuel Vadot    items:
51*1537cf73SEmmanuel Vadot      - const: gpu
52*1537cf73SEmmanuel Vadot      - const: pwr
53*1537cf73SEmmanuel Vadot      - enum: [ ref, fuse ]
54*1537cf73SEmmanuel Vadot
55*1537cf73SEmmanuel Vadot  resets:
56*1537cf73SEmmanuel Vadot    maxItems: 1
57*1537cf73SEmmanuel Vadot
58*1537cf73SEmmanuel Vadot  reset-names:
59*1537cf73SEmmanuel Vadot    items:
60*1537cf73SEmmanuel Vadot      - const: gpu
61*1537cf73SEmmanuel Vadot
62*1537cf73SEmmanuel Vadot  power-domains:
63*1537cf73SEmmanuel Vadot    maxItems: 1
64*1537cf73SEmmanuel Vadot
65*1537cf73SEmmanuel Vadot  interconnects:
66*1537cf73SEmmanuel Vadot    minItems: 4
67*1537cf73SEmmanuel Vadot    maxItems: 12
68*1537cf73SEmmanuel Vadot
69*1537cf73SEmmanuel Vadot  interconnect-names:
70*1537cf73SEmmanuel Vadot    minItems: 4
71*1537cf73SEmmanuel Vadot    maxItems: 12
72*1537cf73SEmmanuel Vadot
73*1537cf73SEmmanuel Vadot  iommus:
74*1537cf73SEmmanuel Vadot    maxItems: 1
75*1537cf73SEmmanuel Vadot
76*1537cf73SEmmanuel Vadot  dma-coherent: true
77*1537cf73SEmmanuel Vadot
78*1537cf73SEmmanuel Vadotrequired:
79*1537cf73SEmmanuel Vadot  - compatible
80*1537cf73SEmmanuel Vadot  - reg
81*1537cf73SEmmanuel Vadot  - interrupts
82*1537cf73SEmmanuel Vadot  - interrupt-names
83*1537cf73SEmmanuel Vadot  - clocks
84*1537cf73SEmmanuel Vadot  - clock-names
85*1537cf73SEmmanuel Vadot  - resets
86*1537cf73SEmmanuel Vadot  - reset-names
87*1537cf73SEmmanuel Vadot
88*1537cf73SEmmanuel VadotallOf:
89*1537cf73SEmmanuel Vadot  - if:
90*1537cf73SEmmanuel Vadot      properties:
91*1537cf73SEmmanuel Vadot        compatible:
92*1537cf73SEmmanuel Vadot          contains:
93*1537cf73SEmmanuel Vadot            enum:
94*1537cf73SEmmanuel Vadot              - nvidia,gp10b
95*1537cf73SEmmanuel Vadot              - nvidia,gv11b
96*1537cf73SEmmanuel Vadot    then:
97*1537cf73SEmmanuel Vadot      required:
98*1537cf73SEmmanuel Vadot        - power-domains
99*1537cf73SEmmanuel Vadot    else:
100*1537cf73SEmmanuel Vadot      properties:
101*1537cf73SEmmanuel Vadot        interconnects: false
102*1537cf73SEmmanuel Vadot        interconnect-names: false
103*1537cf73SEmmanuel Vadot
104*1537cf73SEmmanuel Vadot      required:
105*1537cf73SEmmanuel Vadot        - vdd-supply
106*1537cf73SEmmanuel Vadot  - if:
107*1537cf73SEmmanuel Vadot      properties:
108*1537cf73SEmmanuel Vadot        compatible:
109*1537cf73SEmmanuel Vadot          contains:
110*1537cf73SEmmanuel Vadot            enum:
111*1537cf73SEmmanuel Vadot              - nvidia,gp10b
112*1537cf73SEmmanuel Vadot    then:
113*1537cf73SEmmanuel Vadot      properties:
114*1537cf73SEmmanuel Vadot        interconnects:
115*1537cf73SEmmanuel Vadot          maxItems: 4
116*1537cf73SEmmanuel Vadot
117*1537cf73SEmmanuel Vadot        interconnect-names:
118*1537cf73SEmmanuel Vadot          items:
119*1537cf73SEmmanuel Vadot            - const: dma-mem
120*1537cf73SEmmanuel Vadot            - const: write-0
121*1537cf73SEmmanuel Vadot            - const: read-1
122*1537cf73SEmmanuel Vadot            - const: write-1
123*1537cf73SEmmanuel Vadot  - if:
124*1537cf73SEmmanuel Vadot      properties:
125*1537cf73SEmmanuel Vadot        compatible:
126*1537cf73SEmmanuel Vadot          contains:
127*1537cf73SEmmanuel Vadot            enum:
128*1537cf73SEmmanuel Vadot              - nvidia,gv11b
129*1537cf73SEmmanuel Vadot    then:
130*1537cf73SEmmanuel Vadot      properties:
131*1537cf73SEmmanuel Vadot        interconnects:
132*1537cf73SEmmanuel Vadot          minItems: 12
133*1537cf73SEmmanuel Vadot
134*1537cf73SEmmanuel Vadot        interconnect-names:
135*1537cf73SEmmanuel Vadot          items:
136*1537cf73SEmmanuel Vadot            - const: dma-mem
137*1537cf73SEmmanuel Vadot            - const: read-0-hp
138*1537cf73SEmmanuel Vadot            - const: write-0
139*1537cf73SEmmanuel Vadot            - const: read-1
140*1537cf73SEmmanuel Vadot            - const: read-1-hp
141*1537cf73SEmmanuel Vadot            - const: write-1
142*1537cf73SEmmanuel Vadot            - const: read-2
143*1537cf73SEmmanuel Vadot            - const: read-2-hp
144*1537cf73SEmmanuel Vadot            - const: write-2
145*1537cf73SEmmanuel Vadot            - const: read-3
146*1537cf73SEmmanuel Vadot            - const: read-3-hp
147*1537cf73SEmmanuel Vadot            - const: write-3
148*1537cf73SEmmanuel Vadot
149*1537cf73SEmmanuel VadotadditionalProperties: false
150*1537cf73SEmmanuel Vadot
151*1537cf73SEmmanuel Vadotexamples:
152*1537cf73SEmmanuel Vadot  - |
153*1537cf73SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
154*1537cf73SEmmanuel Vadot    #include <dt-bindings/clock/tegra124-car-common.h>
155*1537cf73SEmmanuel Vadot    #include <dt-bindings/memory/tegra124-mc.h>
156*1537cf73SEmmanuel Vadot
157*1537cf73SEmmanuel Vadot    gpu@57000000 {
158*1537cf73SEmmanuel Vadot        compatible = "nvidia,gk20a";
159*1537cf73SEmmanuel Vadot        reg = <0x57000000 0x01000000>,
160*1537cf73SEmmanuel Vadot              <0x58000000 0x01000000>;
161*1537cf73SEmmanuel Vadot        interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
162*1537cf73SEmmanuel Vadot                     <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
163*1537cf73SEmmanuel Vadot        interrupt-names = "stall", "nonstall";
164*1537cf73SEmmanuel Vadot        vdd-supply = <&vdd_gpu>;
165*1537cf73SEmmanuel Vadot        clocks = <&tegra_car TEGRA124_CLK_GPU>,
166*1537cf73SEmmanuel Vadot                 <&tegra_car TEGRA124_CLK_PLL_P_OUT5>;
167*1537cf73SEmmanuel Vadot        clock-names = "gpu", "pwr";
168*1537cf73SEmmanuel Vadot        resets = <&tegra_car 184>;
169*1537cf73SEmmanuel Vadot        reset-names = "gpu";
170*1537cf73SEmmanuel Vadot        iommus = <&mc TEGRA_SWGROUP_GPU>;
171*1537cf73SEmmanuel Vadot    };
172