From: Loren Huang Date: Tue, 5 Mar 2013 07:44:28 +0000 (+0800) Subject: ENGR00252727-2 [GPU]Power on VG core if there is only VG core in SoC X-Git-Tag: v3.0.35-fsl~105 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=a39212ff770b67921f81060055a3f6bc763b1e52;p=karo-tx-linux.git ENGR00252727-2 [GPU]Power on VG core if there is only VG core in SoC -Power on VG core to makesure VG can be initalized if there is only VG core in SoC. -Power off VG core after initalization is done. -Adjust VG power and clock state to match above changing. Signed-off-by: Loren Huang Acked-by: Lily Zhang --- diff --git a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c index 4be7d91e9437..4a6010dd1c9a 100644 --- a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c +++ b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c @@ -308,6 +308,7 @@ gckVGHARDWARE_Construct( do { + gcmkERR_BREAK(gckOS_SetGPUPower(Os, gcvCORE_VG, gcvTRUE, gcvTRUE)); status = _ResetGPU(Os); if (status != gcvSTATUS_OK) @@ -340,10 +341,10 @@ gckVGHARDWARE_Construct( hardware->powerMutex = gcvNULL; hardware->idleSignal = gcvNULL; - hardware->chipPowerState = gcvPOWER_OFF; + hardware->chipPowerState = gcvPOWER_ON; hardware->chipPowerStateGlobal = gcvPOWER_ON; - hardware->clockState = gcvFALSE; - hardware->powerState = gcvFALSE; + hardware->clockState = gcvTRUE; + hardware->powerState = gcvTRUE; hardware->powerOffTimeout = gcdPOWEROFF_TIMEOUT; hardware->powerOffTime = 0; hardware->timeIdleThread = gcvNULL; 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 4a8e09c66774..7168f0ecea4c 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 @@ -1632,6 +1632,11 @@ gckGALDEVICE_Start( { /* Setup the ISR routine. */ gcmkONERROR(gckGALDEVICE_Setup_ISR_VG(Device)); + + /* Switch to SUSPEND power state. */ + gcmkONERROR(gckVGHARDWARE_SetPowerManagementState( + Device->kernels[gcvCORE_VG]->vg->hardware, gcvPOWER_OFF_BROADCAST + )); } gcmkFOOTER_NO();