Home | History | Annotate | Line # | Download | only in amdgpu
      1 /*	$NetBSD: amdgpu_dpm.h,v 1.3 2021/12/18 23:44:58 riastradh Exp $	*/
      2 
      3 /*
      4  * Copyright 2014 Advanced Micro Devices, Inc.
      5  *
      6  * Permission is hereby granted, free of charge, to any person obtaining a
      7  * copy of this software and associated documentation files (the "Software"),
      8  * to deal in the Software without restriction, including without limitation
      9  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     10  * and/or sell copies of the Software, and to permit persons to whom the
     11  * Software is furnished to do so, subject to the following conditions:
     12  *
     13  * The above copyright notice and this permission notice shall be included in
     14  * all copies or substantial portions of the Software.
     15  *
     16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     19  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
     20  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
     21  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
     22  * OTHER DEALINGS IN THE SOFTWARE.
     23  *
     24  */
     25 #ifndef __AMDGPU_DPM_H__
     26 #define __AMDGPU_DPM_H__
     27 
     28 enum amdgpu_int_thermal_type {
     29 	THERMAL_TYPE_NONE,
     30 	THERMAL_TYPE_EXTERNAL,
     31 	THERMAL_TYPE_EXTERNAL_GPIO,
     32 	THERMAL_TYPE_RV6XX,
     33 	THERMAL_TYPE_RV770,
     34 	THERMAL_TYPE_ADT7473_WITH_INTERNAL,
     35 	THERMAL_TYPE_EVERGREEN,
     36 	THERMAL_TYPE_SUMO,
     37 	THERMAL_TYPE_NI,
     38 	THERMAL_TYPE_SI,
     39 	THERMAL_TYPE_EMC2103_WITH_INTERNAL,
     40 	THERMAL_TYPE_CI,
     41 	THERMAL_TYPE_KV,
     42 };
     43 
     44 enum amdgpu_dpm_auto_throttle_src {
     45 	AMDGPU_DPM_AUTO_THROTTLE_SRC_THERMAL,
     46 	AMDGPU_DPM_AUTO_THROTTLE_SRC_EXTERNAL
     47 };
     48 
     49 enum amdgpu_dpm_event_src {
     50 	AMDGPU_DPM_EVENT_SRC_ANALOG = 0,
     51 	AMDGPU_DPM_EVENT_SRC_EXTERNAL = 1,
     52 	AMDGPU_DPM_EVENT_SRC_DIGITAL = 2,
     53 	AMDGPU_DPM_EVENT_SRC_ANALOG_OR_EXTERNAL = 3,
     54 	AMDGPU_DPM_EVENT_SRC_DIGIAL_OR_EXTERNAL = 4
     55 };
     56 
     57 struct amdgpu_ps {
     58 	u32 caps; /* vbios flags */
     59 	u32 class; /* vbios flags */
     60 	u32 class2; /* vbios flags */
     61 	/* UVD clocks */
     62 	u32 vclk;
     63 	u32 dclk;
     64 	/* VCE clocks */
     65 	u32 evclk;
     66 	u32 ecclk;
     67 	bool vce_active;
     68 	enum amd_vce_level vce_level;
     69 	/* asic priv */
     70 	void *ps_priv;
     71 };
     72 
     73 struct amdgpu_dpm_thermal {
     74 	/* thermal interrupt work */
     75 	struct work_struct work;
     76 	/* low temperature threshold */
     77 	int                min_temp;
     78 	/* high temperature threshold */
     79 	int                max_temp;
     80 	/* edge max emergency(shutdown) temp */
     81 	int                max_edge_emergency_temp;
     82 	/* hotspot low temperature threshold */
     83 	int                min_hotspot_temp;
     84 	/* hotspot high temperature critical threshold */
     85 	int                max_hotspot_crit_temp;
     86 	/* hotspot max emergency(shutdown) temp */
     87 	int                max_hotspot_emergency_temp;
     88 	/* memory low temperature threshold */
     89 	int                min_mem_temp;
     90 	/* memory high temperature critical threshold */
     91 	int                max_mem_crit_temp;
     92 	/* memory max emergency(shutdown) temp */
     93 	int                max_mem_emergency_temp;
     94 	/* was last interrupt low to high or high to low */
     95 	bool               high_to_low;
     96 	/* interrupt source */
     97 	struct amdgpu_irq_src	irq;
     98 };
     99 
    100 enum amdgpu_clk_action
    101 {
    102 	AMDGPU_SCLK_UP = 1,
    103 	AMDGPU_SCLK_DOWN
    104 };
    105 
    106 struct amdgpu_blacklist_clocks
    107 {
    108 	u32 sclk;
    109 	u32 mclk;
    110 	enum amdgpu_clk_action action;
    111 };
    112 
    113 struct amdgpu_clock_and_voltage_limits {
    114 	u32 sclk;
    115 	u32 mclk;
    116 	u16 vddc;
    117 	u16 vddci;
    118 };
    119 
    120 struct amdgpu_clock_array {
    121 	u32 count;
    122 	u32 *values;
    123 };
    124 
    125 struct amdgpu_clock_voltage_dependency_entry {
    126 	u32 clk;
    127 	u16 v;
    128 };
    129 
    130 struct amdgpu_clock_voltage_dependency_table {
    131 	u32 count;
    132 	struct amdgpu_clock_voltage_dependency_entry *entries;
    133 };
    134 
    135 union amdgpu_cac_leakage_entry {
    136 	struct {
    137 		u16 vddc;
    138 		u32 leakage;
    139 	};
    140 	struct {
    141 		u16 vddc1;
    142 		u16 vddc2;
    143 		u16 vddc3;
    144 	};
    145 };
    146 
    147 struct amdgpu_cac_leakage_table {
    148 	u32 count;
    149 	union amdgpu_cac_leakage_entry *entries;
    150 };
    151 
    152 struct amdgpu_phase_shedding_limits_entry {
    153 	u16 voltage;
    154 	u32 sclk;
    155 	u32 mclk;
    156 };
    157 
    158 struct amdgpu_phase_shedding_limits_table {
    159 	u32 count;
    160 	struct amdgpu_phase_shedding_limits_entry *entries;
    161 };
    162 
    163 struct amdgpu_uvd_clock_voltage_dependency_entry {
    164 	u32 vclk;
    165 	u32 dclk;
    166 	u16 v;
    167 };
    168 
    169 struct amdgpu_uvd_clock_voltage_dependency_table {
    170 	u8 count;
    171 	struct amdgpu_uvd_clock_voltage_dependency_entry *entries;
    172 };
    173 
    174 struct amdgpu_vce_clock_voltage_dependency_entry {
    175 	u32 ecclk;
    176 	u32 evclk;
    177 	u16 v;
    178 };
    179 
    180 struct amdgpu_vce_clock_voltage_dependency_table {
    181 	u8 count;
    182 	struct amdgpu_vce_clock_voltage_dependency_entry *entries;
    183 };
    184 
    185 struct amdgpu_ppm_table {
    186 	u8 ppm_design;
    187 	u16 cpu_core_number;
    188 	u32 platform_tdp;
    189 	u32 small_ac_platform_tdp;
    190 	u32 platform_tdc;
    191 	u32 small_ac_platform_tdc;
    192 	u32 apu_tdp;
    193 	u32 dgpu_tdp;
    194 	u32 dgpu_ulv_power;
    195 	u32 tj_max;
    196 };
    197 
    198 struct amdgpu_cac_tdp_table {
    199 	u16 tdp;
    200 	u16 configurable_tdp;
    201 	u16 tdc;
    202 	u16 battery_power_limit;
    203 	u16 small_power_limit;
    204 	u16 low_cac_leakage;
    205 	u16 high_cac_leakage;
    206 	u16 maximum_power_delivery_limit;
    207 };
    208 
    209 struct amdgpu_dpm_dynamic_state {
    210 	struct amdgpu_clock_voltage_dependency_table vddc_dependency_on_sclk;
    211 	struct amdgpu_clock_voltage_dependency_table vddci_dependency_on_mclk;
    212 	struct amdgpu_clock_voltage_dependency_table vddc_dependency_on_mclk;
    213 	struct amdgpu_clock_voltage_dependency_table mvdd_dependency_on_mclk;
    214 	struct amdgpu_clock_voltage_dependency_table vddc_dependency_on_dispclk;
    215 	struct amdgpu_uvd_clock_voltage_dependency_table uvd_clock_voltage_dependency_table;
    216 	struct amdgpu_vce_clock_voltage_dependency_table vce_clock_voltage_dependency_table;
    217 	struct amdgpu_clock_voltage_dependency_table samu_clock_voltage_dependency_table;
    218 	struct amdgpu_clock_voltage_dependency_table acp_clock_voltage_dependency_table;
    219 	struct amdgpu_clock_voltage_dependency_table vddgfx_dependency_on_sclk;
    220 	struct amdgpu_clock_array valid_sclk_values;
    221 	struct amdgpu_clock_array valid_mclk_values;
    222 	struct amdgpu_clock_and_voltage_limits max_clock_voltage_on_dc;
    223 	struct amdgpu_clock_and_voltage_limits max_clock_voltage_on_ac;
    224 	u32 mclk_sclk_ratio;
    225 	u32 sclk_mclk_delta;
    226 	u16 vddc_vddci_delta;
    227 	u16 min_vddc_for_pcie_gen2;
    228 	struct amdgpu_cac_leakage_table cac_leakage_table;
    229 	struct amdgpu_phase_shedding_limits_table phase_shedding_limits_table;
    230 	struct amdgpu_ppm_table *ppm_table;
    231 	struct amdgpu_cac_tdp_table *cac_tdp_table;
    232 };
    233 
    234 struct amdgpu_dpm_fan {
    235 	u16 t_min;
    236 	u16 t_med;
    237 	u16 t_high;
    238 	u16 pwm_min;
    239 	u16 pwm_med;
    240 	u16 pwm_high;
    241 	u8 t_hyst;
    242 	u32 cycle_delay;
    243 	u16 t_max;
    244 	u8 control_mode;
    245 	u16 default_max_fan_pwm;
    246 	u16 default_fan_output_sensitivity;
    247 	u16 fan_output_sensitivity;
    248 	bool ucode_fan_control;
    249 };
    250 
    251 enum amdgpu_pcie_gen {
    252 	AMDGPU_PCIE_GEN1 = 0,
    253 	AMDGPU_PCIE_GEN2 = 1,
    254 	AMDGPU_PCIE_GEN3 = 2,
    255 	AMDGPU_PCIE_GEN_INVALID = 0xffff
    256 };
    257 
    258 #define amdgpu_dpm_pre_set_power_state(adev) \
    259 		((adev)->powerplay.pp_funcs->pre_set_power_state((adev)->powerplay.pp_handle))
    260 
    261 #define amdgpu_dpm_set_power_state(adev) \
    262 		((adev)->powerplay.pp_funcs->set_power_state((adev)->powerplay.pp_handle))
    263 
    264 #define amdgpu_dpm_post_set_power_state(adev) \
    265 		((adev)->powerplay.pp_funcs->post_set_power_state((adev)->powerplay.pp_handle))
    266 
    267 #define amdgpu_dpm_display_configuration_changed(adev) \
    268 		((adev)->powerplay.pp_funcs->display_configuration_changed((adev)->powerplay.pp_handle))
    269 
    270 #define amdgpu_dpm_print_power_state(adev, ps) \
    271 		((adev)->powerplay.pp_funcs->print_power_state((adev)->powerplay.pp_handle, (ps)))
    272 
    273 #define amdgpu_dpm_vblank_too_short(adev) \
    274 		((adev)->powerplay.pp_funcs->vblank_too_short((adev)->powerplay.pp_handle))
    275 
    276 #define amdgpu_dpm_enable_bapm(adev, e) \
    277 		((adev)->powerplay.pp_funcs->enable_bapm((adev)->powerplay.pp_handle, (e)))
    278 
    279 #define amdgpu_dpm_set_fan_control_mode(adev, m) \
    280 		((adev)->powerplay.pp_funcs->set_fan_control_mode((adev)->powerplay.pp_handle, (m)))
    281 
    282 #define amdgpu_dpm_get_fan_control_mode(adev) \
    283 		((adev)->powerplay.pp_funcs->get_fan_control_mode((adev)->powerplay.pp_handle))
    284 
    285 #define amdgpu_dpm_set_fan_speed_percent(adev, s) \
    286 		((adev)->powerplay.pp_funcs->set_fan_speed_percent((adev)->powerplay.pp_handle, (s)))
    287 
    288 #define amdgpu_dpm_get_fan_speed_percent(adev, s) \
    289 		((adev)->powerplay.pp_funcs->get_fan_speed_percent((adev)->powerplay.pp_handle, (s)))
    290 
    291 #define amdgpu_dpm_get_fan_speed_rpm(adev, s) \
    292 		((adev)->powerplay.pp_funcs->get_fan_speed_rpm)((adev)->powerplay.pp_handle, (s))
    293 
    294 #define amdgpu_dpm_set_fan_speed_rpm(adev, s) \
    295 		((adev)->powerplay.pp_funcs->set_fan_speed_rpm)((adev)->powerplay.pp_handle, (s))
    296 
    297 #define amdgpu_dpm_force_performance_level(adev, l) \
    298 		((adev)->powerplay.pp_funcs->force_performance_level((adev)->powerplay.pp_handle, (l)))
    299 
    300 #define amdgpu_dpm_get_current_power_state(adev) \
    301 		((adev)->powerplay.pp_funcs->get_current_power_state((adev)->powerplay.pp_handle))
    302 
    303 #define amdgpu_dpm_get_pp_num_states(adev, data) \
    304 		((adev)->powerplay.pp_funcs->get_pp_num_states((adev)->powerplay.pp_handle, data))
    305 
    306 #define amdgpu_dpm_get_pp_table(adev, table) \
    307 		((adev)->powerplay.pp_funcs->get_pp_table((adev)->powerplay.pp_handle, table))
    308 
    309 #define amdgpu_dpm_set_pp_table(adev, buf, size) \
    310 		((adev)->powerplay.pp_funcs->set_pp_table((adev)->powerplay.pp_handle, buf, size))
    311 
    312 #define amdgpu_dpm_print_clock_levels(adev, type, buf) \
    313 		((adev)->powerplay.pp_funcs->print_clock_levels((adev)->powerplay.pp_handle, type, buf))
    314 
    315 #define amdgpu_dpm_force_clock_level(adev, type, level) \
    316 		((adev)->powerplay.pp_funcs->force_clock_level((adev)->powerplay.pp_handle, type, level))
    317 
    318 #define amdgpu_dpm_get_sclk_od(adev) \
    319 		((adev)->powerplay.pp_funcs->get_sclk_od((adev)->powerplay.pp_handle))
    320 
    321 #define amdgpu_dpm_set_sclk_od(adev, value) \
    322 		((adev)->powerplay.pp_funcs->set_sclk_od((adev)->powerplay.pp_handle, value))
    323 
    324 #define amdgpu_dpm_get_mclk_od(adev) \
    325 		((adev)->powerplay.pp_funcs->get_mclk_od((adev)->powerplay.pp_handle))
    326 
    327 #define amdgpu_dpm_set_mclk_od(adev, value) \
    328 		((adev)->powerplay.pp_funcs->set_mclk_od((adev)->powerplay.pp_handle, value))
    329 
    330 #define amdgpu_dpm_dispatch_task(adev, task_id, user_state)		\
    331 		((adev)->powerplay.pp_funcs->dispatch_tasks)((adev)->powerplay.pp_handle, (task_id), (user_state))
    332 
    333 #define amdgpu_dpm_check_state_equal(adev, cps, rps, equal) \
    334 		((adev)->powerplay.pp_funcs->check_state_equal((adev)->powerplay.pp_handle, (cps), (rps), (equal)))
    335 
    336 #define amdgpu_dpm_get_vce_clock_state(adev, i)				\
    337 		((adev)->powerplay.pp_funcs->get_vce_clock_state((adev)->powerplay.pp_handle, (i)))
    338 
    339 #define amdgpu_dpm_get_performance_level(adev)				\
    340 		((adev)->powerplay.pp_funcs->get_performance_level((adev)->powerplay.pp_handle))
    341 
    342 #define amdgpu_dpm_reset_power_profile_state(adev, request) \
    343 		((adev)->powerplay.pp_funcs->reset_power_profile_state(\
    344 			(adev)->powerplay.pp_handle, request))
    345 
    346 #define amdgpu_dpm_set_clockgating_by_smu(adev, msg_id) \
    347 		((adev)->powerplay.pp_funcs->set_clockgating_by_smu(\
    348 			(adev)->powerplay.pp_handle, msg_id))
    349 
    350 #define amdgpu_dpm_get_power_profile_mode(adev, buf) \
    351 		((adev)->powerplay.pp_funcs->get_power_profile_mode(\
    352 			(adev)->powerplay.pp_handle, buf))
    353 
    354 #define amdgpu_dpm_set_power_profile_mode(adev, parameter, size) \
    355 		((adev)->powerplay.pp_funcs->set_power_profile_mode(\
    356 			(adev)->powerplay.pp_handle, parameter, size))
    357 
    358 #define amdgpu_dpm_odn_edit_dpm_table(adev, type, parameter, size) \
    359 		((adev)->powerplay.pp_funcs->odn_edit_dpm_table(\
    360 			(adev)->powerplay.pp_handle, type, parameter, size))
    361 
    362 #define amdgpu_dpm_enable_mgpu_fan_boost(adev) \
    363 		((adev)->powerplay.pp_funcs->enable_mgpu_fan_boost(\
    364 			(adev)->powerplay.pp_handle))
    365 
    366 #define amdgpu_dpm_get_ppfeature_status(adev, buf) \
    367 		((adev)->powerplay.pp_funcs->get_ppfeature_status(\
    368 			(adev)->powerplay.pp_handle, (buf)))
    369 
    370 #define amdgpu_dpm_set_ppfeature_status(adev, ppfeatures) \
    371 		((adev)->powerplay.pp_funcs->set_ppfeature_status(\
    372 			(adev)->powerplay.pp_handle, (ppfeatures)))
    373 
    374 struct amdgpu_dpm {
    375 	struct amdgpu_ps        *ps;
    376 	/* number of valid power states */
    377 	int                     num_ps;
    378 	/* current power state that is active */
    379 	struct amdgpu_ps        *current_ps;
    380 	/* requested power state */
    381 	struct amdgpu_ps        *requested_ps;
    382 	/* boot up power state */
    383 	struct amdgpu_ps        *boot_ps;
    384 	/* default uvd power state */
    385 	struct amdgpu_ps        *uvd_ps;
    386 	/* vce requirements */
    387 	u32                  num_of_vce_states;
    388 	struct amd_vce_state vce_states[AMD_MAX_VCE_LEVELS];
    389 	enum amd_vce_level vce_level;
    390 	enum amd_pm_state_type state;
    391 	enum amd_pm_state_type user_state;
    392 	enum amd_pm_state_type last_state;
    393 	enum amd_pm_state_type last_user_state;
    394 	u32                     platform_caps;
    395 	u32                     voltage_response_time;
    396 	u32                     backbias_response_time;
    397 	void                    *priv;
    398 	u32			new_active_crtcs;
    399 	int			new_active_crtc_count;
    400 	u32			current_active_crtcs;
    401 	int			current_active_crtc_count;
    402 	struct amdgpu_dpm_dynamic_state dyn_state;
    403 	struct amdgpu_dpm_fan fan;
    404 	u32 tdp_limit;
    405 	u32 near_tdp_limit;
    406 	u32 near_tdp_limit_adjusted;
    407 	u32 sq_ramping_threshold;
    408 	u32 cac_leakage;
    409 	u16 tdp_od_limit;
    410 	u32 tdp_adjustment;
    411 	u16 load_line_slope;
    412 	bool power_control;
    413 	/* special states active */
    414 	bool                    thermal_active;
    415 	bool                    uvd_active;
    416 	bool                    vce_active;
    417 	/* thermal handling */
    418 	struct amdgpu_dpm_thermal thermal;
    419 	/* forced levels */
    420 	enum amd_dpm_forced_level forced_level;
    421 };
    422 
    423 struct amdgpu_pm {
    424 	struct mutex		mutex;
    425 	u32                     current_sclk;
    426 	u32                     current_mclk;
    427 	u32                     default_sclk;
    428 	u32                     default_mclk;
    429 	struct amdgpu_i2c_chan *i2c_bus;
    430 	/* internal thermal controller on rv6xx+ */
    431 	enum amdgpu_int_thermal_type int_thermal_type;
    432 	struct device	        *int_hwmon_dev;
    433 	/* fan control parameters */
    434 	bool                    no_fan;
    435 	u8                      fan_pulses_per_revolution;
    436 	u8                      fan_min_rpm;
    437 	u8                      fan_max_rpm;
    438 	/* dpm */
    439 	bool                    dpm_enabled;
    440 	bool                    sysfs_initialized;
    441 	struct amdgpu_dpm       dpm;
    442 	const struct firmware	*fw;	/* SMC firmware */
    443 	uint32_t                fw_version;
    444 	uint32_t                pcie_gen_mask;
    445 	uint32_t                pcie_mlw_mask;
    446 	struct amd_pp_display_configuration pm_display_cfg;/* set by dc */
    447 	uint32_t                smu_prv_buffer_size;
    448 	struct amdgpu_bo        *smu_prv_buffer;
    449 	bool ac_power;
    450 	/* powerplay feature */
    451 	uint32_t pp_feature;
    452 
    453 };
    454 
    455 #define R600_SSTU_DFLT                               0
    456 #define R600_SST_DFLT                                0x00C8
    457 
    458 /* XXX are these ok? */
    459 #define R600_TEMP_RANGE_MIN (90 * 1000)
    460 #define R600_TEMP_RANGE_MAX (120 * 1000)
    461 
    462 #define FDO_PWM_MODE_STATIC  1
    463 #define FDO_PWM_MODE_STATIC_RPM 5
    464 
    465 enum amdgpu_td {
    466 	AMDGPU_TD_AUTO,
    467 	AMDGPU_TD_UP,
    468 	AMDGPU_TD_DOWN,
    469 };
    470 
    471 enum amdgpu_display_watermark {
    472 	AMDGPU_DISPLAY_WATERMARK_LOW = 0,
    473 	AMDGPU_DISPLAY_WATERMARK_HIGH = 1,
    474 };
    475 
    476 enum amdgpu_display_gap
    477 {
    478     AMDGPU_PM_DISPLAY_GAP_VBLANK_OR_WM = 0,
    479     AMDGPU_PM_DISPLAY_GAP_VBLANK       = 1,
    480     AMDGPU_PM_DISPLAY_GAP_WATERMARK    = 2,
    481     AMDGPU_PM_DISPLAY_GAP_IGNORE       = 3,
    482 };
    483 
    484 void amdgpu_dpm_print_class_info(u32 class, u32 class2);
    485 void amdgpu_dpm_print_cap_info(u32 caps);
    486 void amdgpu_dpm_print_ps_status(struct amdgpu_device *adev,
    487 				struct amdgpu_ps *rps);
    488 u32 amdgpu_dpm_get_vblank_time(struct amdgpu_device *adev);
    489 u32 amdgpu_dpm_get_vrefresh(struct amdgpu_device *adev);
    490 void amdgpu_dpm_get_active_displays(struct amdgpu_device *adev);
    491 int amdgpu_dpm_read_sensor(struct amdgpu_device *adev, enum amd_pp_sensors sensor,
    492 			   void *data, uint32_t *size);
    493 
    494 bool amdgpu_is_internal_thermal_sensor(enum amdgpu_int_thermal_type sensor);
    495 
    496 int amdgpu_get_platform_caps(struct amdgpu_device *adev);
    497 
    498 int amdgpu_parse_extended_power_table(struct amdgpu_device *adev);
    499 void amdgpu_free_extended_power_table(struct amdgpu_device *adev);
    500 
    501 void amdgpu_add_thermal_controller(struct amdgpu_device *adev);
    502 
    503 enum amdgpu_pcie_gen amdgpu_get_pcie_gen_support(struct amdgpu_device *adev,
    504 						 u32 sys_mask,
    505 						 enum amdgpu_pcie_gen asic_gen,
    506 						 enum amdgpu_pcie_gen default_gen);
    507 
    508 struct amd_vce_state*
    509 amdgpu_get_vce_clock_state(void *handle, u32 idx);
    510 
    511 int amdgpu_dpm_set_powergating_by_smu(struct amdgpu_device *adev,
    512 				      uint32_t block_type, bool gate);
    513 
    514 extern int amdgpu_dpm_get_sclk(struct amdgpu_device *adev, bool low);
    515 
    516 extern int amdgpu_dpm_get_mclk(struct amdgpu_device *adev, bool low);
    517 
    518 int amdgpu_dpm_set_xgmi_pstate(struct amdgpu_device *adev,
    519 			       uint32_t pstate);
    520 
    521 int amdgpu_dpm_switch_power_profile(struct amdgpu_device *adev,
    522 				    enum PP_SMC_POWER_PROFILE type,
    523 				    bool en);
    524 
    525 int amdgpu_dpm_baco_reset(struct amdgpu_device *adev);
    526 
    527 int amdgpu_dpm_mode2_reset(struct amdgpu_device *adev);
    528 
    529 bool amdgpu_dpm_is_baco_supported(struct amdgpu_device *adev);
    530 
    531 int amdgpu_dpm_set_mp1_state(struct amdgpu_device *adev,
    532 			     enum pp_mp1_state mp1_state);
    533 
    534 int amdgpu_dpm_baco_exit(struct amdgpu_device *adev);
    535 
    536 int amdgpu_dpm_baco_enter(struct amdgpu_device *adev);
    537 
    538 #endif
    539