summaryrefslogtreecommitdiff
path: root/drivers/mxc/gpu-viv
diff options
context:
space:
mode:
authorXianzhong <xianzhong.li@nxp.com>2018-04-26 04:00:09 +0800
committerLeonard Crestez <leonard.crestez@nxp.com>2018-08-24 12:41:33 +0300
commitfab785aea33b6bab760425c07ff6e60ba56839ef (patch)
tree78614f02c9af320e890f037a1274a590b10ec066 /drivers/mxc/gpu-viv
parent144c2dc76402a02428d50b2b302f2b82ad95995c (diff)
MGS-3848-4 [#imx-854] correct hw-event synchronization between pm and other threads
When pm is running power ON to OFF (not broadcast), gckCOMMAND_Stall is called for synchronization. But it does not blocks more events. Signed-off-by: Xianzhong <xianzhong.li@nxp.com>
Diffstat (limited to 'drivers/mxc/gpu-viv')
-rw-r--r--drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c b/drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c
index e67e2f59f6dc..eb081cc7a890 100644
--- a/drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c
+++ b/drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c
@@ -8009,6 +8009,18 @@ gckHARDWARE_SetPowerManagementState(
{
/* Wait to finish all commands. */
gcmkONERROR(gckCOMMAND_Stall(command, gcvTRUE));
+
+ for (;;)
+ {
+ gcmkONERROR(gckHARDWARE_QueryIdle(Hardware, &idle));
+
+ if (idle)
+ {
+ break;
+ }
+
+ gcmkVERIFY_OK(gckOS_Delay(Hardware->os, 1));
+ }
}
}