diff options
Diffstat (limited to 'drivers/gpu/drm/amd/include/amd_shared.h')
-rw-r--r-- | drivers/gpu/drm/amd/include/amd_shared.h | 172 |
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 | ||
28 | struct 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 | ||
64 | enum 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 | ||
76 | enum amd_powergating_state { | 64 | enum 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 | ||
81 | struct 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 | |||
95 | enum 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 | |||
104 | enum amd_pp_profile_type { | ||
105 | AMD_PP_GFX_PROFILE, | ||
106 | AMD_PP_COMPUTE_PROFILE, | ||
107 | }; | ||
108 | |||
109 | struct 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 | |||
118 | enum amd_fan_ctrl_mode { | ||
119 | AMD_FAN_CTRL_NONE = 0, | ||
120 | AMD_FAN_CTRL_MANUAL = 1, | ||
121 | AMD_FAN_CTRL_AUTO = 2, | ||
122 | }; | ||
123 | |||
124 | enum 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 | ||
172 | enum 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 | |||
193 | struct amd_ip_funcs { | 112 | struct 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 | ||
236 | enum amd_pp_task; | ||
237 | enum amd_pp_clock_type; | ||
238 | struct pp_states_info; | ||
239 | struct amd_pp_simple_clock_info; | ||
240 | struct amd_pp_display_configuration; | ||
241 | struct amd_pp_clock_info; | ||
242 | struct pp_display_clock_request; | ||
243 | struct pp_wm_sets_with_clock_ranges_soc15; | ||
244 | struct pp_clock_levels_with_voltage; | ||
245 | struct pp_clock_levels_with_latency; | ||
246 | struct amd_pp_clocks; | ||
247 | |||
248 | struct 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__ */ |