--- /dev/null
+This patch adjusts the omap3630 portion of the powervr driver to use the new
+clk kernel api.
+
+Signed-off-by: Spenser Gilliland <spenser@gillilanding.com>
+[yann.morin.1998@free.fr: rebased ontop of 5.01.00.01]
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+diff -durN ti-gfx-5_01_00_01.orig/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c ti-gfx-5_01_00_01/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c
+--- ti-gfx-5_01_00_01.orig/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c 2013-12-23 15:44:20.000000000 +0100
++++ ti-gfx-5_01_00_01/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c 2014-02-26 19:17:39.829571846 +0100
+@@ -182,6 +182,49 @@
+ @Return PVRSRV_ERROR
+
+ ******************************************************************************/
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
++int clk_disable_unprepare(struct clk *clk)
++{
++ return clk_disable(clk);
++}
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
++int clk_disable_unprepare(struct clk *clk)
++{
++ res = clk_disable(clk);
++ if (res < 0)
++ return res;
++
++ res = clk_unprepare(clk);
++ if (ret < 0)
++ return res;
++
++ return 0;
++}
++#endif
++
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
++int clk_prepare_enable(struct clk *clk)
++{
++ return clk_enable(clk);
++}
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
++int clk_prepare_enable(struct clk *clk)
++{
++ res = clk_prepare(clk);
++ if (ret < 0)
++ return res;
++
++ res = clk_enable(clk);
++ if (res < 0) {
++ clk_unprepare(clk);
++ return res;
++ }
++
++ return 0;
++}
++#endif
++
+ PVRSRV_ERROR EnableSGXClocks(SYS_DATA *psSysData)
+ {
+ #if !defined(NO_HARDWARE)
+@@ -198,7 +241,7 @@
+
+ #if !defined(PM_RUNTIME_SUPPORT)
+ PVR_DPF((PVR_DBG_MESSAGE, "EnableSGXClocks: Enabling SGX Clocks"));
+- res=clk_enable(psSysSpecData->psSGX_FCK);
++ res=clk_prepare_enable(psSysSpecData->psSGX_FCK);
+ if (res < 0)
+ {
+ PVR_DPF((PVR_DBG_ERROR, "EnableSGXClocks: Couldn't enable SGX functional clock (%d)", res));
+@@ -324,7 +367,7 @@
+
+ PVR_DPF((PVR_DBG_MESSAGE, "DisableSGXClocks: Disabling SGX Clocks"));
+ #if !defined(PM_RUNTIME_SUPPORT)
+- clk_disable(psSysSpecData->psSGX_FCK);
++ clk_disable_unprepare(psSysSpecData->psSGX_FCK);
+ #endif
+ SysDisableSGXInterrupts(psSysData);
+
+@@ -540,14 +583,14 @@
+ rate = clk_get_rate(psSysSpecData->psGPT11_FCK);
+ PVR_TRACE(("GPTIMER11 clock is %dMHz", HZ_TO_MHZ(rate)));
+
+- res = clk_enable(psSysSpecData->psGPT11_FCK);
++ res = clk_prepare_enable(psSysSpecData->psGPT11_FCK);
+ if (res < 0)
+ {
+ PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't enable GPTIMER11 functional clock (%d)", res));
+ goto ExitError;
+ }
+
+- res = clk_enable(psSysSpecData->psGPT11_ICK);
++ res = clk_prepare_enable(psSysSpecData->psGPT11_ICK);
+ if (res < 0)
+ {
+ PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't enable GPTIMER11 interface clock (%d)", res));
+@@ -610,9 +653,9 @@
+
+ ExitDisableGPT11ICK:
+ #if defined(PVR_OMAP4_TIMING_PRCM)
+- clk_disable(psSysSpecData->psGPT11_ICK);
++ clk_disable_unprepare(psSysSpecData->psGPT11_ICK);
+ ExitDisableGPT11FCK:
+- clk_disable(psSysSpecData->psGPT11_FCK);
++ clk_disable_unprepare(psSysSpecData->psGPT11_FCK);
+ ExitError:
+ #endif /* defined(PVR_OMAP4_TIMING_PRCM) */
+ eError = PVRSRV_ERROR_CLOCK_REQUEST_FAILED;
+@@ -664,9 +707,9 @@
+ psSysSpecData->sTimerRegPhysBase.uiAddr = 0;
+ #endif
+ #if defined(PVR_OMAP4_TIMING_PRCM)
+- clk_disable(psSysSpecData->psGPT11_ICK);
++ clk_disable_unprepare(psSysSpecData->psGPT11_ICK);
+
+- clk_disable(psSysSpecData->psGPT11_FCK);
++ clk_disable_unprepare(psSysSpecData->psGPT11_FCK);
+ #endif /* defined(PVR_OMAP4_TIMING_PRCM) */
+ }
+ #endif /* PVR_OMAP_USE_DM_TIMER_API */
+++ /dev/null
-This patch adjusts the omap3630 portion of the powervr driver to use the new
-clk kernel api.
-
-Signed-off-by: Spenser Gilliland <spenser@gillilanding.com>
-----
-Index: ti-gfx-4_09_00_01/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c
-===================================================================
---- ti-gfx-4_09_00_01.orig/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c 2013-06-28 13:44:06.352701522 -0500
-+++ ti-gfx-4_09_00_01/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c 2013-06-28 13:45:12.364702727 -0500
-@@ -153,6 +153,49 @@
- psTimingInfo->ui32ActivePowManLatencyms = SYS_SGX_ACTIVE_POWER_LATENCY_MS;
- }
-
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
-+int clk_disable_unprepare(struct clk *clk)
-+{
-+ return clk_disable(clk);
-+}
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
-+int clk_disable_unprepare(struct clk *clk)
-+{
-+ res = clk_disable(clk);
-+ if (res < 0)
-+ return res;
-+
-+ res = clk_unprepare(clk);
-+ if (ret < 0)
-+ return res;
-+
-+ return 0;
-+}
-+#endif
-+
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
-+int clk_prepare_enable(struct clk *clk)
-+{
-+ return clk_enable(clk);
-+}
-+#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
-+int clk_prepare_enable(struct clk *clk)
-+{
-+ res = clk_prepare(clk);
-+ if (ret < 0)
-+ return res;
-+
-+ res = clk_enable(clk);
-+ if (res < 0) {
-+ clk_unprepare(clk);
-+ return res;
-+ }
-+
-+ return 0;
-+}
-+#endif
-+
- PVRSRV_ERROR EnableSGXClocks(SYS_DATA *psSysData)
- {
- #if !defined(NO_HARDWARE)
-@@ -167,19 +210,19 @@
-
- PVR_DPF((PVR_DBG_MESSAGE, "EnableSGXClocks: Enabling SGX Clocks"));
-
-- res=clk_enable(psSysSpecData->psSGX_FCK);
-+ res=clk_prepare_enable(psSysSpecData->psSGX_FCK);
- if (res < 0)
- {
- PVR_DPF((PVR_DBG_ERROR, "EnableSGXClocks: Couldn't enable SGX functional clock (%d)", res));
- return PVRSRV_ERROR_UNABLE_TO_ENABLE_CLOCK;
- }
-
-- res=clk_enable(psSysSpecData->psSGX_ICK);
-+ res=clk_prepare_enable(psSysSpecData->psSGX_ICK);
- if (res < 0)
- {
- PVR_DPF((PVR_DBG_ERROR, "EnableSGXClocks: Couldn't enable SGX interface clock (%d)", res));
-
-- clk_disable(psSysSpecData->psSGX_FCK);
-+ clk_disable_unprepare(psSysSpecData->psSGX_FCK);
- return PVRSRV_ERROR_UNABLE_TO_ENABLE_CLOCK;
- }
-
-@@ -233,7 +276,6 @@
- return PVRSRV_OK;
- }
-
--
- IMG_VOID DisableSGXClocks(SYS_DATA *psSysData)
- {
- #if !defined(NO_HARDWARE)
-@@ -246,9 +288,9 @@
-
- PVR_DPF((PVR_DBG_MESSAGE, "DisableSGXClocks: Disabling SGX Clocks"));
-
-- clk_disable(psSysSpecData->psSGX_FCK);
-+ clk_disable_unprepare(psSysSpecData->psSGX_FCK);
-
-- clk_disable(psSysSpecData->psSGX_ICK);
-+ clk_disable_unprepare(psSysSpecData->psSGX_ICK);
-
- // SysDisableSGXInterrupts(psSysData);
-
-@@ -374,14 +416,14 @@
- rate = clk_get_rate(psSysSpecData->psGPT11_FCK);
- PVR_TRACE(("GPTIMER11 clock is %dMHz", HZ_TO_MHZ(rate)));
-
-- res = clk_enable(psSysSpecData->psGPT11_FCK);
-+ res = clk_prepare_enable(psSysSpecData->psGPT11_FCK);
- if (res < 0)
- {
- PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't enable GPTIMER11 functional clock (%d)", res));
- goto ExitError;
- }
-
-- res = clk_enable(psSysSpecData->psGPT11_ICK);
-+ res = clk_prepare_enable(psSysSpecData->psGPT11_ICK);
- if (res < 0)
- {
- PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't enable GPTIMER11 interface clock (%d)", res));
-@@ -444,9 +486,9 @@
-
- ExitDisableGPT11ICK:
- #if defined(PVR_OMAP3_TIMING_PRCM)
-- clk_disable(psSysSpecData->psGPT11_ICK);
-+ clk_disable_unprepare(psSysSpecData->psGPT11_ICK);
- ExitDisableGPT11FCK:
-- clk_disable(psSysSpecData->psGPT11_FCK);
-+ clk_disable_unprepare(psSysSpecData->psGPT11_FCK);
- ExitError:
- #endif
- eError = PVRSRV_ERROR_CLOCK_REQUEST_FAILED;
-@@ -490,9 +532,9 @@
- #endif
-
- #if defined(PVR_OMAP3_TIMING_PRCM)
-- clk_disable(psSysSpecData->psGPT11_ICK);
-+ clk_disable_unprepare(psSysSpecData->psGPT11_ICK);
-
-- clk_disable(psSysSpecData->psGPT11_FCK);
-+ clk_disable_unprepare(psSysSpecData->psGPT11_FCK);
- #endif
- }
- #endif