From 7bfc54efa986f8db4de4073b9c40916a5f060048 Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Wed, 30 Dec 2020 17:03:10 +0800 Subject: [PATCH] MALI: bifrost: Add private data for governor This adds support to get simple_ondemand governor data from devicetree. Signed-off-by: Finley Xiao Change-Id: I6d44ba467d52bde191fb1b87bce02dc503055262 --- .../gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.c | 9 ++++++++- .../bifrost_for_linux/backend/gpu/mali_kbase_devfreq.c | 10 ++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.c b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.c index 5d55790883ac..aa39a83151ce 100644 --- a/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.c +++ b/drivers/gpu/arm/bifrost/backend/gpu/mali_kbase_devfreq.c @@ -49,6 +49,8 @@ #include #include +static struct devfreq_simple_ondemand_data ondemand_data; + static struct monitor_dev_profile mali_mdevp = { .type = MONITOR_TPYE_DEV, .low_temp_adjust = rockchip_monitor_dev_low_temp_adjust, @@ -642,6 +644,7 @@ static void kbase_devfreq_work_term(struct kbase_device *kbdev) int kbase_devfreq_init(struct kbase_device *kbdev) { + struct device_node *np = kbdev->dev->of_node; struct devfreq_dev_profile *dp; struct dev_pm_opp *opp; unsigned long opp_rate; @@ -694,8 +697,12 @@ int kbase_devfreq_init(struct kbase_device *kbdev) return err; } + of_property_read_u32(np, "upthreshold", + &ondemand_data.upthreshold); + of_property_read_u32(np, "downdifferential", + &ondemand_data.downdifferential); kbdev->devfreq = devfreq_add_device(kbdev->dev, dp, - "simple_ondemand", NULL); + "simple_ondemand", &ondemand_data); if (IS_ERR(kbdev->devfreq)) { err = PTR_ERR(kbdev->devfreq); kbase_devfreq_work_term(kbdev); diff --git a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.c b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.c index f64de4c1e8e1..991eea08df9a 100644 --- a/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.c +++ b/drivers/gpu/arm/bifrost_for_linux/backend/gpu/mali_kbase_devfreq.c @@ -46,6 +46,8 @@ #include #include +static struct devfreq_simple_ondemand_data ondemand_data; + static struct monitor_dev_profile mali_mdevp = { .type = MONITOR_TPYE_DEV, .low_temp_adjust = rockchip_monitor_dev_low_temp_adjust, @@ -321,6 +323,7 @@ static int kbase_devfreq_init_core_mask_table(struct kbase_device *kbdev) int kbase_devfreq_init(struct kbase_device *kbdev) { + struct device_node *np = kbdev->dev->of_node; struct devfreq_dev_profile *dp; struct dev_pm_opp *opp; unsigned long opp_rate; @@ -349,9 +352,12 @@ int kbase_devfreq_init(struct kbase_device *kbdev) err = kbase_devfreq_init_core_mask_table(kbdev); if (err) return err; - + of_property_read_u32(np, "upthreshold", + &ondemand_data.upthreshold); + of_property_read_u32(np, "downdifferential", + &ondemand_data.downdifferential); kbdev->devfreq = devfreq_add_device(kbdev->dev, dp, - "simple_ondemand", NULL); + "simple_ondemand", &ondemand_data); if (IS_ERR(kbdev->devfreq)) { kbase_devfreq_term_freq_table(kbdev); return PTR_ERR(kbdev->devfreq);