diff options
author | Wu Guoxing <b39297@freescale.com> | 2012-02-24 09:12:31 +0800 |
---|---|---|
committer | Wu Guoxing <b39297@freescale.com> | 2012-02-24 15:46:05 +0800 |
commit | 0a2926a1c16161500552482938c47ae44f92dbc9 (patch) | |
tree | 7b021caa18d5e78b7a3688e72938f046c922b882 /drivers/mxc | |
parent | 4180f1cfce522201db868eec8c6c459d12a0e34d (diff) |
ENGR00175305:gpu-viv:don't open 2d clock when operate only on 3d
mx6dl do not have shader clock, and the shader clock is used
as 2d clock. so, operate differently for mx6q & mx6dl
Signed-off-by: Wu Guoxing <b39297@freescale.com>
Acked-by: Lily Zhang
Diffstat (limited to 'drivers/mxc')
-rw-r--r-- | drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c | 17 | ||||
-rw-r--r-- | drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c | 7 |
2 files changed, 15 insertions, 9 deletions
diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c index 62aac98194ed..ed980bc5c52d 100644 --- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c +++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c @@ -27,6 +27,7 @@ #include <linux/mm.h> #include <linux/mman.h> #include <linux/slab.h> +#include <mach/hardware.h> #define _GC_OBJ_ZONE gcvZONE_DEVICE @@ -382,13 +383,15 @@ gckGALDEVICE_Construct( if (IrqLine != -1) { device->clk_3d_core = clk_get(NULL, "gpu3d_clk"); if (!IS_ERR(device->clk_3d_core)) { - device->clk_3d_shader = clk_get(NULL, "gpu3d_shader_clk"); - if (IS_ERR(device->clk_3d_shader)) { - IrqLine = -1; - clk_put(device->clk_3d_core); - device->clk_3d_core = NULL; - device->clk_3d_shader = NULL; - gckOS_Print("galcore: clk_get gpu3d_shader_clk failed, disable 3d!\n"); + if (cpu_is_mx6q()) { + device->clk_3d_shader = clk_get(NULL, "gpu3d_shader_clk"); + if (IS_ERR(device->clk_3d_shader)) { + IrqLine = -1; + clk_put(device->clk_3d_core); + device->clk_3d_core = NULL; + device->clk_3d_shader = NULL; + gckOS_Print("galcore: clk_get gpu3d_shader_clk failed, disable 3d!\n"); + } } } else { IrqLine = -1; diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c index 0f0d05c47f13..3cd8e247ee58 100644 --- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c +++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c @@ -31,6 +31,7 @@ #include <asm/atomic.h> #include <linux/dma-mapping.h> #include <linux/slab.h> +#include <mach/hardware.h> #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,23) #include <linux/math64.h> #endif @@ -6854,7 +6855,8 @@ gckOS_SetGPUPower( case gcvCORE_MAJOR: if (!Os->device->clk_flag[gcvCORE_MAJOR]) { clk_enable(clk_3dcore); - clk_enable(clk_3dshader); + if (cpu_is_mx6q()) + clk_enable(clk_3dshader); } Os->device->clk_flag[gcvCORE_MAJOR] = gcvTRUE; break; @@ -6877,7 +6879,8 @@ gckOS_SetGPUPower( switch (Core) { case gcvCORE_MAJOR: if (Os->device->clk_flag[gcvCORE_MAJOR]) { - clk_disable(clk_3dshader); + if (cpu_is_mx6q()) + clk_disable(clk_3dshader); clk_disable(clk_3dcore); } Os->device->clk_flag[gcvCORE_MAJOR] = gcvFALSE; |