summaryrefslogtreecommitdiff
path: root/package/ti-gfx/ti-gfx-newclkapi.patch
blob: 8f50c7ee1299e69fc0efafd994e9403b748bf54b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
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