]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00252727-2 [GPU]Power on VG core if there is only VG core in SoC
authorLoren Huang <b02279@freescale.com>
Tue, 5 Mar 2013 07:44:28 +0000 (15:44 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:35:55 +0000 (08:35 +0200)
-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 <b02279@freescale.com>
Acked-by: Lily Zhang
drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c
drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_device.c

index 4be7d91e94370f7cf8ae4c13bbf884406225f382..4a6010dd1c9aa82545627e00e617315782906479 100644 (file)
@@ -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;
index 4a8e09c667749bcca0b083886b64aa9a336f8c83..7168f0ecea4c622d1fd9c024cec4d3d9a92da765 100644 (file)
@@ -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();