drm/amd/pm: create a new holder for those APIs used only by legacy ASICs(si/kv)
Those APIs are used only by legacy ASICs(si/kv). They cannot be shared by other ASICs. So, we create a new holder for them. Signed-off-by: Evan Quan <evan.quan@amd.com> Reviewed-by: Lijo Lazar <lijo.lazar@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
28a31774b0
commit
84176663e7
|
@ -2532,7 +2532,7 @@ static void dce_v10_0_crtc_dpms(struct drm_crtc *crtc, int mode)
|
|||
break;
|
||||
}
|
||||
/* adjust pm to dpms */
|
||||
amdgpu_pm_compute_clocks(adev);
|
||||
amdgpu_dpm_compute_clocks(adev);
|
||||
}
|
||||
|
||||
static void dce_v10_0_crtc_prepare(struct drm_crtc *crtc)
|
||||
|
|
|
@ -2608,7 +2608,7 @@ static void dce_v11_0_crtc_dpms(struct drm_crtc *crtc, int mode)
|
|||
break;
|
||||
}
|
||||
/* adjust pm to dpms */
|
||||
amdgpu_pm_compute_clocks(adev);
|
||||
amdgpu_dpm_compute_clocks(adev);
|
||||
}
|
||||
|
||||
static void dce_v11_0_crtc_prepare(struct drm_crtc *crtc)
|
||||
|
|
|
@ -2424,7 +2424,7 @@ static void dce_v6_0_crtc_dpms(struct drm_crtc *crtc, int mode)
|
|||
break;
|
||||
}
|
||||
/* adjust pm to dpms */
|
||||
amdgpu_pm_compute_clocks(adev);
|
||||
amdgpu_dpm_compute_clocks(adev);
|
||||
}
|
||||
|
||||
static void dce_v6_0_crtc_prepare(struct drm_crtc *crtc)
|
||||
|
|
|
@ -2433,7 +2433,7 @@ static void dce_v8_0_crtc_dpms(struct drm_crtc *crtc, int mode)
|
|||
break;
|
||||
}
|
||||
/* adjust pm to dpms */
|
||||
amdgpu_pm_compute_clocks(adev);
|
||||
amdgpu_dpm_compute_clocks(adev);
|
||||
}
|
||||
|
||||
static void dce_v8_0_crtc_prepare(struct drm_crtc *crtc)
|
||||
|
|
|
@ -101,7 +101,7 @@ bool dm_pp_apply_display_requirements(
|
|||
|
||||
amdgpu_dpm_display_configuration_change(adev, &adev->pm.pm_display_cfg);
|
||||
|
||||
amdgpu_pm_compute_clocks(adev);
|
||||
amdgpu_dpm_compute_clocks(adev);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -404,6 +404,7 @@ struct amd_pm_funcs {
|
|||
int (*get_dpm_clock_table)(void *handle,
|
||||
struct dpm_clocks *clock_table);
|
||||
int (*get_smu_prv_buf_details)(void *handle, void **addr, size_t *size);
|
||||
int (*change_power_state)(void *handle);
|
||||
};
|
||||
|
||||
struct metrics_table_header {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -374,24 +374,10 @@ enum amdgpu_display_gap
|
|||
AMDGPU_PM_DISPLAY_GAP_IGNORE = 3,
|
||||
};
|
||||
|
||||
void amdgpu_dpm_print_class_info(u32 class, u32 class2);
|
||||
void amdgpu_dpm_print_cap_info(u32 caps);
|
||||
void amdgpu_dpm_print_ps_status(struct amdgpu_device *adev,
|
||||
struct amdgpu_ps *rps);
|
||||
u32 amdgpu_dpm_get_vblank_time(struct amdgpu_device *adev);
|
||||
int amdgpu_dpm_read_sensor(struct amdgpu_device *adev, enum amd_pp_sensors sensor,
|
||||
void *data, uint32_t *size);
|
||||
|
||||
int amdgpu_get_platform_caps(struct amdgpu_device *adev);
|
||||
|
||||
int amdgpu_parse_extended_power_table(struct amdgpu_device *adev);
|
||||
void amdgpu_free_extended_power_table(struct amdgpu_device *adev);
|
||||
|
||||
void amdgpu_add_thermal_controller(struct amdgpu_device *adev);
|
||||
|
||||
struct amd_vce_state*
|
||||
amdgpu_get_vce_clock_state(void *handle, u32 idx);
|
||||
|
||||
int amdgpu_dpm_set_powergating_by_smu(struct amdgpu_device *adev,
|
||||
uint32_t block_type, bool gate);
|
||||
|
||||
|
@ -442,11 +428,10 @@ int amdgpu_dpm_read_sensor(struct amdgpu_device *adev, enum amd_pp_sensors senso
|
|||
|
||||
void amdgpu_dpm_thermal_work_handler(struct work_struct *work);
|
||||
|
||||
void amdgpu_pm_compute_clocks(struct amdgpu_device *adev);
|
||||
void amdgpu_dpm_compute_clocks(struct amdgpu_device *adev);
|
||||
void amdgpu_dpm_enable_uvd(struct amdgpu_device *adev, bool enable);
|
||||
void amdgpu_dpm_enable_vce(struct amdgpu_device *adev, bool enable);
|
||||
void amdgpu_dpm_enable_jpeg(struct amdgpu_device *adev, bool enable);
|
||||
void amdgpu_pm_print_power_states(struct amdgpu_device *adev);
|
||||
int amdgpu_pm_load_smu_firmware(struct amdgpu_device *adev, uint32_t *smu_version);
|
||||
int amdgpu_dpm_handle_passthrough_sbr(struct amdgpu_device *adev, bool enable);
|
||||
int amdgpu_dpm_send_hbm_bad_pages_num(struct amdgpu_device *adev, uint32_t size);
|
||||
|
|
|
@ -28,7 +28,7 @@ AMD_POWERPLAY = $(addsuffix /Makefile,$(addprefix $(FULL_AMD_PATH)/pm/powerplay/
|
|||
|
||||
include $(AMD_POWERPLAY)
|
||||
|
||||
POWER_MGR-y = amd_powerplay.o
|
||||
POWER_MGR-y = amd_powerplay.o legacy_dpm.o
|
||||
|
||||
POWER_MGR-$(CONFIG_DRM_AMDGPU_CIK)+= kv_dpm.o kv_smc.o
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
|
||||
#include "gca/gfx_7_2_d.h"
|
||||
#include "gca/gfx_7_2_sh_mask.h"
|
||||
#include "legacy_dpm.h"
|
||||
|
||||
#define KV_MAX_DEEPSLEEP_DIVIDER_ID 5
|
||||
#define KV_MINIMUM_ENGINE_CLOCK 800
|
||||
|
@ -3087,7 +3088,7 @@ static int kv_dpm_hw_init(void *handle)
|
|||
else
|
||||
adev->pm.dpm_enabled = true;
|
||||
mutex_unlock(&adev->pm.mutex);
|
||||
amdgpu_pm_compute_clocks(adev);
|
||||
amdgpu_dpm_compute_clocks(adev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -3135,7 +3136,7 @@ static int kv_dpm_resume(void *handle)
|
|||
adev->pm.dpm_enabled = true;
|
||||
mutex_unlock(&adev->pm.mutex);
|
||||
if (adev->pm.dpm_enabled)
|
||||
amdgpu_pm_compute_clocks(adev);
|
||||
amdgpu_dpm_compute_clocks(adev);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -3389,6 +3390,7 @@ static const struct amd_pm_funcs kv_dpm_funcs = {
|
|||
.get_vce_clock_state = amdgpu_get_vce_clock_state,
|
||||
.check_state_equal = kv_check_state_equal,
|
||||
.read_sensor = &kv_dpm_read_sensor,
|
||||
.change_power_state = amdgpu_dpm_change_power_state_locked,
|
||||
};
|
||||
|
||||
static const struct amdgpu_irq_src_funcs kv_dpm_irq_funcs = {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright 2021 Advanced Micro Devices, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
#ifndef __LEGACY_DPM_H__
|
||||
#define __LEGACY_DPM_H__
|
||||
|
||||
void amdgpu_dpm_print_class_info(u32 class, u32 class2);
|
||||
void amdgpu_dpm_print_cap_info(u32 caps);
|
||||
void amdgpu_dpm_print_ps_status(struct amdgpu_device *adev,
|
||||
struct amdgpu_ps *rps);
|
||||
int amdgpu_get_platform_caps(struct amdgpu_device *adev);
|
||||
int amdgpu_parse_extended_power_table(struct amdgpu_device *adev);
|
||||
void amdgpu_free_extended_power_table(struct amdgpu_device *adev);
|
||||
void amdgpu_add_thermal_controller(struct amdgpu_device *adev);
|
||||
struct amd_vce_state* amdgpu_get_vce_clock_state(void *handle, u32 idx);
|
||||
int amdgpu_dpm_change_power_state_locked(void *handle);
|
||||
void amdgpu_pm_print_power_states(struct amdgpu_device *adev);
|
||||
#endif
|
|
@ -37,6 +37,7 @@
|
|||
#include <linux/math64.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/firmware.h>
|
||||
#include <legacy_dpm.h>
|
||||
|
||||
#define MC_CG_ARB_FREQ_F0 0x0a
|
||||
#define MC_CG_ARB_FREQ_F1 0x0b
|
||||
|
@ -7800,7 +7801,7 @@ static int si_dpm_hw_init(void *handle)
|
|||
else
|
||||
adev->pm.dpm_enabled = true;
|
||||
mutex_unlock(&adev->pm.mutex);
|
||||
amdgpu_pm_compute_clocks(adev);
|
||||
amdgpu_dpm_compute_clocks(adev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -7848,7 +7849,7 @@ static int si_dpm_resume(void *handle)
|
|||
adev->pm.dpm_enabled = true;
|
||||
mutex_unlock(&adev->pm.mutex);
|
||||
if (adev->pm.dpm_enabled)
|
||||
amdgpu_pm_compute_clocks(adev);
|
||||
amdgpu_dpm_compute_clocks(adev);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -8101,6 +8102,7 @@ static const struct amd_pm_funcs si_dpm_funcs = {
|
|||
.check_state_equal = &si_check_state_equal,
|
||||
.get_vce_clock_state = amdgpu_get_vce_clock_state,
|
||||
.read_sensor = &si_dpm_read_sensor,
|
||||
.change_power_state = amdgpu_dpm_change_power_state_locked,
|
||||
};
|
||||
|
||||
static const struct amdgpu_irq_src_funcs si_dpm_irq_funcs = {
|
||||
|
|
Loading…
Reference in New Issue