.. | .. |
---|
65 | 65 | |
---|
66 | 66 | group = _mali_osk_calloc(1, sizeof(struct mali_group)); |
---|
67 | 67 | if (NULL != group) { |
---|
68 | | - _mali_osk_timer_init(&group->timeout_timer, mali_group_timeout); |
---|
| 68 | + group->timeout_timer = _mali_osk_timer_init(mali_group_timeout); |
---|
| 69 | + if (NULL != group->timeout_timer) { |
---|
| 70 | + _mali_osk_timer_setcallback(group->timeout_timer, mali_group_timeout, (void *)group); |
---|
69 | 71 | |
---|
70 | | - group->l2_cache_core[0] = core; |
---|
71 | | - _mali_osk_list_init(&group->group_list); |
---|
72 | | - _mali_osk_list_init(&group->executor_list); |
---|
73 | | - _mali_osk_list_init(&group->pm_domain_list); |
---|
74 | | - group->bcast_core = bcast; |
---|
75 | | - group->dlbu_core = dlbu; |
---|
| 72 | + group->l2_cache_core[0] = core; |
---|
| 73 | + _mali_osk_list_init(&group->group_list); |
---|
| 74 | + _mali_osk_list_init(&group->executor_list); |
---|
| 75 | + _mali_osk_list_init(&group->pm_domain_list); |
---|
| 76 | + group->bcast_core = bcast; |
---|
| 77 | + group->dlbu_core = dlbu; |
---|
76 | 78 | |
---|
77 | | - /* register this object as a part of the correct power domain */ |
---|
78 | | - if ((NULL != core) || (NULL != dlbu) || (NULL != bcast)) |
---|
79 | | - group->pm_domain = mali_pm_register_group(domain_index, group); |
---|
| 79 | + /* register this object as a part of the correct power domain */ |
---|
| 80 | + if ((NULL != core) || (NULL != dlbu) || (NULL != bcast)) |
---|
| 81 | + group->pm_domain = mali_pm_register_group(domain_index, group); |
---|
80 | 82 | |
---|
81 | | - mali_global_groups[mali_global_num_groups] = group; |
---|
82 | | - mali_global_num_groups++; |
---|
| 83 | + mali_global_groups[mali_global_num_groups] = group; |
---|
| 84 | + mali_global_num_groups++; |
---|
83 | 85 | |
---|
84 | | - return group; |
---|
| 86 | + return group; |
---|
| 87 | + } |
---|
| 88 | + _mali_osk_free(group); |
---|
85 | 89 | } |
---|
86 | 90 | |
---|
87 | 91 | return NULL; |
---|
.. | .. |
---|
143 | 147 | } |
---|
144 | 148 | } |
---|
145 | 149 | |
---|
146 | | - _mali_osk_timer_del(&group->timeout_timer); |
---|
| 150 | + if (NULL != group->timeout_timer) { |
---|
| 151 | + _mali_osk_timer_del(group->timeout_timer); |
---|
| 152 | + _mali_osk_timer_term(group->timeout_timer); |
---|
| 153 | + } |
---|
147 | 154 | |
---|
148 | 155 | if (NULL != group->bottom_half_work_mmu) { |
---|
149 | 156 | _mali_osk_wq_delete_work(group->bottom_half_work_mmu); |
---|
.. | .. |
---|
872 | 879 | |
---|
873 | 880 | /* Setup SW timer and record start time */ |
---|
874 | 881 | group->start_time = _mali_osk_time_tickcount(); |
---|
875 | | - _mali_osk_timer_mod(&group->timeout_timer, _mali_osk_time_mstoticks(mali_max_job_runtime)); |
---|
| 882 | + _mali_osk_timer_mod(group->timeout_timer, _mali_osk_time_mstoticks(mali_max_job_runtime)); |
---|
876 | 883 | |
---|
877 | 884 | MALI_DEBUG_PRINT(4, ("Group: Started GP job 0x%08X on group %s at %u\n", |
---|
878 | 885 | job, |
---|
.. | .. |
---|
1027 | 1034 | |
---|
1028 | 1035 | /* Setup SW timer and record start time */ |
---|
1029 | 1036 | group->start_time = _mali_osk_time_tickcount(); |
---|
1030 | | - _mali_osk_timer_mod(&group->timeout_timer, _mali_osk_time_mstoticks(mali_max_job_runtime)); |
---|
| 1037 | + _mali_osk_timer_mod(group->timeout_timer, _mali_osk_time_mstoticks(mali_max_job_runtime)); |
---|
1031 | 1038 | |
---|
1032 | 1039 | MALI_DEBUG_PRINT(4, ("Group: Started PP job 0x%08X part %u/%u on group %s at %u\n", |
---|
1033 | 1040 | job, sub_job + 1, |
---|
.. | .. |
---|
1117 | 1124 | MALI_DEBUG_ASSERT(MALI_TRUE == group->is_working); |
---|
1118 | 1125 | |
---|
1119 | 1126 | /* Stop/clear the timeout timer. */ |
---|
1120 | | - _mali_osk_timer_del_async(&group->timeout_timer); |
---|
| 1127 | + _mali_osk_timer_del_async(group->timeout_timer); |
---|
1121 | 1128 | |
---|
1122 | 1129 | if (NULL != group->pp_running_job) { |
---|
1123 | 1130 | |
---|
.. | .. |
---|
1230 | 1237 | MALI_DEBUG_ASSERT(MALI_TRUE == group->is_working); |
---|
1231 | 1238 | |
---|
1232 | 1239 | /* Stop/clear the timeout timer. */ |
---|
1233 | | - _mali_osk_timer_del_async(&group->timeout_timer); |
---|
| 1240 | + _mali_osk_timer_del_async(group->timeout_timer); |
---|
1234 | 1241 | |
---|
1235 | 1242 | if (NULL != group->gp_running_job) { |
---|
1236 | 1243 | mali_gp_update_performance_counters(group->gp_core, group->gp_running_job); |
---|
.. | .. |
---|
1773 | 1780 | |
---|
1774 | 1781 | static void mali_group_timeout(void *data) |
---|
1775 | 1782 | { |
---|
1776 | | - _mali_osk_timer_t *timer = (_mali_osk_timer_t *)data; |
---|
1777 | | - struct mali_group *group = container_of(timer, struct mali_group, timeout_timer); |
---|
| 1783 | + struct mali_group *group = (struct mali_group *)data; |
---|
1778 | 1784 | MALI_DEBUG_ASSERT_POINTER(group); |
---|
1779 | 1785 | |
---|
1780 | 1786 | MALI_DEBUG_PRINT(2, ("Group: timeout handler for %s at %u\n", |
---|