mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 14:04:54 +02:00
MALI: midgard: RK: Add support to get soc infomation
Change-Id: I9e5ea0458ec08ddfc10d9d4e258713e747946959 Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
This commit is contained in:
parent
d368d1acda
commit
cfa8862b8f
|
|
@ -21,6 +21,7 @@
|
|||
#include <linux/of.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/nvmem-consumer.h>
|
||||
#include <linux/rockchip/cpu.h>
|
||||
#include <linux/soc/rockchip/pvtm.h>
|
||||
#include <linux/thermal.h>
|
||||
#include <soc/rockchip/rockchip_opp_select.h>
|
||||
|
|
@ -430,8 +431,55 @@ static void kbase_platform_rk_remove_sysfs_files(struct device *dev)
|
|||
device_remove_file(dev, &dev_attr_utilisation);
|
||||
}
|
||||
|
||||
static int rk3288_get_soc_info(struct device *dev, struct device_node *np,
|
||||
int *bin, int *process)
|
||||
{
|
||||
int ret = -EINVAL, value = -EINVAL;
|
||||
char *name;
|
||||
|
||||
if (!bin)
|
||||
goto out;
|
||||
|
||||
if (soc_is_rk3288w())
|
||||
name = "performance-w";
|
||||
else
|
||||
name = "performance";
|
||||
if (of_property_match_string(np, "nvmem-cell-names", name) >= 0) {
|
||||
ret = rockchip_get_efuse_value(np, name, &value);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to get soc performance value\n");
|
||||
goto out;
|
||||
}
|
||||
if (value & 0x2)
|
||||
*bin = 3;
|
||||
else if (value & 0x01)
|
||||
*bin = 2;
|
||||
else
|
||||
*bin = 0;
|
||||
} else {
|
||||
dev_err(dev, "Failed to get bin config\n");
|
||||
}
|
||||
if (*bin >= 0)
|
||||
dev_info(dev, "bin=%d\n", *bin);
|
||||
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct of_device_id rockchip_mali_of_match[] = {
|
||||
{
|
||||
.compatible = "rockchip,rk3288",
|
||||
.data = (void *)&rk3288_get_soc_info,
|
||||
},
|
||||
{
|
||||
.compatible = "rockchip,rk3288w",
|
||||
.data = (void *)&rk3288_get_soc_info,
|
||||
},
|
||||
{},
|
||||
};
|
||||
|
||||
int kbase_platform_rk_init_opp_table(struct kbase_device *kbdev)
|
||||
{
|
||||
return rockchip_init_opp_table(kbdev->dev, NULL,
|
||||
return rockchip_init_opp_table(kbdev->dev, rockchip_mali_of_match,
|
||||
"gpu_leakage", "mali");
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user