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