From a521a7d0dc413455b37dc82c08b47a1fc3cc6d34 Mon Sep 17 00:00:00 2001 From: Gianfranco Mariotti <gianfranco.mariotti@seco.com> Date: Wed, 8 May 2024 19:27:12 +0200 Subject: [PATCH] [DRIVER] mxc: gpu-viv: thermal: raise lower limit for i.MX6 scaling On i.MX6 SoCs, raise lower limit for GPU scaling to avoid "IPU Warning" framebuffer crash --- .../hal/kernel/arch/gc_hal_kernel_hardware.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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 7ab103f8851b2b..6690172523acc9 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 @@ -62,6 +62,11 @@ #define _GC_OBJ_ZONE gcvZONE_HARDWARE +/* i.MX6: avoid "IPU Warning" framebuffer crash */ +#if defined(CONFIG_SOC_IMX6) +#define MIN_FSCALE_LIMIT_IPU 4 +#endif + /* There is a afifo that is receiving the “write-done†signal coming from AXI bus for each write request from GPU. In normal situation, these “write-done†are coming back in several cycles apart since the write request is generally multiple bursts. @@ -2304,6 +2309,10 @@ gckHARDWARE_Construct( hardware->minFscaleValue = 1; hardware->waitCount = 200; +#if defined(CONFIG_SOC_IMX6) + hardware->minFscaleValue = MIN_FSCALE_LIMIT_IPU; +#endif + if (_IsHardwareMatch(hardware, gcv600, 0x4653) || _IsHardwareMatch(hardware, gcv400, 0x4645)) { @@ -9371,6 +9380,10 @@ gckHARDWARE_SetMinFscaleValue( IN gctUINT MinFscaleValue ) { +#if defined(CONFIG_SOC_IMX6) + MinFscaleValue = MIN_FSCALE_LIMIT_IPU; +#endif + if (_IsHardwareMatch(Hardware, gcv600, 0x4653) || _IsHardwareMatch(Hardware, gcv400, 0x4645)) { -- GitLab