mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
GuC has an interface to set a power profile for the SLPC algorithm. Base mode is default and ensures a balanced performance, power_saving mode has conservative up/down thresholds and is suitable for use with apps that typically need to be power efficient. This will result in lower GT frequencies, thus consuming lower power. Selected power profile will be displayed in this format: $ cat power_profile [base] power_saving $ echo power_saving > power_profile $ cat power_profile base [power_saving] v2: Address review comments (Rodrigo) Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://lore.kernel.org/r/20250903232120.390190-1-vinay.belgaumkar@intel.com Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
47 lines
1.8 KiB
C
47 lines
1.8 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2022 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _XE_GUC_PC_H_
|
|
#define _XE_GUC_PC_H_
|
|
|
|
#include <linux/types.h>
|
|
|
|
struct xe_guc_pc;
|
|
enum slpc_gucrc_mode;
|
|
struct drm_printer;
|
|
|
|
int xe_guc_pc_init(struct xe_guc_pc *pc);
|
|
int xe_guc_pc_start(struct xe_guc_pc *pc);
|
|
int xe_guc_pc_stop(struct xe_guc_pc *pc);
|
|
int xe_guc_pc_gucrc_disable(struct xe_guc_pc *pc);
|
|
int xe_guc_pc_override_gucrc_mode(struct xe_guc_pc *pc, enum slpc_gucrc_mode mode);
|
|
int xe_guc_pc_unset_gucrc_mode(struct xe_guc_pc *pc);
|
|
void xe_guc_pc_print(struct xe_guc_pc *pc, struct drm_printer *p);
|
|
|
|
u32 xe_guc_pc_get_act_freq(struct xe_guc_pc *pc);
|
|
int xe_guc_pc_get_cur_freq(struct xe_guc_pc *pc, u32 *freq);
|
|
u32 xe_guc_pc_get_cur_freq_fw(struct xe_guc_pc *pc);
|
|
u32 xe_guc_pc_get_rp0_freq(struct xe_guc_pc *pc);
|
|
u32 xe_guc_pc_get_rpa_freq(struct xe_guc_pc *pc);
|
|
u32 xe_guc_pc_get_rpe_freq(struct xe_guc_pc *pc);
|
|
u32 xe_guc_pc_get_rpn_freq(struct xe_guc_pc *pc);
|
|
int xe_guc_pc_get_min_freq(struct xe_guc_pc *pc, u32 *freq);
|
|
int xe_guc_pc_set_min_freq(struct xe_guc_pc *pc, u32 freq);
|
|
int xe_guc_pc_get_max_freq(struct xe_guc_pc *pc, u32 *freq);
|
|
int xe_guc_pc_set_max_freq(struct xe_guc_pc *pc, u32 freq);
|
|
int xe_guc_pc_set_power_profile(struct xe_guc_pc *pc, const char *buf);
|
|
void xe_guc_pc_get_power_profile(struct xe_guc_pc *pc, char *profile);
|
|
|
|
enum xe_gt_idle_state xe_guc_pc_c_status(struct xe_guc_pc *pc);
|
|
u64 xe_guc_pc_rc6_residency(struct xe_guc_pc *pc);
|
|
u64 xe_guc_pc_mc6_residency(struct xe_guc_pc *pc);
|
|
void xe_guc_pc_init_early(struct xe_guc_pc *pc);
|
|
int xe_guc_pc_restore_stashed_freq(struct xe_guc_pc *pc);
|
|
void xe_guc_pc_raise_unslice(struct xe_guc_pc *pc);
|
|
void xe_guc_pc_apply_flush_freq_limit(struct xe_guc_pc *pc);
|
|
void xe_guc_pc_remove_flush_freq_limit(struct xe_guc_pc *pc);
|
|
|
|
#endif /* _XE_GUC_PC_H_ */
|