1 // SPDX-License-Identifier: BSD-2-Clause
2 /*
3  * Copyright (c) 2014, Linaro Limited
4  */
5 
6 #include <kernel/tee_time.h>
7 #include <kernel/mutex.h>
8 
9 static TEE_Time prev;
10 
11 static struct mutex time_mu = MUTEX_INITIALIZER;
12 
tee_time_get_sys_time(TEE_Time * time)13 TEE_Result tee_time_get_sys_time(TEE_Time *time)
14 {
15 	TEE_Result res;
16 
17 	res = tee_time_get_ree_time(time);
18 	if (res != TEE_SUCCESS)
19 		return res;
20 
21 	mutex_lock(&time_mu);
22 	if (time->seconds < prev.seconds ||
23 		(time->seconds == prev.seconds &&
24 		 time->millis < prev.millis))
25 		*time = prev; /* REE time was rolled back */
26 	else
27 		prev = *time;
28 	mutex_unlock(&time_mu);
29 
30 	return res;
31 }
32 
tee_time_get_sys_time_protection_level(void)33 uint32_t tee_time_get_sys_time_protection_level(void)
34 {
35 	return 100;
36 }
37