summaryrefslogtreecommitdiff
path: root/arch/arm64/boot/dts/google/zuma-gpu.dtsi
blob: f2935f50e3e352320309d719e65a97d30802bdaa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
// SPDX-License-Identifier: GPL-2.0-only
/*
 * ZUMA Mali GPU  device tree source
 *
 * Copyright 2022 Google LLC
 *
 */

/ {
	mali_mgm: physical-memory-group-manager {
		compatible = "arm,physical-memory-group-manager";

		/* Memory groups */
		groups =
			"gpu_g0",
			"gpu_g1";

		/* Base partition index for each group */
		group_base_pt = <0 10>;

		/* Number of partitions for each group */
		group_pt_num = <10 1>;

		/* SLC partitions */
		pt_id =
			"gpu_g0_p0",
			"gpu_g0_p1",
			"gpu_g0_p2",
			"gpu_g0_p3",
			"gpu_g0_p4",
			"gpu_g0_p5",
			"gpu_g0_p6",
			"gpu_g0_p7",
			"gpu_g0_p8",
			"gpu_g0_p9",
			"gpu_g1_p0";

		/* SLC partition sizes KB */
		pt_size = <512 1024 1536 2048 3072 4096 6144 8192 12288 16384 16384>;
	};

	mali_pma: protected-memory-allocator {
		compatible = "arm,protected-memory-allocator";
	};

	mali: mali@1F000000 {
		compatible = "arm,malit6xx";
		reg = <0x0 0x1F000000 0x1000000>;
		l2-hash-values = <0x0036DB6D 0x005B6DB6 0x0>;
		interrupts =
			<GIC_SPI IRQ_G3D_IRQJOB_G3D IRQ_TYPE_LEVEL_HIGH>,
			<GIC_SPI IRQ_G3D_IRQMMU_G3D IRQ_TYPE_LEVEL_HIGH>,
			<GIC_SPI IRQ_G3D_IRQGPU_G3D IRQ_TYPE_LEVEL_HIGH>;
		interrupt-names = "JOB", "MMU", "GPU";

		/* Power */
		power-domains = <&pd_g3d>, <&pd_embedded_g3d>;
		power-domain-names = "top", "cores";
		g3d_genpd_name = "pd-embedded_g3d";
		gpu_pmu_status_reg_offset = <0x1C84>;
		gpu_pmu_status_local_pwr_mask = <0x1>; /*0x1 << 0*/
		power_policy = "adaptive";
		firmware_idle_hysteresis_time_ms = <60>;
		firmware_idle_hysteresis_gpu_sleep_scaler = <60>;
		cores_suspend_hysteresis_time_ms = <20>;
		top_suspend_hysteresis_time_ms = <40>;

		/* Memory */
		physical-memory-group-manager = <&mali_mgm>;

		/* Protected memory allocator */
		protected-memory-allocator = <&mali_pma>;

		/* Clocks */
		gpu0_cmu_cal_id = <ACPM_DVFS_G3DL2>;
		gpu1_cmu_cal_id = <ACPM_DVFS_G3D>;

		/* DVFS */
		gpu_dvfs_governor = "quickstep_use_mcu";
		gpu_dvfs_clockdown_hysteresis = <50>;

		/* DVFS v1 operating points */
		gpu_dvfs_table_size_v1 = <12 12>; /*<row col>*/
		gpu_dvfs_table_v1 = <
			/*
			 *gpu0    gpu1   down     up    hys      int      mif   little  middle   big         mcu       mcu
			 * clk     clk   util   util  ticks      min      min      min     min   max   down_util   up_util
			 *------------------------------------------------------------------------------------------------
			 */
			900000  890000     85    100      1        0        0        0       0     0         40        100
			900000  807000     81     97      1        0        0        0       0     0         40        60
			900000  723000     76     94      1        0        0        0       0     0         30        60
			749000  649000     85     96      2        0        0        0       0     0         30        40
			749000  580000     83     97      3        0        0        0       0     0         25        40
			659000  521000     78     95      3        0        0        0       0     0         25        30
			659000  467000     80     96      3        0        0        0       0     0         20        30
			531000  419000     76     95      3        0        0        0       0     0         20        25
			531000  376000     72     94      3        0        0        0       0     0         15        25
			430000  337000     67     94      2        0        0        0       0     0         15        20
			386000  302000     50     92      1        0        0        0       0     0         8         20
			160000  150000      0     90      1        0        0        0       0     0         0         20
		>;

		/* DVFS v2 operating points */
		gpu_dvfs_table_size_v2 = <14 12>; /*<row col>*/
		gpu_dvfs_table_v2 = <
			/*
			 *gpu0    gpu1   down     up    hys      int      mif   little  middle   big         mcu       mcu
			 * clk     clk   util   util  ticks      min      min      min     min   max   down_util   up_util
			 *------------------------------------------------------------------------------------------------
			 */
			950000  940000     85    100      1        0        0        0       0     0         40        100
			900000  890000     85    100      1        0        0        0       0     0         40        100
			900000  850000     76     94      1        0        0        0       0     0         40        60
			900000  807000     85     96      2        0        0        0       0     0         30        60
			900000  723000     83     97      3        0        0        0       0     0         25        50
			749000  649000     78     95      3        0        0        0       0     0         25        40
			749000  580000     80     96      3        0        0        0       0     0         20        40
			659000  521000     76     95      3        0        0        0       0     0         20        35
			659000  467000     72     95      3        0        0        0       0     0         20        30
			531000  419000     67     94      2        0        0        0       0     0         15        30
			531000  376000     65     94      1        0        0        0       0     0         15        25
			430000  337000     60     94      1        0        0        0       0     0         12        20
			386000  302000     50     92      1        0        0        0       0     0         8         20
			160000  150000      0     90      1        0        0        0       0     0         0         20
		>;

		/* DVFS step up value */
		gpu_dvfs_step_up_val = <3>;

		/* Fmax limit */
		gpu_dvfs_max_freq = <890000>;

		/* QOS */
		gpu_dvfs_qos_bts_scenario = "g3d_performance";
		gpu_dvfs_qos_bts_threshold = <400000>;
		mcu_protm_scale = <3 10>;
		mcu_down_util_scale = <5 4>;

		/* Thermal */
		#cooling-cells = <2>;
		gpu_power_coeff = <625>;
		ect-coeff-index = <3>;

		/* S2MPU */
		s2mpus = <&s2mpu_s0_g3d>;

		/* Features mask */
		gpu_features_mask = <0 4>;
	};
};