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:
Finley Xiao 2019-03-28 16:58:12 +08:00 committed by Tao Huang
parent d368d1acda
commit cfa8862b8f

View File

@ -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");
}