import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / gpu / mt8127 / mali / mali / timestamp-arm11-cc / mali_timestamp.h
1 /*
2 * This confidential and proprietary software may be used only as
3 * authorised by a licensing agreement from ARM Limited
4 * (C) COPYRIGHT 2010-2011, 2013 ARM Limited
5 * ALL RIGHTS RESERVED
6 * The entire notice above must be reproduced on all authorised
7 * copies and copies may only be made to the extent permitted
8 * by a licensing agreement from ARM Limited.
9 */
10
11 #ifndef __MALI_TIMESTAMP_H__
12 #define __MALI_TIMESTAMP_H__
13
14 #include "mali_osk.h"
15
16 MALI_STATIC_INLINE _mali_osk_errcode_t _mali_timestamp_reset(void)
17 {
18 /*
19 * reset counters and overflow flags
20 */
21
22 u32 mask = (1 << 0) | /* enable all three counters */
23 (0 << 1) | /* reset both Count Registers to 0x0 */
24 (1 << 2) | /* reset the Cycle Counter Register to 0x0 */
25 (0 << 3) | /* 1 = Cycle Counter Register counts every 64th processor clock cycle */
26 (0 << 4) | /* Count Register 0 interrupt enable */
27 (0 << 5) | /* Count Register 1 interrupt enable */
28 (0 << 6) | /* Cycle Counter interrupt enable */
29 (0 << 8) | /* Count Register 0 overflow flag (clear or write, flag on read) */
30 (0 << 9) | /* Count Register 1 overflow flag (clear or write, flag on read) */
31 (1 << 10); /* Cycle Counter Register overflow flag (clear or write, flag on read) */
32
33 __asm__ __volatile__ ("MCR p15, 0, %0, c15, c12, 0" : : "r" (mask) );
34
35 return _MALI_OSK_ERR_OK;
36 }
37
38 MALI_STATIC_INLINE u64 _mali_timestamp_get(void)
39 {
40 u32 result;
41
42 /* this is for the clock cycles */
43 __asm__ __volatile__ ("MRC p15, 0, %0, c15, c12, 1" : "=r" (result));
44
45 return (u64)result;
46 }
47
48 #endif /* __MALI_TIMESTAMP_H__ */