From: xxm Date: Thu, 17 Apr 2014 01:09:30 +0000 (+0800) Subject: gpu midgard : add pd_gpu support X-Git-Tag: firefly_0821_release~5531 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=1f6e98cc7fc7df4ac3dbc56c5ffc14d4a6b64b61;p=firefly-linux-kernel-4.4.55.git gpu midgard : add pd_gpu support --- diff --git a/drivers/gpu/arm/midgard/platform/rk/mali_kbase_config_rk.c b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_config_rk.c index 15c6708c863e..880bba6ddd6d 100755 --- a/drivers/gpu/arm/midgard/platform/rk/mali_kbase_config_rk.c +++ b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_config_rk.c @@ -33,7 +33,7 @@ int get_cpu_clock_speed(u32 *cpu_clock); #define HZ_IN_MHZ (1000000) #ifdef CONFIG_MALI_MIDGARD_RT_PM -#define RUNTIME_PM_DELAY_TIME 100 +#define RUNTIME_PM_DELAY_TIME 50 #endif /* Versatile Express (VE) configuration defaults shared between config_attributes[] @@ -165,7 +165,6 @@ static int pm_callback_power_on(kbase_device *kbdev) int ret_val; struct device *dev = kbdev->dev; struct rk_context *platform; - platform = (struct rk_context *)kbdev->platform_context; if (pm_runtime_status_suspended(dev)) @@ -215,6 +214,8 @@ static int pm_callback_runtime_on(kbase_device *kbdev) #ifdef CONFIG_MALI_MIDGARD_DVFS struct rk_context *platform = (struct rk_context *)kbdev->platform_context; #endif + kbase_platform_power_on(kbdev); + kbase_platform_clock_on(kbdev); #ifdef CONFIG_MALI_MIDGARD_DVFS if (platform->dvfs_enabled) { @@ -232,6 +233,7 @@ static int pm_callback_runtime_on(kbase_device *kbdev) static void pm_callback_runtime_off(kbase_device *kbdev) { kbase_platform_clock_off(kbdev); + kbase_platform_power_off(kbdev); #ifdef CONFIG_MALI_MIDGARD_DVFS if (kbase_platform_dvfs_enable(false, p_mali_dvfs_infotbl[0].clock)!= MALI_TRUE) printk("[err] disabling dvfs is faled\n"); diff --git a/drivers/gpu/arm/midgard/platform/rk/mali_kbase_platform.c b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_platform.c index 544b09d388bd..6abcd2ccd4b6 100755 --- a/drivers/gpu/arm/midgard/platform/rk/mali_kbase_platform.c +++ b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_platform.c @@ -74,17 +74,17 @@ static int kbase_platform_power_clock_init(kbase_device *kbdev) panic("oops"); /* enable mali t760 powerdomain*/ - platform->mali_pd_node = clk_get_dvfs_node("mali_pd"); - if(IS_ERR_OR_NULL(platform->mali_pd_node)) + platform->mali_pd = clk_get(NULL,"pd_gpu"); + if(IS_ERR_OR_NULL(platform->mali_pd)) { - platform->mali_pd_node = NULL; - printk(KERN_ERR "%s, %s(): failed to get [platform->mali_pd_node]\n", __FILE__, __func__); - //goto out; + platform->mali_pd = NULL; + printk(KERN_ERR "%s, %s(): failed to get [platform->mali_pd]\n", __FILE__, __func__); + goto out; } else { - //dvfs_clk_prepare_enable(platform->mali_pd_node); - printk("pd not enable\n"); + clk_prepare_enable(platform->mali_pd); + printk("mali pd enabled\n"); } mali_pd_status = 1; @@ -107,8 +107,8 @@ static int kbase_platform_power_clock_init(kbase_device *kbdev) return 0; out: - if(platform->mali_pd_node) - clk_put_dvfs_node(platform->mali_pd_node); + if(platform->mali_pd) + clk_put(platform->mali_pd); return -EPERM; @@ -160,7 +160,7 @@ int kbase_platform_is_power_on(void) } /*turn on power domain*/ -static int kbase_platform_power_on(struct kbase_device *kbdev) +int kbase_platform_power_on(struct kbase_device *kbdev) { struct rk_context *platform; if (!kbdev) @@ -172,9 +172,9 @@ static int kbase_platform_power_on(struct kbase_device *kbdev) if (mali_pd_status == 1) return 0; -#if 0 - if(platform->mali_pd_node) - dvfs_clk_prepare_enable(platform->mali_pd_node); +#if 1 + if(platform->mali_pd) + clk_prepare_enable(platform->mali_pd); #endif mali_pd_status = 1; KBASE_TIMELINE_GPU_POWER(kbdev, 1); @@ -183,7 +183,7 @@ static int kbase_platform_power_on(struct kbase_device *kbdev) } /*turn off power domain*/ -static int kbase_platform_power_off(struct kbase_device *kbdev) +int kbase_platform_power_off(struct kbase_device *kbdev) { struct rk_context *platform; if (!kbdev) @@ -195,9 +195,9 @@ static int kbase_platform_power_off(struct kbase_device *kbdev) if (mali_pd_status== 0) return 0; -#if 0 - if(platform->mali_pd_node) - dvfs_clk_disable_unprepare(platform->mali_pd_node); +#if 1 + if(platform->mali_pd) + clk_disable_unprepare(platform->mali_pd); #endif mali_pd_status = 0; KBASE_TIMELINE_GPU_POWER(kbdev, 0); diff --git a/drivers/gpu/arm/midgard/platform/rk/mali_kbase_platform.h b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_platform.h index 28399a8f2f5e..ce017f08a291 100755 --- a/drivers/gpu/arm/midgard/platform/rk/mali_kbase_platform.h +++ b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_platform.h @@ -22,7 +22,7 @@ struct rk_context { struct clk *clk_mali; struct clk *mali_pd; #if 1 - struct dvfs_node * mali_pd_node; + struct clk * mali_pd_node; struct dvfs_node * mali_clk_node; #endif #ifdef CONFIG_MALI_MIDGARD_DVFS @@ -46,5 +46,7 @@ void kbase_platform_term(kbase_device *kbdev); int kbase_platform_clock_on(struct kbase_device *kbdev); int kbase_platform_clock_off(struct kbase_device *kbdev); +int kbase_platform_power_off(struct kbase_device *kbdev); +int kbase_platform_power_on(struct kbase_device *kbdev); #endif /* _KBASE_PLATFORM_H_ */