summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Stultz <john.stultz@linaro.org>2018-03-30 14:17:42 -0700
committerYongqin Liu <yongqin.liu@linaro.org>2020-04-08 11:58:43 +0800
commit43594ba54e7735426769d8a3ff7aa8ee6bcf2526 (patch)
tree5719458c88a833117b8bf298ffe593c1e1bc1cb0
parent718a467d11f4644fdbbef1ed8a562b041b4ab278 (diff)
downloadhikey-modules-43594ba54e7735426769d8a3ff7aa8ee6bcf2526.tar.gz
MALI: Timer api fixups for 4.15-rc
As of 4.15-rc, the timer api has changed, so this fixes up the usage in the mali driver. Signed-off-by: John Stultz <john.stultz@linaro.org>
-rw-r--r--utgard/common/mali_control_timer.c2
-rw-r--r--utgard/common/mali_group.c8
-rw-r--r--utgard/common/mali_osk_types.h8
-rw-r--r--utgard/linux/mali_osk_timers.c8
4 files changed, 14 insertions, 12 deletions
diff --git a/utgard/common/mali_control_timer.c b/utgard/common/mali_control_timer.c
index 1296ffe..bfe975f 100644
--- a/utgard/common/mali_control_timer.c
+++ b/utgard/common/mali_control_timer.c
@@ -28,7 +28,7 @@ void mali_control_timer_add(u32 timeout)
_mali_osk_timer_add(mali_control_timer, _mali_osk_time_mstoticks(timeout));
}
-static void mali_control_timer_callback(void *arg)
+static void mali_control_timer_callback(struct timer_list *t)
{
if (mali_utilization_enabled()) {
struct mali_gpu_utilization_data *util_data = NULL;
diff --git a/utgard/common/mali_group.c b/utgard/common/mali_group.c
index e9005e1..4a43753 100644
--- a/utgard/common/mali_group.c
+++ b/utgard/common/mali_group.c
@@ -44,7 +44,7 @@ int mali_max_job_runtime = MALI_MAX_JOB_RUNTIME_DEFAULT;
static void mali_group_bottom_half_mmu(void *data);
static void mali_group_bottom_half_gp(void *data);
static void mali_group_bottom_half_pp(void *data);
-static void mali_group_timeout(void *data);
+static void mali_group_timeout(struct timer_list *t);
static void mali_group_reset_pp(struct mali_group *group);
static void mali_group_reset_mmu(struct mali_group *group);
@@ -1761,9 +1761,11 @@ static void mali_group_bottom_half_pp(void *data)
0xFFFFFFFF, 0);
}
-static void mali_group_timeout(void *data)
+static void mali_group_timeout(struct timer_list *t)
{
- struct mali_group *group = (struct mali_group *)data;
+ _mali_osk_timer_t *tim = container_of(t, _mali_osk_timer_t, timer);
+ struct mali_group *group = container_of(&tim, struct mali_group, timeout_timer);
+
MALI_DEBUG_ASSERT_POINTER(group);
MALI_DEBUG_PRINT(2, ("Group: timeout handler for %s at %u\n",
diff --git a/utgard/common/mali_osk_types.h b/utgard/common/mali_osk_types.h
index 03161cf..c9d0fec 100644
--- a/utgard/common/mali_osk_types.h
+++ b/utgard/common/mali_osk_types.h
@@ -50,6 +50,7 @@ typedef unsigned long long u64;
#include <linux/types.h>
#endif
+#include <linux/timer.h>
/** @brief Mali Boolean type which uses MALI_TRUE and MALI_FALSE
*/
typedef unsigned long mali_bool;
@@ -395,7 +396,12 @@ typedef struct _mali_osk_notification_t_struct {
* by any callers of _mali_osk_timer_del(). Otherwise, a deadlock may occur.
*
* @param arg Function-specific data */
-typedef void (*_mali_osk_timer_callback_t)(void *arg);
+typedef void (*_mali_osk_timer_callback_t)(struct timer_list *t);
+
+
+struct _mali_osk_timer_t_struct {
+ struct timer_list timer;
+};
/** @brief Private type for Timer Callback Objects */
typedef struct _mali_osk_timer_t_struct _mali_osk_timer_t;
diff --git a/utgard/linux/mali_osk_timers.c b/utgard/linux/mali_osk_timers.c
index e5d7238..54bb75e 100644
--- a/utgard/linux/mali_osk_timers.c
+++ b/utgard/linux/mali_osk_timers.c
@@ -18,16 +18,11 @@
#include "mali_osk.h"
#include "mali_kernel_common.h"
-struct _mali_osk_timer_t_struct {
- struct timer_list timer;
-};
-
typedef void (*timer_timeout_function_t)(unsigned long);
_mali_osk_timer_t *_mali_osk_timer_init(void)
{
_mali_osk_timer_t *t = (_mali_osk_timer_t *)kmalloc(sizeof(_mali_osk_timer_t), GFP_KERNEL);
- if (NULL != t) init_timer(&t->timer);
return t;
}
@@ -65,8 +60,7 @@ mali_bool _mali_osk_timer_pending(_mali_osk_timer_t *tim)
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;
+ timer_setup(&tim->timer, callback, 0);
}
void _mali_osk_timer_term(_mali_osk_timer_t *tim)