162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * Copyright 2013 Advanced Micro Devices, Inc. 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a 562306a36Sopenharmony_ci * copy of this software and associated documentation files (the "Software"), 662306a36Sopenharmony_ci * to deal in the Software without restriction, including without limitation 762306a36Sopenharmony_ci * the rights to use, copy, modify, merge, publish, distribute, sublicense, 862306a36Sopenharmony_ci * and/or sell copies of the Software, and to permit persons to whom the 962306a36Sopenharmony_ci * Software is furnished to do so, subject to the following conditions: 1062306a36Sopenharmony_ci * 1162306a36Sopenharmony_ci * The above copyright notice and this permission notice shall be included in 1262306a36Sopenharmony_ci * all copies or substantial portions of the Software. 1362306a36Sopenharmony_ci * 1462306a36Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1562306a36Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1662306a36Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1762306a36Sopenharmony_ci * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 1862306a36Sopenharmony_ci * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 1962306a36Sopenharmony_ci * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 2062306a36Sopenharmony_ci * OTHER DEALINGS IN THE SOFTWARE. 2162306a36Sopenharmony_ci * 2262306a36Sopenharmony_ci */ 2362306a36Sopenharmony_ci#ifndef __CI_DPM_H__ 2462306a36Sopenharmony_ci#define __CI_DPM_H__ 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci#include "ppsmc.h" 2762306a36Sopenharmony_ci#include "radeon.h" 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci#define SMU__NUM_SCLK_DPM_STATE 8 3062306a36Sopenharmony_ci#define SMU__NUM_MCLK_DPM_LEVELS 6 3162306a36Sopenharmony_ci#define SMU__NUM_LCLK_DPM_LEVELS 8 3262306a36Sopenharmony_ci#define SMU__NUM_PCIE_DPM_LEVELS 8 3362306a36Sopenharmony_ci#include "smu7_discrete.h" 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci#define CISLANDS_MAX_HARDWARE_POWERLEVELS 2 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci#define CISLANDS_UNUSED_GPIO_PIN 0x7F 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_cistruct ci_pl { 4062306a36Sopenharmony_ci u32 mclk; 4162306a36Sopenharmony_ci u32 sclk; 4262306a36Sopenharmony_ci enum radeon_pcie_gen pcie_gen; 4362306a36Sopenharmony_ci u16 pcie_lane; 4462306a36Sopenharmony_ci}; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_cistruct ci_ps { 4762306a36Sopenharmony_ci u16 performance_level_count; 4862306a36Sopenharmony_ci bool dc_compatible; 4962306a36Sopenharmony_ci u32 sclk_t; 5062306a36Sopenharmony_ci struct ci_pl performance_levels[CISLANDS_MAX_HARDWARE_POWERLEVELS]; 5162306a36Sopenharmony_ci}; 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_cistruct ci_dpm_level { 5462306a36Sopenharmony_ci bool enabled; 5562306a36Sopenharmony_ci u32 value; 5662306a36Sopenharmony_ci u32 param1; 5762306a36Sopenharmony_ci}; 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci#define CISLAND_MAX_DEEPSLEEP_DIVIDER_ID 5 6062306a36Sopenharmony_ci#define MAX_REGULAR_DPM_NUMBER 8 6162306a36Sopenharmony_ci#define CISLAND_MINIMUM_ENGINE_CLOCK 800 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_cistruct ci_single_dpm_table { 6462306a36Sopenharmony_ci u32 count; 6562306a36Sopenharmony_ci struct ci_dpm_level dpm_levels[MAX_REGULAR_DPM_NUMBER]; 6662306a36Sopenharmony_ci}; 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_cistruct ci_dpm_table { 6962306a36Sopenharmony_ci struct ci_single_dpm_table sclk_table; 7062306a36Sopenharmony_ci struct ci_single_dpm_table mclk_table; 7162306a36Sopenharmony_ci struct ci_single_dpm_table pcie_speed_table; 7262306a36Sopenharmony_ci struct ci_single_dpm_table vddc_table; 7362306a36Sopenharmony_ci struct ci_single_dpm_table vddci_table; 7462306a36Sopenharmony_ci struct ci_single_dpm_table mvdd_table; 7562306a36Sopenharmony_ci}; 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_cistruct ci_mc_reg_entry { 7862306a36Sopenharmony_ci u32 mclk_max; 7962306a36Sopenharmony_ci u32 mc_data[SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE]; 8062306a36Sopenharmony_ci}; 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_cistruct ci_mc_reg_table { 8362306a36Sopenharmony_ci u8 last; 8462306a36Sopenharmony_ci u8 num_entries; 8562306a36Sopenharmony_ci u16 valid_flag; 8662306a36Sopenharmony_ci struct ci_mc_reg_entry mc_reg_table_entry[MAX_AC_TIMING_ENTRIES]; 8762306a36Sopenharmony_ci SMU7_Discrete_MCRegisterAddress mc_reg_address[SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE]; 8862306a36Sopenharmony_ci}; 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_cistruct ci_ulv_parm 9162306a36Sopenharmony_ci{ 9262306a36Sopenharmony_ci bool supported; 9362306a36Sopenharmony_ci u32 cg_ulv_parameter; 9462306a36Sopenharmony_ci u32 volt_change_delay; 9562306a36Sopenharmony_ci struct ci_pl pl; 9662306a36Sopenharmony_ci}; 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci#define CISLANDS_MAX_LEAKAGE_COUNT 8 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_cistruct ci_leakage_voltage { 10162306a36Sopenharmony_ci u16 count; 10262306a36Sopenharmony_ci u16 leakage_id[CISLANDS_MAX_LEAKAGE_COUNT]; 10362306a36Sopenharmony_ci u16 actual_voltage[CISLANDS_MAX_LEAKAGE_COUNT]; 10462306a36Sopenharmony_ci}; 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_cistruct ci_dpm_level_enable_mask { 10762306a36Sopenharmony_ci u32 uvd_dpm_enable_mask; 10862306a36Sopenharmony_ci u32 vce_dpm_enable_mask; 10962306a36Sopenharmony_ci u32 acp_dpm_enable_mask; 11062306a36Sopenharmony_ci u32 samu_dpm_enable_mask; 11162306a36Sopenharmony_ci u32 sclk_dpm_enable_mask; 11262306a36Sopenharmony_ci u32 mclk_dpm_enable_mask; 11362306a36Sopenharmony_ci u32 pcie_dpm_enable_mask; 11462306a36Sopenharmony_ci}; 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_cistruct ci_vbios_boot_state 11762306a36Sopenharmony_ci{ 11862306a36Sopenharmony_ci u16 mvdd_bootup_value; 11962306a36Sopenharmony_ci u16 vddc_bootup_value; 12062306a36Sopenharmony_ci u16 vddci_bootup_value; 12162306a36Sopenharmony_ci u32 sclk_bootup_value; 12262306a36Sopenharmony_ci u32 mclk_bootup_value; 12362306a36Sopenharmony_ci u16 pcie_gen_bootup_value; 12462306a36Sopenharmony_ci u16 pcie_lane_bootup_value; 12562306a36Sopenharmony_ci}; 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_cistruct ci_clock_registers { 12862306a36Sopenharmony_ci u32 cg_spll_func_cntl; 12962306a36Sopenharmony_ci u32 cg_spll_func_cntl_2; 13062306a36Sopenharmony_ci u32 cg_spll_func_cntl_3; 13162306a36Sopenharmony_ci u32 cg_spll_func_cntl_4; 13262306a36Sopenharmony_ci u32 cg_spll_spread_spectrum; 13362306a36Sopenharmony_ci u32 cg_spll_spread_spectrum_2; 13462306a36Sopenharmony_ci u32 dll_cntl; 13562306a36Sopenharmony_ci u32 mclk_pwrmgt_cntl; 13662306a36Sopenharmony_ci u32 mpll_ad_func_cntl; 13762306a36Sopenharmony_ci u32 mpll_dq_func_cntl; 13862306a36Sopenharmony_ci u32 mpll_func_cntl; 13962306a36Sopenharmony_ci u32 mpll_func_cntl_1; 14062306a36Sopenharmony_ci u32 mpll_func_cntl_2; 14162306a36Sopenharmony_ci u32 mpll_ss1; 14262306a36Sopenharmony_ci u32 mpll_ss2; 14362306a36Sopenharmony_ci}; 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_cistruct ci_thermal_temperature_setting { 14662306a36Sopenharmony_ci s32 temperature_low; 14762306a36Sopenharmony_ci s32 temperature_high; 14862306a36Sopenharmony_ci s32 temperature_shutdown; 14962306a36Sopenharmony_ci}; 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_cistruct ci_pcie_perf_range { 15262306a36Sopenharmony_ci u16 max; 15362306a36Sopenharmony_ci u16 min; 15462306a36Sopenharmony_ci}; 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_cienum ci_pt_config_reg_type { 15762306a36Sopenharmony_ci CISLANDS_CONFIGREG_MMR = 0, 15862306a36Sopenharmony_ci CISLANDS_CONFIGREG_SMC_IND, 15962306a36Sopenharmony_ci CISLANDS_CONFIGREG_DIDT_IND, 16062306a36Sopenharmony_ci CISLANDS_CONFIGREG_CACHE, 16162306a36Sopenharmony_ci CISLANDS_CONFIGREG_MAX 16262306a36Sopenharmony_ci}; 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_ci#define POWERCONTAINMENT_FEATURE_BAPM 0x00000001 16562306a36Sopenharmony_ci#define POWERCONTAINMENT_FEATURE_TDCLimit 0x00000002 16662306a36Sopenharmony_ci#define POWERCONTAINMENT_FEATURE_PkgPwrLimit 0x00000004 16762306a36Sopenharmony_ci 16862306a36Sopenharmony_cistruct ci_pt_config_reg { 16962306a36Sopenharmony_ci u32 offset; 17062306a36Sopenharmony_ci u32 mask; 17162306a36Sopenharmony_ci u32 shift; 17262306a36Sopenharmony_ci u32 value; 17362306a36Sopenharmony_ci enum ci_pt_config_reg_type type; 17462306a36Sopenharmony_ci}; 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_cistruct ci_pt_defaults { 17762306a36Sopenharmony_ci u8 svi_load_line_en; 17862306a36Sopenharmony_ci u8 svi_load_line_vddc; 17962306a36Sopenharmony_ci u8 tdc_vddc_throttle_release_limit_perc; 18062306a36Sopenharmony_ci u8 tdc_mawt; 18162306a36Sopenharmony_ci u8 tdc_waterfall_ctl; 18262306a36Sopenharmony_ci u8 dte_ambient_temp_base; 18362306a36Sopenharmony_ci u32 display_cac; 18462306a36Sopenharmony_ci u32 bapm_temp_gradient; 18562306a36Sopenharmony_ci u16 bapmti_r[SMU7_DTE_ITERATIONS * SMU7_DTE_SOURCES * SMU7_DTE_SINKS]; 18662306a36Sopenharmony_ci u16 bapmti_rc[SMU7_DTE_ITERATIONS * SMU7_DTE_SOURCES * SMU7_DTE_SINKS]; 18762306a36Sopenharmony_ci}; 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ci#define DPMTABLE_OD_UPDATE_SCLK 0x00000001 19062306a36Sopenharmony_ci#define DPMTABLE_OD_UPDATE_MCLK 0x00000002 19162306a36Sopenharmony_ci#define DPMTABLE_UPDATE_SCLK 0x00000004 19262306a36Sopenharmony_ci#define DPMTABLE_UPDATE_MCLK 0x00000008 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_cistruct ci_power_info { 19562306a36Sopenharmony_ci struct ci_dpm_table dpm_table; 19662306a36Sopenharmony_ci u32 voltage_control; 19762306a36Sopenharmony_ci u32 mvdd_control; 19862306a36Sopenharmony_ci u32 vddci_control; 19962306a36Sopenharmony_ci u32 active_auto_throttle_sources; 20062306a36Sopenharmony_ci struct ci_clock_registers clock_registers; 20162306a36Sopenharmony_ci u16 acpi_vddc; 20262306a36Sopenharmony_ci u16 acpi_vddci; 20362306a36Sopenharmony_ci enum radeon_pcie_gen force_pcie_gen; 20462306a36Sopenharmony_ci enum radeon_pcie_gen acpi_pcie_gen; 20562306a36Sopenharmony_ci struct ci_leakage_voltage vddc_leakage; 20662306a36Sopenharmony_ci struct ci_leakage_voltage vddci_leakage; 20762306a36Sopenharmony_ci u16 max_vddc_in_pp_table; 20862306a36Sopenharmony_ci u16 min_vddc_in_pp_table; 20962306a36Sopenharmony_ci u16 max_vddci_in_pp_table; 21062306a36Sopenharmony_ci u16 min_vddci_in_pp_table; 21162306a36Sopenharmony_ci u32 mclk_strobe_mode_threshold; 21262306a36Sopenharmony_ci u32 mclk_stutter_mode_threshold; 21362306a36Sopenharmony_ci u32 mclk_edc_enable_threshold; 21462306a36Sopenharmony_ci u32 mclk_edc_wr_enable_threshold; 21562306a36Sopenharmony_ci struct ci_vbios_boot_state vbios_boot_state; 21662306a36Sopenharmony_ci /* smc offsets */ 21762306a36Sopenharmony_ci u32 sram_end; 21862306a36Sopenharmony_ci u32 dpm_table_start; 21962306a36Sopenharmony_ci u32 soft_regs_start; 22062306a36Sopenharmony_ci u32 mc_reg_table_start; 22162306a36Sopenharmony_ci u32 fan_table_start; 22262306a36Sopenharmony_ci u32 arb_table_start; 22362306a36Sopenharmony_ci /* smc tables */ 22462306a36Sopenharmony_ci SMU7_Discrete_DpmTable smc_state_table; 22562306a36Sopenharmony_ci SMU7_Discrete_MCRegisters smc_mc_reg_table; 22662306a36Sopenharmony_ci SMU7_Discrete_PmFuses smc_powertune_table; 22762306a36Sopenharmony_ci /* other stuff */ 22862306a36Sopenharmony_ci struct ci_mc_reg_table mc_reg_table; 22962306a36Sopenharmony_ci struct atom_voltage_table vddc_voltage_table; 23062306a36Sopenharmony_ci struct atom_voltage_table vddci_voltage_table; 23162306a36Sopenharmony_ci struct atom_voltage_table mvdd_voltage_table; 23262306a36Sopenharmony_ci struct ci_ulv_parm ulv; 23362306a36Sopenharmony_ci u32 power_containment_features; 23462306a36Sopenharmony_ci const struct ci_pt_defaults *powertune_defaults; 23562306a36Sopenharmony_ci u32 dte_tj_offset; 23662306a36Sopenharmony_ci bool vddc_phase_shed_control; 23762306a36Sopenharmony_ci struct ci_thermal_temperature_setting thermal_temp_setting; 23862306a36Sopenharmony_ci struct ci_dpm_level_enable_mask dpm_level_enable_mask; 23962306a36Sopenharmony_ci u32 need_update_smu7_dpm_table; 24062306a36Sopenharmony_ci u32 sclk_dpm_key_disabled; 24162306a36Sopenharmony_ci u32 mclk_dpm_key_disabled; 24262306a36Sopenharmony_ci u32 pcie_dpm_key_disabled; 24362306a36Sopenharmony_ci u32 thermal_sclk_dpm_enabled; 24462306a36Sopenharmony_ci struct ci_pcie_perf_range pcie_gen_performance; 24562306a36Sopenharmony_ci struct ci_pcie_perf_range pcie_lane_performance; 24662306a36Sopenharmony_ci struct ci_pcie_perf_range pcie_gen_powersaving; 24762306a36Sopenharmony_ci struct ci_pcie_perf_range pcie_lane_powersaving; 24862306a36Sopenharmony_ci u32 activity_target[SMU7_MAX_LEVELS_GRAPHICS]; 24962306a36Sopenharmony_ci u32 mclk_activity_target; 25062306a36Sopenharmony_ci u32 low_sclk_interrupt_t; 25162306a36Sopenharmony_ci u32 last_mclk_dpm_enable_mask; 25262306a36Sopenharmony_ci u32 sys_pcie_mask; 25362306a36Sopenharmony_ci /* caps */ 25462306a36Sopenharmony_ci bool caps_power_containment; 25562306a36Sopenharmony_ci bool caps_cac; 25662306a36Sopenharmony_ci bool caps_sq_ramping; 25762306a36Sopenharmony_ci bool caps_db_ramping; 25862306a36Sopenharmony_ci bool caps_td_ramping; 25962306a36Sopenharmony_ci bool caps_tcp_ramping; 26062306a36Sopenharmony_ci bool caps_fps; 26162306a36Sopenharmony_ci bool caps_sclk_ds; 26262306a36Sopenharmony_ci bool caps_sclk_ss_support; 26362306a36Sopenharmony_ci bool caps_mclk_ss_support; 26462306a36Sopenharmony_ci bool caps_uvd_dpm; 26562306a36Sopenharmony_ci bool caps_vce_dpm; 26662306a36Sopenharmony_ci bool caps_samu_dpm; 26762306a36Sopenharmony_ci bool caps_acp_dpm; 26862306a36Sopenharmony_ci bool caps_automatic_dc_transition; 26962306a36Sopenharmony_ci bool caps_sclk_throttle_low_notification; 27062306a36Sopenharmony_ci bool caps_dynamic_ac_timing; 27162306a36Sopenharmony_ci bool caps_od_fuzzy_fan_control_support; 27262306a36Sopenharmony_ci /* flags */ 27362306a36Sopenharmony_ci bool thermal_protection; 27462306a36Sopenharmony_ci bool pcie_performance_request; 27562306a36Sopenharmony_ci bool dynamic_ss; 27662306a36Sopenharmony_ci bool dll_default_on; 27762306a36Sopenharmony_ci bool cac_enabled; 27862306a36Sopenharmony_ci bool uvd_enabled; 27962306a36Sopenharmony_ci bool battery_state; 28062306a36Sopenharmony_ci bool pspp_notify_required; 28162306a36Sopenharmony_ci bool mem_gddr5; 28262306a36Sopenharmony_ci bool enable_bapm_feature; 28362306a36Sopenharmony_ci bool enable_tdc_limit_feature; 28462306a36Sopenharmony_ci bool enable_pkg_pwr_tracking_feature; 28562306a36Sopenharmony_ci bool use_pcie_performance_levels; 28662306a36Sopenharmony_ci bool use_pcie_powersaving_levels; 28762306a36Sopenharmony_ci bool uvd_power_gated; 28862306a36Sopenharmony_ci /* driver states */ 28962306a36Sopenharmony_ci struct radeon_ps current_rps; 29062306a36Sopenharmony_ci struct ci_ps current_ps; 29162306a36Sopenharmony_ci struct radeon_ps requested_rps; 29262306a36Sopenharmony_ci struct ci_ps requested_ps; 29362306a36Sopenharmony_ci /* fan control */ 29462306a36Sopenharmony_ci bool fan_ctrl_is_in_default_mode; 29562306a36Sopenharmony_ci bool fan_is_controlled_by_smc; 29662306a36Sopenharmony_ci u32 t_min; 29762306a36Sopenharmony_ci u32 fan_ctrl_default_mode; 29862306a36Sopenharmony_ci}; 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_ci#define CISLANDS_VOLTAGE_CONTROL_NONE 0x0 30162306a36Sopenharmony_ci#define CISLANDS_VOLTAGE_CONTROL_BY_GPIO 0x1 30262306a36Sopenharmony_ci#define CISLANDS_VOLTAGE_CONTROL_BY_SVID2 0x2 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_ci#define CISLANDS_Q88_FORMAT_CONVERSION_UNIT 256 30562306a36Sopenharmony_ci 30662306a36Sopenharmony_ci#define CISLANDS_VRC_DFLT0 0x3FFFC000 30762306a36Sopenharmony_ci#define CISLANDS_VRC_DFLT1 0x000400 30862306a36Sopenharmony_ci#define CISLANDS_VRC_DFLT2 0xC00080 30962306a36Sopenharmony_ci#define CISLANDS_VRC_DFLT3 0xC00200 31062306a36Sopenharmony_ci#define CISLANDS_VRC_DFLT4 0xC01680 31162306a36Sopenharmony_ci#define CISLANDS_VRC_DFLT5 0xC00033 31262306a36Sopenharmony_ci#define CISLANDS_VRC_DFLT6 0xC00033 31362306a36Sopenharmony_ci#define CISLANDS_VRC_DFLT7 0x3FFFC000 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ci#define CISLANDS_CGULVPARAMETER_DFLT 0x00040035 31662306a36Sopenharmony_ci#define CISLAND_TARGETACTIVITY_DFLT 30 31762306a36Sopenharmony_ci#define CISLAND_MCLK_TARGETACTIVITY_DFLT 10 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_ci#define PCIE_PERF_REQ_REMOVE_REGISTRY 0 32062306a36Sopenharmony_ci#define PCIE_PERF_REQ_FORCE_LOWPOWER 1 32162306a36Sopenharmony_ci#define PCIE_PERF_REQ_PECI_GEN1 2 32262306a36Sopenharmony_ci#define PCIE_PERF_REQ_PECI_GEN2 3 32362306a36Sopenharmony_ci#define PCIE_PERF_REQ_PECI_GEN3 4 32462306a36Sopenharmony_ci 32562306a36Sopenharmony_ciint ci_copy_bytes_to_smc(struct radeon_device *rdev, 32662306a36Sopenharmony_ci u32 smc_start_address, 32762306a36Sopenharmony_ci const u8 *src, u32 byte_count, u32 limit); 32862306a36Sopenharmony_civoid ci_start_smc(struct radeon_device *rdev); 32962306a36Sopenharmony_civoid ci_reset_smc(struct radeon_device *rdev); 33062306a36Sopenharmony_ciint ci_program_jump_on_start(struct radeon_device *rdev); 33162306a36Sopenharmony_civoid ci_stop_smc_clock(struct radeon_device *rdev); 33262306a36Sopenharmony_civoid ci_start_smc_clock(struct radeon_device *rdev); 33362306a36Sopenharmony_cibool ci_is_smc_running(struct radeon_device *rdev); 33462306a36Sopenharmony_ciPPSMC_Result ci_wait_for_smc_inactive(struct radeon_device *rdev); 33562306a36Sopenharmony_ciint ci_load_smc_ucode(struct radeon_device *rdev, u32 limit); 33662306a36Sopenharmony_ciint ci_read_smc_sram_dword(struct radeon_device *rdev, 33762306a36Sopenharmony_ci u32 smc_address, u32 *value, u32 limit); 33862306a36Sopenharmony_ciint ci_write_smc_sram_dword(struct radeon_device *rdev, 33962306a36Sopenharmony_ci u32 smc_address, u32 value, u32 limit); 34062306a36Sopenharmony_ci 34162306a36Sopenharmony_ci#endif 342