meta-digi/meta-digi-arm/recipes-kernel/kernel-modules/kernel-module-imx-gpu-viv-6.../0001-mxc-gpu-use-recommende...

72 lines
2.7 KiB
Diff

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_driver.c | 14 +++++++++++++-
.../platform/freescale/gc_hal_kernel_platform_imx6.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_driver.c b/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/gc_hal_kernel_driver.c
index 816aae0..15a8753 100644
--- a/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/gc_hal_kernel_driver.c
+++ b/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/gc_hal_kernel_driver.c
@@ -54,6 +54,7 @@
#include <linux/device.h>
+#include <linux/of.h>
#include <linux/slab.h>
#include <linux/miscdevice.h>
@@ -199,7 +200,7 @@ static uint type = 0;
module_param(type, uint, 0664);
MODULE_PARM_DESC(type, "0 - Char Driver (Default), 1 - Misc Driver");
-static int gpu3DMinClock = 1;
+static int gpu3DMinClock = 0;
static int contiguousRequested = 0;
@@ -1138,6 +1139,17 @@ static int __devinit gpu_probe(struct platform_device *pdev)
}
}
else {
+ /* 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") ||
+ of_machine_is_compatible("fsl,imx6qp"))
+ gpu3DMinClock = 3;
+ else
+ gpu3DMinClock = 1;
+ }
+
ret = drv_init();
if (!ret) {
platform_set_drvdata(pdev, galDevice);
diff --git a/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6.c b/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6.c
index 89706ec..65a54e2 100644
--- a/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6.c
+++ b/kernel-module-imx-gpu-viv-src/hal/os/linux/kernel/platform/freescale/gc_hal_kernel_platform_imx6.c
@@ -123,7 +123,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;