blob: ae947a33ffd97bb3b8fecc0604351a881e8fb4f1 [file] [log] [blame]
// 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 = <60>;
top_suspend_hysteresis_time_ms = <0>;
/* 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>;
};
};