aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/include/amd_shared.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/include/amd_shared.h')
-rw-r--r--drivers/gpu/drm/amd/include/amd_shared.h172
1 files changed, 0 insertions, 172 deletions
diff --git a/drivers/gpu/drm/amd/include/amd_shared.h b/drivers/gpu/drm/amd/include/amd_shared.h
index b72f8a43d86b..9fa3aaef3f33 100644
--- a/drivers/gpu/drm/amd/include/amd_shared.h
+++ b/drivers/gpu/drm/amd/include/amd_shared.h
@@ -25,7 +25,6 @@
25 25
26#include <drm/amd_asic_type.h> 26#include <drm/amd_asic_type.h>
27 27
28struct seq_file;
29 28
30#define AMD_MAX_USEC_TIMEOUT 200000 /* 200 ms */ 29#define AMD_MAX_USEC_TIMEOUT 200000 /* 200 ms */
31 30
@@ -61,71 +60,12 @@ enum amd_clockgating_state {
61 AMD_CG_STATE_UNGATE, 60 AMD_CG_STATE_UNGATE,
62}; 61};
63 62
64enum amd_dpm_forced_level {
65 AMD_DPM_FORCED_LEVEL_AUTO = 0x1,
66 AMD_DPM_FORCED_LEVEL_MANUAL = 0x2,
67 AMD_DPM_FORCED_LEVEL_LOW = 0x4,
68 AMD_DPM_FORCED_LEVEL_HIGH = 0x8,
69 AMD_DPM_FORCED_LEVEL_PROFILE_STANDARD = 0x10,
70 AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK = 0x20,
71 AMD_DPM_FORCED_LEVEL_PROFILE_MIN_MCLK = 0x40,
72 AMD_DPM_FORCED_LEVEL_PROFILE_PEAK = 0x80,
73 AMD_DPM_FORCED_LEVEL_PROFILE_EXIT = 0x100,
74};
75 63
76enum amd_powergating_state { 64enum amd_powergating_state {
77 AMD_PG_STATE_GATE = 0, 65 AMD_PG_STATE_GATE = 0,
78 AMD_PG_STATE_UNGATE, 66 AMD_PG_STATE_UNGATE,
79}; 67};
80 68
81struct amd_vce_state {
82 /* vce clocks */
83 u32 evclk;
84 u32 ecclk;
85 /* gpu clocks */
86 u32 sclk;
87 u32 mclk;
88 u8 clk_idx;
89 u8 pstate;
90};
91
92
93#define AMD_MAX_VCE_LEVELS 6
94
95enum amd_vce_level {
96 AMD_VCE_LEVEL_AC_ALL = 0, /* AC, All cases */
97 AMD_VCE_LEVEL_DC_EE = 1, /* DC, entropy encoding */
98 AMD_VCE_LEVEL_DC_LL_LOW = 2, /* DC, low latency queue, res <= 720 */
99 AMD_VCE_LEVEL_DC_LL_HIGH = 3, /* DC, low latency queue, 1080 >= res > 720 */
100 AMD_VCE_LEVEL_DC_GP_LOW = 4, /* DC, general purpose queue, res <= 720 */
101 AMD_VCE_LEVEL_DC_GP_HIGH = 5, /* DC, general purpose queue, 1080 >= res > 720 */
102};
103
104enum amd_pp_profile_type {
105 AMD_PP_GFX_PROFILE,
106 AMD_PP_COMPUTE_PROFILE,
107};
108
109struct amd_pp_profile {
110 enum amd_pp_profile_type type;
111 uint32_t min_sclk;
112 uint32_t min_mclk;
113 uint16_t activity_threshold;
114 uint8_t up_hyst;
115 uint8_t down_hyst;
116};
117
118enum amd_fan_ctrl_mode {
119 AMD_FAN_CTRL_NONE = 0,
120 AMD_FAN_CTRL_MANUAL = 1,
121 AMD_FAN_CTRL_AUTO = 2,
122};
123
124enum pp_clock_type {
125 PP_SCLK,
126 PP_MCLK,
127 PP_PCIE,
128};
129 69
130/* CG flags */ 70/* CG flags */
131#define AMD_CG_SUPPORT_GFX_MGCG (1 << 0) 71#define AMD_CG_SUPPORT_GFX_MGCG (1 << 0)
@@ -169,27 +109,6 @@ enum pp_clock_type {
169#define AMD_PG_SUPPORT_GFX_PIPELINE (1 << 12) 109#define AMD_PG_SUPPORT_GFX_PIPELINE (1 << 12)
170#define AMD_PG_SUPPORT_MMHUB (1 << 13) 110#define AMD_PG_SUPPORT_MMHUB (1 << 13)
171 111
172enum amd_pm_state_type {
173 /* not used for dpm */
174 POWER_STATE_TYPE_DEFAULT,
175 POWER_STATE_TYPE_POWERSAVE,
176 /* user selectable states */
177 POWER_STATE_TYPE_BATTERY,
178 POWER_STATE_TYPE_BALANCED,
179 POWER_STATE_TYPE_PERFORMANCE,
180 /* internal states */
181 POWER_STATE_TYPE_INTERNAL_UVD,
182 POWER_STATE_TYPE_INTERNAL_UVD_SD,
183 POWER_STATE_TYPE_INTERNAL_UVD_HD,
184 POWER_STATE_TYPE_INTERNAL_UVD_HD2,
185 POWER_STATE_TYPE_INTERNAL_UVD_MVC,
186 POWER_STATE_TYPE_INTERNAL_BOOT,
187 POWER_STATE_TYPE_INTERNAL_THERMAL,
188 POWER_STATE_TYPE_INTERNAL_ACPI,
189 POWER_STATE_TYPE_INTERNAL_ULV,
190 POWER_STATE_TYPE_INTERNAL_3DPERF,
191};
192
193struct amd_ip_funcs { 112struct amd_ip_funcs {
194 /* Name of IP block */ 113 /* Name of IP block */
195 char *name; 114 char *name;
@@ -233,95 +152,4 @@ struct amd_ip_funcs {
233}; 152};
234 153
235 154
236enum amd_pp_task;
237enum amd_pp_clock_type;
238struct pp_states_info;
239struct amd_pp_simple_clock_info;
240struct amd_pp_display_configuration;
241struct amd_pp_clock_info;
242struct pp_display_clock_request;
243struct pp_wm_sets_with_clock_ranges_soc15;
244struct pp_clock_levels_with_voltage;
245struct pp_clock_levels_with_latency;
246struct amd_pp_clocks;
247
248struct amd_pm_funcs {
249/* export for dpm on ci and si */
250 int (*pre_set_power_state)(void *handle);
251 int (*set_power_state)(void *handle);
252 void (*post_set_power_state)(void *handle);
253 void (*display_configuration_changed)(void *handle);
254 void (*print_power_state)(void *handle, void *ps);
255 bool (*vblank_too_short)(void *handle);
256 void (*enable_bapm)(void *handle, bool enable);
257 int (*check_state_equal)(void *handle,
258 void *cps,
259 void *rps,
260 bool *equal);
261/* export for sysfs */
262 int (*get_temperature)(void *handle);
263 void (*set_fan_control_mode)(void *handle, u32 mode);
264 u32 (*get_fan_control_mode)(void *handle);
265 int (*set_fan_speed_percent)(void *handle, u32 speed);
266 int (*get_fan_speed_percent)(void *handle, u32 *speed);
267 int (*force_clock_level)(void *handle, enum pp_clock_type type, uint32_t mask);
268 int (*print_clock_levels)(void *handle, enum pp_clock_type type, char *buf);
269 int (*force_performance_level)(void *handle, enum amd_dpm_forced_level level);
270 int (*get_sclk_od)(void *handle);
271 int (*set_sclk_od)(void *handle, uint32_t value);
272 int (*get_mclk_od)(void *handle);
273 int (*set_mclk_od)(void *handle, uint32_t value);
274 int (*read_sensor)(void *handle, int idx, void *value, int *size);
275 enum amd_dpm_forced_level (*get_performance_level)(void *handle);
276 enum amd_pm_state_type (*get_current_power_state)(void *handle);
277 int (*get_fan_speed_rpm)(void *handle, uint32_t *rpm);
278 int (*get_pp_num_states)(void *handle, struct pp_states_info *data);
279 int (*get_pp_table)(void *handle, char **table);
280 int (*set_pp_table)(void *handle, const char *buf, size_t size);
281 void (*debugfs_print_current_performance_level)(void *handle, struct seq_file *m);
282
283 int (*reset_power_profile_state)(void *handle,
284 struct amd_pp_profile *request);
285 int (*get_power_profile_state)(void *handle,
286 struct amd_pp_profile *query);
287 int (*set_power_profile_state)(void *handle,
288 struct amd_pp_profile *request);
289 int (*switch_power_profile)(void *handle,
290 enum amd_pp_profile_type type);
291/* export to amdgpu */
292 void (*powergate_uvd)(void *handle, bool gate);
293 void (*powergate_vce)(void *handle, bool gate);
294 struct amd_vce_state* (*get_vce_clock_state)(void *handle, u32 idx);
295 int (*dispatch_tasks)(void *handle, enum amd_pp_task task_id,
296 void *input, void *output);
297 int (*load_firmware)(void *handle);
298 int (*wait_for_fw_loading_complete)(void *handle);
299 int (*set_clockgating_by_smu)(void *handle, uint32_t msg_id);
300/* export to DC */
301 u32 (*get_sclk)(void *handle, bool low);
302 u32 (*get_mclk)(void *handle, bool low);
303 int (*display_configuration_change)(void *handle,
304 const struct amd_pp_display_configuration *input);
305 int (*get_display_power_level)(void *handle,
306 struct amd_pp_simple_clock_info *output);
307 int (*get_current_clocks)(void *handle,
308 struct amd_pp_clock_info *clocks);
309 int (*get_clock_by_type)(void *handle,
310 enum amd_pp_clock_type type,
311 struct amd_pp_clocks *clocks);
312 int (*get_clock_by_type_with_latency)(void *handle,
313 enum amd_pp_clock_type type,
314 struct pp_clock_levels_with_latency *clocks);
315 int (*get_clock_by_type_with_voltage)(void *handle,
316 enum amd_pp_clock_type type,
317 struct pp_clock_levels_with_voltage *clocks);
318 int (*set_watermarks_for_clocks_ranges)(void *handle,
319 struct pp_wm_sets_with_clock_ranges_soc15 *wm_with_clock_ranges);
320 int (*display_clock_voltage_request)(void *handle,
321 struct pp_display_clock_request *clock);
322 int (*get_display_mode_validation_clocks)(void *handle,
323 struct amd_pp_simple_clock_info *clocks);
324};
325
326
327#endif /* __AMD_SHARED_H__ */ 155#endif /* __AMD_SHARED_H__ */