MALI: utgard: upgrade DDK to r6p1-01rel0
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / arm / mali400 / mali / linux / mali_osk_timers.c
1 /*
2  * Copyright (C) 2010-2014, 2016 ARM Limited. All rights reserved.
3  * 
4  * This program is free software and is provided to you under the terms of the GNU General Public License version 2
5  * as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence.
6  * 
7  * A copy of the licence is included with the program, and can also be obtained from Free Software
8  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
9  */
10
11 /**
12  * @file mali_osk_timers.c
13  * Implementation of the OS abstraction layer for the kernel device driver
14  */
15
16 #include <linux/timer.h>
17 #include <linux/slab.h>
18 #include "mali_osk.h"
19 #include "mali_kernel_common.h"
20
21 struct _mali_osk_timer_t_struct {
22         struct timer_list timer;
23 };
24
25 typedef void (*timer_timeout_function_t)(unsigned long);
26
27 _mali_osk_timer_t *_mali_osk_timer_init(void)
28 {
29         _mali_osk_timer_t *t = (_mali_osk_timer_t *)kmalloc(sizeof(_mali_osk_timer_t), GFP_KERNEL);
30         if (NULL != t) init_timer(&t->timer);
31         return t;
32 }
33
34 void _mali_osk_timer_add(_mali_osk_timer_t *tim, unsigned long ticks_to_expire)
35 {
36         MALI_DEBUG_ASSERT_POINTER(tim);
37         tim->timer.expires = jiffies + ticks_to_expire;
38         add_timer(&(tim->timer));
39 }
40
41 void _mali_osk_timer_mod(_mali_osk_timer_t *tim, unsigned long ticks_to_expire)
42 {
43         MALI_DEBUG_ASSERT_POINTER(tim);
44         mod_timer(&(tim->timer), jiffies + ticks_to_expire);
45 }
46
47 void _mali_osk_timer_del(_mali_osk_timer_t *tim)
48 {
49         MALI_DEBUG_ASSERT_POINTER(tim);
50         del_timer_sync(&(tim->timer));
51 }
52
53 void _mali_osk_timer_del_async(_mali_osk_timer_t *tim)
54 {
55         MALI_DEBUG_ASSERT_POINTER(tim);
56         del_timer(&(tim->timer));
57 }
58
59 mali_bool _mali_osk_timer_pending(_mali_osk_timer_t *tim)
60 {
61         MALI_DEBUG_ASSERT_POINTER(tim);
62         return 1 == timer_pending(&(tim->timer));
63 }
64
65 void _mali_osk_timer_setcallback(_mali_osk_timer_t *tim, _mali_osk_timer_callback_t callback, void *data)
66 {
67         MALI_DEBUG_ASSERT_POINTER(tim);
68         tim->timer.data = (unsigned long)data;
69         tim->timer.function = (timer_timeout_function_t)callback;
70 }
71
72 void _mali_osk_timer_term(_mali_osk_timer_t *tim)
73 {
74         MALI_DEBUG_ASSERT_POINTER(tim);
75         kfree(tim);
76 }