1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright (C) 2017 Etnaviv Project
4  * Copyright (C) 2017 Zodiac Inflight Innovations
5  */
6 
7 #ifndef __ETNAVIV_PERFMON_H__
8 #define __ETNAVIV_PERFMON_H__
9 
10 struct etnaviv_gpu;
11 struct drm_etnaviv_pm_domain;
12 struct drm_etnaviv_pm_signal;
13 
14 struct etnaviv_perfmon_request
15 {
16 	u32 flags;
17 	u8 domain;
18 	u8 signal;
19 	u32 sequence;
20 
21 	/* bo to store a value */
22 	u32 *bo_vma;
23 	u32 offset;
24 };
25 
26 int etnaviv_pm_query_dom(struct etnaviv_gpu *gpu,
27 	struct drm_etnaviv_pm_domain *domain);
28 
29 int etnaviv_pm_query_sig(struct etnaviv_gpu *gpu,
30 	struct drm_etnaviv_pm_signal *signal);
31 
32 int etnaviv_pm_req_validate(const struct drm_etnaviv_gem_submit_pmr *r,
33 	u32 exec_state);
34 
35 void etnaviv_perfmon_process(struct etnaviv_gpu *gpu,
36 	const struct etnaviv_perfmon_request *pmr, u32 exec_state);
37 
38 #endif /* __ETNAVIV_PERFMON_H__ */
39