blob: 69574c15f4367c9db9262db5fb8389e391f26de5 [file] [log] [blame]
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 */