interrupts = <0 160 4>, <0 161 4>, <0 162 4>;
interrupt-names = "GPU", "MMU", "JOB";
- num_of_pp = <3>;
+ num_of_pp = <2>;
sc_mpp = <1>; /* number of shader cores used most of time. */
clocks = <&clkc CLKID_GPU_MUX &clkc CLKID_GP0_PLL>;
clock-names = "gpu_mux","gp0_pll";
cooling_devices {
cpufreq_cool_cluster0 {
min_state = <1000000>;
- dyn_coeff = <140>;
+ dyn_coeff = <115>;
cluster_id = <0>;
node_name = "cpufreq_cool0";
device_type = "cpufreq";
};
gpufreq_cool {
min_state = <400>;
- dyn_coeff = <437>;
+ dyn_coeff = <358>;
+ gpu_pp = <2>;
cluster_id = <0>;
node_name = "gpufreq_cool0";
device_type = "gpufreq";
soc_thermal: soc_thermal {
polling-delay = <1000>;
polling-delay-passive = <100>;
- sustainable-power = <2150>;
+ sustainable-power = <1460>;
thermal-sensors = <&p_tsensor 0>;
trips {
pswitch_on: trip-point@0 {
struct cool_dev {
int min_state;
int coeff;
+ int gpupp;
int cluster_id;
char *device_type;
struct device_node *np;
{
struct meson_cooldev *mcooldev = platform_get_drvdata(pdev);
struct cool_dev *cool = &mcooldev->cool_devs[index];
- int pp;
struct cpumask *mask;
int id = cool->cluster_id;
break;
/* GPU is KO, just save these parameters */
case COOL_DEV_TYPE_GPU_FREQ:
- if (of_property_read_u32(cool->np, "num_of_pp", &pp))
- pr_err("thermal: read num_of_pp failed\n");
- save_gpu_cool_para(cool->coeff, cool->np, pp);
+ save_gpu_cool_para(cool->coeff, cool->np, cool->gpupp);
return 0;
case COOL_DEV_TYPE_GPU_CORE:
else
cool->coeff = temp;
+ if (of_property_read_u32(child, "gpu_pp", &temp))
+ pr_err("thermal: read gpupp failed\n");
+ else
+ cool->gpupp = temp;
+
if (of_property_read_u32(child, "cluster_id", &temp))
pr_err("thermal: read cluster_id failed\n");
else