From 2a796d5cd421d4da4df6b1da84bb2d9d1cf21413 Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Tue, 14 May 2019 10:06:23 +0800 Subject: [PATCH] MALI: midgard: Add private data for governor This adds support to get simple_ondemand governor data from devicetree. Change-Id: Ica8cde1b28a81d5b7e2c5c8c109a2469311bcd8e Signed-off-by: Finley Xiao --- .../gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c | 10 +++++++++- .../midgard_for_linux/backend/gpu/mali_kbase_devfreq.c | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c index e9424de5a939..e82617f26294 100644 --- a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c +++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c @@ -48,6 +48,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, @@ -334,6 +336,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; unsigned long opp_rate; int err; @@ -363,8 +366,13 @@ int kbase_devfreq_init(struct kbase_device *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); diff --git a/drivers/gpu/arm/midgard_for_linux/backend/gpu/mali_kbase_devfreq.c b/drivers/gpu/arm/midgard_for_linux/backend/gpu/mali_kbase_devfreq.c index 400bd3fa959a..68dd29174413 100644 --- a/drivers/gpu/arm/midgard_for_linux/backend/gpu/mali_kbase_devfreq.c +++ b/drivers/gpu/arm/midgard_for_linux/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, @@ -225,6 +227,7 @@ static void kbase_devfreq_exit(struct device *dev) int kbase_devfreq_init(struct kbase_device *kbdev) { + struct device_node *np = kbdev->dev->of_node; struct devfreq_dev_profile *dp; unsigned long opp_rate; int err; @@ -252,8 +255,13 @@ int kbase_devfreq_init(struct kbase_device *kbdev) if (kbase_devfreq_init_freq_table(kbdev, dp)) return -EFAULT; + 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);