/*
 * Copyright (C) 2010-2012, 2014, 2016 ARM Limited. All rights reserved.
 * 
 * This program is free software and is provided to you under the terms of the GNU General Public License version 2
 * as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence.
 * 
 * A copy of the licence is included with the program, and can also be obtained from Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

#ifndef __MALI_CONTROL_TIMER_H__
#define __MALI_CONTROL_TIMER_H__

#include "mali_osk.h"

_mali_osk_errcode_t mali_control_timer_init(void);

void mali_control_timer_term(void);

mali_bool mali_control_timer_resume(u64 time_now);

void mali_control_timer_suspend(mali_bool suspend);
void mali_control_timer_pause(void);

void mali_control_timer_add(u32 timeout);

#endif /* __MALI_CONTROL_TIMER_H__ */

