xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/gpu/nvidia,gk20a.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunNVIDIA Tegra Graphics Processing Units
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunRequired properties:
4*4882a593Smuzhiyun- compatible: "nvidia,<gpu>"
5*4882a593Smuzhiyun  Currently recognized values:
6*4882a593Smuzhiyun  - nvidia,gk20a
7*4882a593Smuzhiyun  - nvidia,gm20b
8*4882a593Smuzhiyun  - nvidia,gp10b
9*4882a593Smuzhiyun  - nvidia,gv11b
10*4882a593Smuzhiyun- reg: Physical base address and length of the controller's registers.
11*4882a593Smuzhiyun  Must contain two entries:
12*4882a593Smuzhiyun  - first entry for bar0
13*4882a593Smuzhiyun  - second entry for bar1
14*4882a593Smuzhiyun- interrupts: Must contain an entry for each entry in interrupt-names.
15*4882a593Smuzhiyun  See ../interrupt-controller/interrupts.txt for details.
16*4882a593Smuzhiyun- interrupt-names: Must include the following entries:
17*4882a593Smuzhiyun  - stall
18*4882a593Smuzhiyun  - nonstall
19*4882a593Smuzhiyun- vdd-supply: regulator for supply voltage. Only required for GPUs not using
20*4882a593Smuzhiyun  power domains.
21*4882a593Smuzhiyun- clocks: Must contain an entry for each entry in clock-names.
22*4882a593Smuzhiyun  See ../clocks/clock-bindings.txt for details.
23*4882a593Smuzhiyun- clock-names: Must include the following entries:
24*4882a593Smuzhiyun  - gpu
25*4882a593Smuzhiyun  - pwr
26*4882a593SmuzhiyunIf the compatible string is "nvidia,gm20b", then the following clock
27*4882a593Smuzhiyunis also required:
28*4882a593Smuzhiyun  - ref
29*4882a593SmuzhiyunIf the compatible string is "nvidia,gv11b", then the following clock is also
30*4882a593Smuzhiyunrequired:
31*4882a593Smuzhiyun  - fuse
32*4882a593Smuzhiyun- resets: Must contain an entry for each entry in reset-names.
33*4882a593Smuzhiyun  See ../reset/reset.txt for details.
34*4882a593Smuzhiyun- reset-names: Must include the following entries:
35*4882a593Smuzhiyun  - gpu
36*4882a593Smuzhiyun- power-domains: GPUs that make use of power domains can define this property
37*4882a593Smuzhiyun  instead of vdd-supply. Currently "nvidia,gp10b" makes use of this.
38*4882a593Smuzhiyun
39*4882a593SmuzhiyunOptional properties:
40*4882a593Smuzhiyun- iommus: A reference to the IOMMU. See ../iommu/iommu.txt for details.
41*4882a593Smuzhiyun
42*4882a593SmuzhiyunExample for GK20A:
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun	gpu@57000000 {
45*4882a593Smuzhiyun		compatible = "nvidia,gk20a";
46*4882a593Smuzhiyun		reg = <0x0 0x57000000 0x0 0x01000000>,
47*4882a593Smuzhiyun		      <0x0 0x58000000 0x0 0x01000000>;
48*4882a593Smuzhiyun		interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
49*4882a593Smuzhiyun			     <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
50*4882a593Smuzhiyun		interrupt-names = "stall", "nonstall";
51*4882a593Smuzhiyun		vdd-supply = <&vdd_gpu>;
52*4882a593Smuzhiyun		clocks = <&tegra_car TEGRA124_CLK_GPU>,
53*4882a593Smuzhiyun			 <&tegra_car TEGRA124_CLK_PLL_P_OUT5>;
54*4882a593Smuzhiyun		clock-names = "gpu", "pwr";
55*4882a593Smuzhiyun		resets = <&tegra_car 184>;
56*4882a593Smuzhiyun		reset-names = "gpu";
57*4882a593Smuzhiyun		iommus = <&mc TEGRA_SWGROUP_GPU>;
58*4882a593Smuzhiyun	};
59*4882a593Smuzhiyun
60*4882a593SmuzhiyunExample for GM20B:
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun	gpu@57000000 {
63*4882a593Smuzhiyun		compatible = "nvidia,gm20b";
64*4882a593Smuzhiyun		reg = <0x0 0x57000000 0x0 0x01000000>,
65*4882a593Smuzhiyun		      <0x0 0x58000000 0x0 0x01000000>;
66*4882a593Smuzhiyun		interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
67*4882a593Smuzhiyun			     <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
68*4882a593Smuzhiyun		interrupt-names = "stall", "nonstall";
69*4882a593Smuzhiyun		clocks = <&tegra_car TEGRA210_CLK_GPU>,
70*4882a593Smuzhiyun			 <&tegra_car TEGRA210_CLK_PLL_P_OUT5>,
71*4882a593Smuzhiyun			 <&tegra_car TEGRA210_CLK_PLL_G_REF>;
72*4882a593Smuzhiyun		clock-names = "gpu", "pwr", "ref";
73*4882a593Smuzhiyun		resets = <&tegra_car 184>;
74*4882a593Smuzhiyun		reset-names = "gpu";
75*4882a593Smuzhiyun		iommus = <&mc TEGRA_SWGROUP_GPU>;
76*4882a593Smuzhiyun	};
77*4882a593Smuzhiyun
78*4882a593SmuzhiyunExample for GP10B:
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun	gpu@17000000 {
81*4882a593Smuzhiyun		compatible = "nvidia,gp10b";
82*4882a593Smuzhiyun		reg = <0x0 0x17000000 0x0 0x1000000>,
83*4882a593Smuzhiyun		      <0x0 0x18000000 0x0 0x1000000>;
84*4882a593Smuzhiyun		interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH
85*4882a593Smuzhiyun			      GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
86*4882a593Smuzhiyun		interrupt-names = "stall", "nonstall";
87*4882a593Smuzhiyun		clocks = <&bpmp TEGRA186_CLK_GPCCLK>,
88*4882a593Smuzhiyun			 <&bpmp TEGRA186_CLK_GPU>;
89*4882a593Smuzhiyun		clock-names = "gpu", "pwr";
90*4882a593Smuzhiyun		resets = <&bpmp TEGRA186_RESET_GPU>;
91*4882a593Smuzhiyun		reset-names = "gpu";
92*4882a593Smuzhiyun		power-domains = <&bpmp TEGRA186_POWER_DOMAIN_GPU>;
93*4882a593Smuzhiyun		iommus = <&smmu TEGRA186_SID_GPU>;
94*4882a593Smuzhiyun	};
95*4882a593Smuzhiyun
96*4882a593SmuzhiyunExample for GV11B:
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun	gpu@17000000 {
99*4882a593Smuzhiyun		compatible = "nvidia,gv11b";
100*4882a593Smuzhiyun		reg = <0x17000000 0x10000000>,
101*4882a593Smuzhiyun		      <0x18000000 0x10000000>;
102*4882a593Smuzhiyun		interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
103*4882a593Smuzhiyun			     <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
104*4882a593Smuzhiyun		interrupt-names = "stall", "nonstall";
105*4882a593Smuzhiyun		clocks = <&bpmp TEGRA194_CLK_GPCCLK>,
106*4882a593Smuzhiyun			 <&bpmp TEGRA194_CLK_GPU_PWR>,
107*4882a593Smuzhiyun			 <&bpmp TEGRA194_CLK_FUSE>;
108*4882a593Smuzhiyun		clock-names = "gpu", "pwr", "fuse";
109*4882a593Smuzhiyun		resets = <&bpmp TEGRA194_RESET_GPU>;
110*4882a593Smuzhiyun		reset-names = "gpu";
111*4882a593Smuzhiyun		dma-coherent;
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun		power-domains = <&bpmp TEGRA194_POWER_DOMAIN_GPU>;
114*4882a593Smuzhiyun		iommus = <&smmu TEGRA194_SID_GPU>;
115*4882a593Smuzhiyun	};
116