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