From 102a0743326a03cd1a1202ceda21e175b7d3575c Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Tue, 20 Feb 2024 01:20:52 +0000
Subject: [PATCH] add new system file
---
kernel/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c | 30 +++++++++++++++++++++++-------
1 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/kernel/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c b/kernel/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c
index ab14bc2..4e8e56e 100644
--- a/kernel/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c
+++ b/kernel/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c
@@ -51,7 +51,7 @@
static struct devfreq_simple_ondemand_data ondemand_data;
static struct monitor_dev_profile mali_mdevp = {
- .type = MONITOR_TPYE_DEV,
+ .type = MONITOR_TYPE_DEV,
.low_temp_adjust = rockchip_monitor_dev_low_temp_adjust,
.high_temp_adjust = rockchip_monitor_dev_high_temp_adjust,
};
@@ -241,16 +241,24 @@
static void kbase_devfreq_term_freq_table(struct kbase_device *kbdev)
{
- struct devfreq_dev_profile *dp = kbdev->devfreq->profile;
+ struct devfreq_dev_profile *dp = &kbdev->devfreq_profile;
kfree(dp->freq_table);
+ dp->freq_table = NULL;
+}
+
+static void kbase_devfreq_term_core_mask_table(struct kbase_device *kbdev)
+{
+ kfree(kbdev->opp_table);
+ kbdev->opp_table = NULL;
}
static void kbase_devfreq_exit(struct device *dev)
{
struct kbase_device *kbdev = dev_get_drvdata(dev);
- kbase_devfreq_term_freq_table(kbdev);
+ if (kbdev)
+ kbase_devfreq_term_freq_table(kbdev);
}
static int kbase_devfreq_init_core_mask_table(struct kbase_device *kbdev)
@@ -358,7 +366,7 @@
err = kbase_devfreq_init_core_mask_table(kbdev);
if (err)
- return err;
+ goto init_core_mask_table_failed;
of_property_read_u32(np, "upthreshold",
&ondemand_data.upthreshold);
@@ -368,8 +376,10 @@
kbdev->devfreq = devfreq_add_device(kbdev->dev, dp,
"simple_ondemand", &ondemand_data);
if (IS_ERR(kbdev->devfreq)) {
- kbase_devfreq_term_freq_table(kbdev);
- return PTR_ERR(kbdev->devfreq);
+ err = PTR_ERR(kbdev->devfreq);
+ kbdev->devfreq = NULL;
+ dev_err(kbdev->dev, "Fail to add devfreq device(%d)", err);
+ goto devfreq_add_dev_failed;
}
/* devfreq_add_device only copies a few of kbdev->dev's fields, so
@@ -429,6 +439,12 @@
else
kbdev->devfreq = NULL;
+devfreq_add_dev_failed:
+ kbase_devfreq_term_core_mask_table(kbdev);
+
+init_core_mask_table_failed:
+ kbase_devfreq_term_freq_table(kbdev);
+
return err;
}
@@ -454,5 +470,5 @@
else
kbdev->devfreq = NULL;
- kfree(kbdev->opp_table);
+ kbase_devfreq_term_core_mask_table(kbdev);
}
--
Gitblit v1.6.2