aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Stultz <john.stultz@linaro.org>2016-06-28 17:18:15 -0700
committerJohn Stultz <john.stultz@linaro.org>2017-01-26 10:54:55 -0800
commit9695fe45667cb94949a5c331cb2fe582d660cd5b (patch)
treefc0895a7df8bbd1e58d7992136a46886d289a1d1
parentce40e4e5f58c872d2dcec019dfb978e1c57b517e (diff)
downloadhikey-clang-9695fe45667cb94949a5c331cb2fe582d660cd5b.tar.gz
MALI: mali_hikey: Try to remove MTCMOS requirement from mali driver
-rw-r--r--drivers/gpu/arm/utgard/platform/hikey/mali_hikey.c56
1 files changed, 4 insertions, 52 deletions
diff --git a/drivers/gpu/arm/utgard/platform/hikey/mali_hikey.c b/drivers/gpu/arm/utgard/platform/hikey/mali_hikey.c
index 78f220d5e466..b53672fca455 100644
--- a/drivers/gpu/arm/utgard/platform/hikey/mali_hikey.c
+++ b/drivers/gpu/arm/utgard/platform/hikey/mali_hikey.c
@@ -22,8 +22,6 @@
#include <linux/clk.h>
#include <linux/err.h>
#include <linux/platform_device.h>
-#include <linux/regulator/consumer.h>
-#include <linux/regulator/driver.h>
#include <linux/pm.h>
#include <linux/mm.h>
#include <linux/of.h>
@@ -76,7 +74,6 @@ struct mali_soc_remap_addr_table {
static struct clk *mali_clk_g3d;
static struct clk *mali_pclk_g3d;
-static struct regulator *mali_regulator;
static struct device_node *mali_np;
static bool mali_gpu_power_status;
@@ -162,6 +159,7 @@ static int mali_clock_on(void)
static void mali_clock_off(void)
{
clk_disable_unprepare(mali_clk_g3d);
+ clk_disable_unprepare(mali_pclk_g3d);
}
static int mali_domain_powerup_finish(void)
@@ -207,31 +205,6 @@ static int mali_domain_powerup_finish(void)
return 0;
}
-static int mali_regulator_enable(void)
-{
- int i, stat;
-
- stat = regulator_enable(mali_regulator);
- if (stat)
- return stat;
-
- for (i = 0; i < 50; i++) {
- unsigned int res = mali_reg_readl(
- mali_soc_addr_table->soc_ao_sctrl_base_addr,
- SOC_AO_SCTRL_SC_PW_MTCMOS_STAT0_ADDR(0), 1, 1);
- if (res)
- break;
- udelay(1);
- }
-
- if (50 == i) {
- pr_err("regulator enable timeout\n");
- return -ETIMEDOUT;
- }
-
- return 0;
-}
-
static int mali_platform_powerup(void)
{
int stat;
@@ -239,10 +212,6 @@ static int mali_platform_powerup(void)
if (mali_gpu_power_status)
return 0;
- stat = mali_regulator_enable();
- if (stat)
- return stat;
-
stat = mali_clock_on();
if (stat)
return stat;
@@ -260,8 +229,6 @@ static int mali_regulator_disable(void)
{
mali_reg_writel(mali_soc_addr_table->soc_media_sctrl_base_addr,
SOC_MEDIA_SCTRL_SC_MEDIA_RSTEN_ADDR(0), 0, 0, 1);
- mali_reg_writel(mali_soc_addr_table->soc_media_sctrl_base_addr,
- SOC_MEDIA_SCTRL_SC_MEDIA_CLKDIS_ADDR(0), 1, 1, 1);
mali_reg_writel(mali_soc_addr_table->soc_ao_sctrl_base_addr,
SOC_AO_SCTRL_SC_PW_CLKDIS0_ADDR(0), 1, 1, 1);
mali_reg_writel(mali_soc_addr_table->soc_ao_sctrl_base_addr,
@@ -269,7 +236,7 @@ static int mali_regulator_disable(void)
mali_reg_writel(mali_soc_addr_table->soc_ao_sctrl_base_addr,
SOC_AO_SCTRL_SC_PW_RSTEN0_ADDR(0), 1, 1, 1);
- return regulator_disable(mali_regulator);
+ return 0;
}
static int mali_platform_powerdown(void)
@@ -434,24 +401,11 @@ static int init_mali_clock_regulator(struct platform_device *pdev)
{
int stat, ret;
- BUG_ON(mali_regulator || mali_clk_g3d || mali_pclk_g3d);
-
- /* regulator init */
-
- mali_regulator = regulator_get(&pdev->dev, "G3D_PD_VDD");
- if (IS_ERR(mali_regulator)) {
- pr_err("failed to get G3D_PD_VDD\n");
- return -ENODEV;
- }
-
- stat = mali_regulator_enable();
- if (stat)
- return stat;
+ BUG_ON(mali_clk_g3d || mali_pclk_g3d);
mali_gpu_power_status = true;
/* clk init */
-
mali_clk_g3d = clk_get(&pdev->dev, "clk_g3d");
if (IS_ERR(mali_clk_g3d)) {
pr_err("failed to get source CLK_G3D\n");
@@ -500,7 +454,7 @@ static int deinit_mali_clock_regulator(void)
{
int stat;
- BUG_ON(!mali_regulator || !mali_clk_g3d || !mali_pclk_g3d);
+ BUG_ON(!mali_clk_g3d || !mali_pclk_g3d);
stat = mali_platform_powerdown();
if (stat)
@@ -510,8 +464,6 @@ static int deinit_mali_clock_regulator(void)
mali_clk_g3d = NULL;
clk_put(mali_pclk_g3d);
mali_pclk_g3d = NULL;
- regulator_put(mali_regulator);
- mali_regulator = NULL;
return 0;
}