forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/drivers/gpu/arm/midgard/platform/rk/mali_kbase_config_rk.c
....@@ -119,7 +119,7 @@
119119 ret = -ENOMEM;
120120 goto err_wq;
121121 }
122
- INIT_DELAYED_WORK(&platform->work, rk_pm_power_off_delay_work);
122
+ INIT_DEFERRABLE_WORK(&platform->work, rk_pm_power_off_delay_work);
123123
124124 wake_lock_init(&platform->wake_lock, WAKE_LOCK_SUSPEND, "gpu");
125125
....@@ -378,19 +378,13 @@
378378 struct rk_context *platform = get_rk_context(kbdev);
379379 ssize_t ret = 0;
380380 unsigned long period_in_us = platform->utilisation_period * 1000;
381
- unsigned long total_time = 0;
382
- unsigned long busy_time = 0;
383
- unsigned long utilisation = 0;
381
+ unsigned long total_time;
382
+ unsigned long busy_time;
383
+ unsigned long utilisation;
384384
385
-#ifdef CONFIG_MALI_DEVFREQ
386385 kbase_pm_reset_dvfs_utilisation(kbdev);
387
-#endif
388386 usleep_range(period_in_us, period_in_us + 100);
389
-#ifdef CONFIG_MALI_DEVFREQ
390387 kbase_pm_get_dvfs_utilisation(kbdev, &total_time, &busy_time);
391
-#else
392
- dev_warn(dev, "can not get 'total_time' and 'busy_time', for CONFIG_MALI_DEVFREQ is disabled");
393
-#endif
394388 /* 'devfreq_dev_profile' instance registered to devfreq
395389 * also uses kbase_pm_reset_dvfs_utilisation
396390 * and kbase_pm_get_dvfs_utilisation.
....@@ -398,8 +392,7 @@
398392 */
399393 D("total_time : %lu, busy_time : %lu.", total_time, busy_time);
400394
401
- if (total_time != 0)
402
- utilisation = busy_time * 100 / total_time;
395
+ utilisation = busy_time * 100 / total_time;
403396 ret += snprintf(buf, PAGE_SIZE, "%ld\n", utilisation);
404397
405398 return ret;
....@@ -474,20 +467,26 @@
474467 return ret;
475468 }
476469
470
+static const struct rockchip_opp_data rk3288_gpu_opp_data = {
471
+ .get_soc_info = rk3288_get_soc_info,
472
+};
473
+
477474 static const struct of_device_id rockchip_mali_of_match[] = {
478475 {
479476 .compatible = "rockchip,rk3288",
480
- .data = (void *)&rk3288_get_soc_info,
477
+ .data = (void *)&rk3288_gpu_opp_data,
481478 },
482479 {
483480 .compatible = "rockchip,rk3288w",
484
- .data = (void *)&rk3288_get_soc_info,
481
+ .data = (void *)&rk3288_gpu_opp_data,
485482 },
486483 {},
487484 };
488485
489486 int kbase_platform_rk_init_opp_table(struct kbase_device *kbdev)
490487 {
491
- return rockchip_init_opp_table(kbdev->dev, rockchip_mali_of_match,
488
+ rockchip_get_opp_data(rockchip_mali_of_match, &kbdev->opp_info);
489
+
490
+ return rockchip_init_opp_table(kbdev->dev, &kbdev->opp_info,
492491 "gpu_leakage", "mali");
493492 }