1/* SPDX-License-Identifier: MIT */
2/*
3 * Copyright �� 2021 Intel Corporation
4 */
5
6#ifndef _INTEL_GUC_SLPC_H_
7#define _INTEL_GUC_SLPC_H_
8
9#include "intel_guc_submission.h"
10#include "intel_guc_slpc_types.h"
11
12#define SLPC_MAX_FREQ_MHZ 4250
13
14struct intel_gt;
15struct drm_printer;
16
17static inline bool intel_guc_slpc_is_supported(struct intel_guc *guc)
18{
19	return guc->slpc.supported;
20}
21
22static inline bool intel_guc_slpc_is_wanted(struct intel_guc *guc)
23{
24	return guc->slpc.selected;
25}
26
27static inline bool intel_guc_slpc_is_used(struct intel_guc *guc)
28{
29	return intel_guc_submission_is_used(guc) && intel_guc_slpc_is_wanted(guc);
30}
31
32void intel_guc_slpc_init_early(struct intel_guc_slpc *slpc);
33
34int intel_guc_slpc_init(struct intel_guc_slpc *slpc);
35int intel_guc_slpc_enable(struct intel_guc_slpc *slpc);
36void intel_guc_slpc_fini(struct intel_guc_slpc *slpc);
37int intel_guc_slpc_set_max_freq(struct intel_guc_slpc *slpc, u32 val);
38int intel_guc_slpc_set_min_freq(struct intel_guc_slpc *slpc, u32 val);
39int intel_guc_slpc_set_boost_freq(struct intel_guc_slpc *slpc, u32 val);
40int intel_guc_slpc_get_max_freq(struct intel_guc_slpc *slpc, u32 *val);
41int intel_guc_slpc_get_min_freq(struct intel_guc_slpc *slpc, u32 *val);
42int intel_guc_slpc_print_info(struct intel_guc_slpc *slpc, struct drm_printer *p);
43int intel_guc_slpc_set_media_ratio_mode(struct intel_guc_slpc *slpc, u32 val);
44void intel_guc_pm_intrmsk_enable(struct intel_gt *gt);
45void intel_guc_slpc_boost(struct intel_guc_slpc *slpc);
46void intel_guc_slpc_dec_waiters(struct intel_guc_slpc *slpc);
47int intel_guc_slpc_set_ignore_eff_freq(struct intel_guc_slpc *slpc, bool val);
48
49#endif
50