xref: /linux/drivers/gpu/drm/etnaviv/etnaviv_perfmon.h (revision 3eb66e91a25497065c5322b1268cbc3953642227)
1*f6ffbd4fSLucas Stach /* SPDX-License-Identifier: GPL-2.0 */
29e2c2e27SChristian Gmeiner /*
39e2c2e27SChristian Gmeiner  * Copyright (C) 2017 Etnaviv Project
49e2c2e27SChristian Gmeiner  * Copyright (C) 2017 Zodiac Inflight Innovations
59e2c2e27SChristian Gmeiner  */
69e2c2e27SChristian Gmeiner 
79e2c2e27SChristian Gmeiner #ifndef __ETNAVIV_PERFMON_H__
89e2c2e27SChristian Gmeiner #define __ETNAVIV_PERFMON_H__
99e2c2e27SChristian Gmeiner 
109e2c2e27SChristian Gmeiner struct etnaviv_gpu;
119e2c2e27SChristian Gmeiner struct drm_etnaviv_pm_domain;
129e2c2e27SChristian Gmeiner struct drm_etnaviv_pm_signal;
139e2c2e27SChristian Gmeiner 
148d3d56ceSChristian Gmeiner struct etnaviv_perfmon_request
158d3d56ceSChristian Gmeiner {
168d3d56ceSChristian Gmeiner 	u32 flags;
178d3d56ceSChristian Gmeiner 	u8 domain;
188d3d56ceSChristian Gmeiner 	u8 signal;
198d3d56ceSChristian Gmeiner 	u32 sequence;
208d3d56ceSChristian Gmeiner 
218d3d56ceSChristian Gmeiner 	/* bo to store a value */
228d3d56ceSChristian Gmeiner 	u32 *bo_vma;
238d3d56ceSChristian Gmeiner 	u32 offset;
248d3d56ceSChristian Gmeiner };
258d3d56ceSChristian Gmeiner 
269e2c2e27SChristian Gmeiner int etnaviv_pm_query_dom(struct etnaviv_gpu *gpu,
279e2c2e27SChristian Gmeiner 	struct drm_etnaviv_pm_domain *domain);
289e2c2e27SChristian Gmeiner 
299e2c2e27SChristian Gmeiner int etnaviv_pm_query_sig(struct etnaviv_gpu *gpu,
309e2c2e27SChristian Gmeiner 	struct drm_etnaviv_pm_signal *signal);
319e2c2e27SChristian Gmeiner 
3246df52cdSChristian Gmeiner int etnaviv_pm_req_validate(const struct drm_etnaviv_gem_submit_pmr *r,
3346df52cdSChristian Gmeiner 	u32 exec_state);
3446df52cdSChristian Gmeiner 
35249300c7SChristian Gmeiner void etnaviv_perfmon_process(struct etnaviv_gpu *gpu,
367a9c0fe2SLucas Stach 	const struct etnaviv_perfmon_request *pmr, u32 exec_state);
37249300c7SChristian Gmeiner 
389e2c2e27SChristian Gmeiner #endif /* __ETNAVIV_PERFMON_H__ */
39