18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright (C) 2017 Etnaviv Project
48c2ecf20Sopenharmony_ci * Copyright (C) 2017 Zodiac Inflight Innovations
58c2ecf20Sopenharmony_ci */
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci#ifndef __ETNAVIV_PERFMON_H__
88c2ecf20Sopenharmony_ci#define __ETNAVIV_PERFMON_H__
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_cistruct etnaviv_gpu;
118c2ecf20Sopenharmony_cistruct drm_etnaviv_pm_domain;
128c2ecf20Sopenharmony_cistruct drm_etnaviv_pm_signal;
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_cistruct etnaviv_perfmon_request
158c2ecf20Sopenharmony_ci{
168c2ecf20Sopenharmony_ci	u32 flags;
178c2ecf20Sopenharmony_ci	u8 domain;
188c2ecf20Sopenharmony_ci	u8 signal;
198c2ecf20Sopenharmony_ci	u32 sequence;
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci	/* bo to store a value */
228c2ecf20Sopenharmony_ci	u32 *bo_vma;
238c2ecf20Sopenharmony_ci	u32 offset;
248c2ecf20Sopenharmony_ci};
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ciint etnaviv_pm_query_dom(struct etnaviv_gpu *gpu,
278c2ecf20Sopenharmony_ci	struct drm_etnaviv_pm_domain *domain);
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciint etnaviv_pm_query_sig(struct etnaviv_gpu *gpu,
308c2ecf20Sopenharmony_ci	struct drm_etnaviv_pm_signal *signal);
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ciint etnaviv_pm_req_validate(const struct drm_etnaviv_gem_submit_pmr *r,
338c2ecf20Sopenharmony_ci	u32 exec_state);
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_civoid etnaviv_perfmon_process(struct etnaviv_gpu *gpu,
368c2ecf20Sopenharmony_ci	const struct etnaviv_perfmon_request *pmr, u32 exec_state);
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci#endif /* __ETNAVIV_PERFMON_H__ */
39