From: Javier Viguera <javier.viguera@digi.com>
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 <javier.viguera@digi.com>
---
 .../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 <linux/device.h>
+#include <linux/of.h>
 #include <linux/slab.h>
 
 #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;
