diff options
author | John Stultz <john.stultz@linaro.org> | 2016-06-28 17:18:15 -0700 |
---|---|---|
committer | John Stultz <john.stultz@linaro.org> | 2017-01-26 10:54:55 -0800 |
commit | 9695fe45667cb94949a5c331cb2fe582d660cd5b (patch) | |
tree | fc0895a7df8bbd1e58d7992136a46886d289a1d1 | |
parent | ce40e4e5f58c872d2dcec019dfb978e1c57b517e (diff) | |
download | hikey-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.c | 56 |
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; } |