xref: /linux/drivers/gpu/drm/xe/xe_guc_pc.h (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
1dd08ebf6SMatthew Brost /* SPDX-License-Identifier: MIT */
2dd08ebf6SMatthew Brost /*
3dd08ebf6SMatthew Brost  * Copyright © 2022 Intel Corporation
4dd08ebf6SMatthew Brost  */
5dd08ebf6SMatthew Brost 
6dd08ebf6SMatthew Brost #ifndef _XE_GUC_PC_H_
7dd08ebf6SMatthew Brost #define _XE_GUC_PC_H_
8dd08ebf6SMatthew Brost 
9a6bc7cdaSMichal Wajdeczko #include <linux/types.h>
10a6bc7cdaSMichal Wajdeczko 
11a6bc7cdaSMichal Wajdeczko struct xe_guc_pc;
1270af432bSAshutosh Dixit enum slpc_gucrc_mode;
13dd08ebf6SMatthew Brost 
14dd08ebf6SMatthew Brost int xe_guc_pc_init(struct xe_guc_pc *pc);
15dd08ebf6SMatthew Brost int xe_guc_pc_start(struct xe_guc_pc *pc);
16dd08ebf6SMatthew Brost int xe_guc_pc_stop(struct xe_guc_pc *pc);
171737785aSRiana Tauro int xe_guc_pc_gucrc_disable(struct xe_guc_pc *pc);
1870af432bSAshutosh Dixit int xe_guc_pc_override_gucrc_mode(struct xe_guc_pc *pc, enum slpc_gucrc_mode mode);
1970af432bSAshutosh Dixit int xe_guc_pc_unset_gucrc_mode(struct xe_guc_pc *pc);
20dd08ebf6SMatthew Brost 
21bef52b5cSRodrigo Vivi u32 xe_guc_pc_get_act_freq(struct xe_guc_pc *pc);
22bef52b5cSRodrigo Vivi int xe_guc_pc_get_cur_freq(struct xe_guc_pc *pc, u32 *freq);
23bef52b5cSRodrigo Vivi u32 xe_guc_pc_get_rp0_freq(struct xe_guc_pc *pc);
24bef52b5cSRodrigo Vivi u32 xe_guc_pc_get_rpe_freq(struct xe_guc_pc *pc);
25bef52b5cSRodrigo Vivi u32 xe_guc_pc_get_rpn_freq(struct xe_guc_pc *pc);
26bef52b5cSRodrigo Vivi int xe_guc_pc_get_min_freq(struct xe_guc_pc *pc, u32 *freq);
27bef52b5cSRodrigo Vivi int xe_guc_pc_set_min_freq(struct xe_guc_pc *pc, u32 freq);
28bef52b5cSRodrigo Vivi int xe_guc_pc_get_max_freq(struct xe_guc_pc *pc, u32 *freq);
29bef52b5cSRodrigo Vivi int xe_guc_pc_set_max_freq(struct xe_guc_pc *pc, u32 freq);
30bef52b5cSRodrigo Vivi 
317b076d14SBadal Nilawar enum xe_gt_idle_state xe_guc_pc_c_status(struct xe_guc_pc *pc);
321c2097bbSRiana Tauro u64 xe_guc_pc_rc6_residency(struct xe_guc_pc *pc);
337b076d14SBadal Nilawar u64 xe_guc_pc_mc6_residency(struct xe_guc_pc *pc);
3443efd3baSVinay Belgaumkar void xe_guc_pc_init_early(struct xe_guc_pc *pc);
353b1592fbSVinay Belgaumkar int xe_guc_pc_restore_stashed_freq(struct xe_guc_pc *pc);
36*9d2ab862SVinay Belgaumkar void xe_guc_pc_raise_unslice(struct xe_guc_pc *pc);
37a6bc7cdaSMichal Wajdeczko 
38dd08ebf6SMatthew Brost #endif /* _XE_GUC_PC_H_ */
39