From: Javier Viguera Date: Tue, 10 Nov 2015 17:45:37 +0100 Subject: [PATCH] mxc: gpu: use recommended values for minimum GPU frequency divisor Freescale recommends the following default minimum GPU frequency divisors depending on the CPU family: - 3 for Dual/Quad - 8 for DualLite/Solo Adapted for the external Vivante GPU driver from commit a790ad3 in linux git repository. Signed-off-by: Javier Viguera --- .../hal/os/linux/kernel/gc_hal_kernel_probe.c | 13 ++++++++++++- .../platform/freescale/gc_hal_kernel_platform_imx6q14.c | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/gc_hal_kernel_probe.c b/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/gc_hal_kernel_probe.c index 93a19d51303c..71c4ea3a33bd 100644 --- a/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/gc_hal_kernel_probe.c +++ b/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/gc_hal_kernel_probe.c @@ -54,6 +54,7 @@ #include +#include #include #include "gc_hal_kernel_linux.h" @@ -190,7 +191,7 @@ module_param(showArgs, int, 0644); static int mmu = 1; module_param(mmu, int, 0644); -static int gpu3DMinClock = 1; +static int gpu3DMinClock = 0; static int contiguousRequested = 0; @@ -1115,6 +1116,16 @@ static int __devinit gpu_probe(struct platform_device *pdev) _UpdateModuleParam(&moduleParam); } + /* If undefined, set Freescale recommended value. Else use the min freq. */ + if (gpu3DMinClock == 0) { + if (of_machine_is_compatible("fsl,imx6dl")) + gpu3DMinClock = 8; + else if (of_machine_is_compatible("fsl,imx6q")) + gpu3DMinClock = 3; + else + gpu3DMinClock = 1; + } + ret = drv_init(); if (!ret) diff --git a/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c b/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c index dc7c9769ab75..0eae8262c2ce 100644 --- a/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c +++ b/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6q14.c @@ -109,7 +109,7 @@ extern int unregister_thermal_notifier(struct notifier_block *nb); #define gcdFSL_CONTIGUOUS_SIZE (4 << 20) #endif -static int initgpu3DMinClock = 1; +static int initgpu3DMinClock = 0; module_param(initgpu3DMinClock, int, 0644); struct platform_device *pdevice;