aboutsummaryrefslogtreecommitdiffstats
path: root/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0014-linux-mali_-timer-Get-rid-of-init_timer.patch
blob: a7c1d5cc695bf7ff721ac2ad16a49aa6d1b28540 (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
144
145
146
147
148
149
150
151
152
153
154
155
156
From b6936450484b5aa9dd2438367a907af020341d1d Mon Sep 17 00:00:00 2001
From: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
Date: Thu, 6 Dec 2018 13:30:44 -0800
Subject: [PATCH 3/3] linux: mali_*timer: Get rid of init_timer

kernel 4.19 got rid of ancient init_timer. Hence, replace it with
timer_setup API. For more information refer kernel commit
7eeb6b893bd28c68b6d664de1d3120e49b855cdb

Signed-off-by: Madhurkiran Harikrishnan <madhurkiran.harikrishnan@xilinx.com>
Reviewed-by: Hyun Kwon <hyun.kwon@xilinx.com>
Upstream Status: Pending
---
 driver/src/devicedrv/mali/common/mali_control_timer.c |  6 ++++++
 driver/src/devicedrv/mali/common/mali_group.c         |  6 ++++++
 driver/src/devicedrv/mali/common/mali_osk.h           | 15 ++++++++++++++-
 driver/src/devicedrv/mali/linux/mali_osk_timers.c     | 15 ++++++++++++++-
 4 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/driver/src/devicedrv/mali/common/mali_control_timer.c b/driver/src/devicedrv/mali/common/mali_control_timer.c
index 1296ffe..d24b934 100644
--- common/mali_control_timer.c
+++ b/common/mali_control_timer.c
@@ -65,11 +65,17 @@ _mali_osk_errcode_t mali_control_timer_init(void)
 		}
 	}
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
+	mali_control_timer = _mali_osk_timer_init(mali_control_timer_callback);
+#else
 	mali_control_timer = _mali_osk_timer_init();
+#endif
 	if (NULL == mali_control_timer) {
 		return _MALI_OSK_ERR_FAULT;
 	}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
 	_mali_osk_timer_setcallback(mali_control_timer, mali_control_timer_callback, NULL);
+#endif
 
 	return _MALI_OSK_ERR_OK;
 }
diff --git a/driver/src/devicedrv/mali/common/mali_group.c b/driver/src/devicedrv/mali/common/mali_group.c
index 5c7b3f4..1702e9a 100644
--- common/mali_group.c
+++ b/common/mali_group.c
@@ -65,9 +65,15 @@ struct mali_group *mali_group_create(struct mali_l2_cache_core *core,
 
 	group = _mali_osk_calloc(1, sizeof(struct mali_group));
 	if (NULL != group) {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
+		group->timeout_timer = _mali_osk_timer_init(mali_group_timeout);
+#else
 		group->timeout_timer = _mali_osk_timer_init();
+#endif
 		if (NULL != group->timeout_timer) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
 			_mali_osk_timer_setcallback(group->timeout_timer, mali_group_timeout, (void *)group);
+#endif
 
 			group->l2_cache_core[0] = core;
 			_mali_osk_list_init(&group->group_list);
diff --git a/driver/src/devicedrv/mali/common/mali_osk.h b/driver/src/devicedrv/mali/common/mali_osk.h
index a501778..fe93d79 100644
--- common/mali_osk.h
+++ b/common/mali_osk.h
@@ -947,7 +947,17 @@ _mali_osk_errcode_t _mali_osk_notification_queue_dequeue(_mali_osk_notification_
  * asked for.
  *
  * @{ */
-
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
+/** @brief Initialize a timer
+ *
+ * Allocates resources for a new timer, and initializes them. This does not
+ * start the timer.
+ *
+ * @param callback Function to call when timer expires
+ * @return a pointer to the allocated timer object, or NULL on failure.
+ */
+_mali_osk_timer_t *_mali_osk_timer_init(_mali_osk_timer_callback_t callback);
+#else
 /** @brief Initialize a timer
  *
  * Allocates resources for a new timer, and initializes them. This does not
@@ -956,6 +966,7 @@ _mali_osk_errcode_t _mali_osk_notification_queue_dequeue(_mali_osk_notification_
  * @return a pointer to the allocated timer object, or NULL on failure.
  */
 _mali_osk_timer_t *_mali_osk_timer_init(void);
+#endif
 
 /** @brief Start a timer
  *
@@ -1034,6 +1045,7 @@ void _mali_osk_timer_del_async(_mali_osk_timer_t *tim);
  */
 mali_bool _mali_osk_timer_pending(_mali_osk_timer_t *tim);
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
 /** @brief Set a timer's callback parameters.
  *
  * This must be called at least once before a timer is started/modified.
@@ -1047,6 +1059,7 @@ mali_bool _mali_osk_timer_pending(_mali_osk_timer_t *tim);
  * @param data Function-specific data to supply to the function on expiry.
  */
 void _mali_osk_timer_setcallback(_mali_osk_timer_t *tim, _mali_osk_timer_callback_t callback, void *data);
+#endif
 
 /** @brief Terminate a timer, and deallocate resources.
  *
diff --git a/driver/src/devicedrv/mali/linux/mali_osk_timers.c b/driver/src/devicedrv/mali/linux/mali_osk_timers.c
index e5d7238..f9b5a86 100644
--- linux/mali_osk_timers.c
+++ b/linux/mali_osk_timers.c
@@ -21,13 +21,24 @@
 struct _mali_osk_timer_t_struct {
 	struct timer_list timer;
 };
-
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
+typedef void (*timer_timeout_function_t)(struct timer_list *);
+#else
 typedef void (*timer_timeout_function_t)(unsigned long);
+#endif
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
+_mali_osk_timer_t *_mali_osk_timer_init(_mali_osk_timer_callback_t callback)
+#else
 _mali_osk_timer_t *_mali_osk_timer_init(void)
+#endif
 {
 	_mali_osk_timer_t *t = (_mali_osk_timer_t *)kmalloc(sizeof(_mali_osk_timer_t), GFP_KERNEL);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
+	if (NULL != t) timer_setup(&t->timer, (timer_timeout_function_t)callback, 0);
+#else
 	if (NULL != t) init_timer(&t->timer);
+#endif
 	return t;
 }
 
@@ -62,12 +73,14 @@ mali_bool _mali_osk_timer_pending(_mali_osk_timer_t *tim)
 	return 1 == timer_pending(&(tim->timer));
 }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
 void _mali_osk_timer_setcallback(_mali_osk_timer_t *tim, _mali_osk_timer_callback_t callback, void *data)
 {
 	MALI_DEBUG_ASSERT_POINTER(tim);
 	tim->timer.data = (unsigned long)data;
 	tim->timer.function = (timer_timeout_function_t)callback;
 }
+#endif
 
 void _mali_osk_timer_term(_mali_osk_timer_t *tim)
 {
-- 
2.7.4