mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2025-03-01 03:21:21 +00:00
65 lines
2.4 KiB
Diff
65 lines
2.4 KiB
Diff
From e093d955d72107cc92008e0813e5e2cc7015fd9f Mon Sep 17 00:00:00 2001
|
|
From: Lukasz Luba <lukasz.luba@arm.com>
|
|
Date: Sun, 24 Jan 2021 03:57:47 +0000
|
|
Subject: [PATCH 23/88] FROMGIT: drm/panfrost: add governor data with
|
|
pre-defined thresholds
|
|
|
|
The simple_ondemand devfreq governor uses two thresholds to decide about
|
|
the frequency change: upthreshold, downdifferential. These two tunable
|
|
change the behavior of the governor decision, e.g. how fast to increase
|
|
the frequency or how rapidly limit the frequency. This patch adds needed
|
|
governor data with thresholds values gathered experimentally in different
|
|
workloads.
|
|
|
|
Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
|
|
---
|
|
drivers/gpu/drm/panfrost/panfrost_devfreq.c | 10 +++++++++-
|
|
drivers/gpu/drm/panfrost/panfrost_devfreq.h | 2 ++
|
|
2 files changed, 11 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c
|
|
index f44d28fad085..ffbf16506bb5 100644
|
|
--- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c
|
|
+++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c
|
|
@@ -129,8 +129,16 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev)
|
|
panfrost_devfreq_profile.initial_freq = cur_freq;
|
|
dev_pm_opp_put(opp);
|
|
|
|
+ /*
|
|
+ * Setup default thresholds for the simple_ondemand governor.
|
|
+ * The values are chosen based on experiments.
|
|
+ */
|
|
+ pfdevfreq->gov_data.upthreshold = 45;
|
|
+ pfdevfreq->gov_data.downdifferential = 5;
|
|
+
|
|
devfreq = devm_devfreq_add_device(dev, &panfrost_devfreq_profile,
|
|
- DEVFREQ_GOV_SIMPLE_ONDEMAND, NULL);
|
|
+ DEVFREQ_GOV_SIMPLE_ONDEMAND,
|
|
+ &pfdevfreq->gov_data);
|
|
if (IS_ERR(devfreq)) {
|
|
DRM_DEV_ERROR(dev, "Couldn't initialize GPU devfreq\n");
|
|
ret = PTR_ERR(devfreq);
|
|
diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.h b/drivers/gpu/drm/panfrost/panfrost_devfreq.h
|
|
index db6ea48e21f9..1e2a4de941aa 100644
|
|
--- a/drivers/gpu/drm/panfrost/panfrost_devfreq.h
|
|
+++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.h
|
|
@@ -4,6 +4,7 @@
|
|
#ifndef __PANFROST_DEVFREQ_H__
|
|
#define __PANFROST_DEVFREQ_H__
|
|
|
|
+#include <linux/devfreq.h>
|
|
#include <linux/spinlock.h>
|
|
#include <linux/ktime.h>
|
|
|
|
@@ -17,6 +18,7 @@ struct panfrost_devfreq {
|
|
struct devfreq *devfreq;
|
|
struct opp_table *regulators_opp_table;
|
|
struct thermal_cooling_device *cooling;
|
|
+ struct devfreq_simple_ondemand_data gov_data;
|
|
bool opp_of_table_added;
|
|
|
|
ktime_t busy_time;
|
|
--
|
|
2.17.1
|
|
|