[PATCH 05/13] drm/amd/display: Add fSMC_MSG_SetDtbClk support
Paul Menzel
pmenzel at molgen.mpg.de
Sat Mar 19 07:47:51 UTC 2022
Dear Alex, dear Oliver,
Am 18.03.22 um 22:47 schrieb Alex Hung:
> From: Oliver Logush <oliver.logush at amd.com>
>
> [why]
> Needed to support dcn315
Please elaborate. What is wrong with `dcn315_smu_get_smu_fclk()`?
> Reviewed-by: Charlene Liu <Charlene.Liu at amd.com>
> Acked-by: Alex Hung <alex.hung at amd.com>
> Signed-off-by: Oliver Logush <oliver.logush at amd.com>
> ---
> .../display/dc/clk_mgr/dcn315/dcn315_smu.c | 19 +++++++++++++++----
> .../display/dc/clk_mgr/dcn315/dcn315_smu.h | 4 +++-
> 2 files changed, 18 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.c b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.c
> index 880ffea2afc6..2600313fea57 100644
> --- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.c
> +++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.c
> @@ -80,8 +80,8 @@ static const struct IP_BASE NBIO_BASE = { { { { 0x00000000, 0x00000014, 0x00000D
> #define VBIOSSMC_MSG_SetDppclkFreq 0x06 ///< Set DPP clock frequency in MHZ
> #define VBIOSSMC_MSG_SetHardMinDcfclkByFreq 0x07 ///< Set DCF clock frequency hard min in MHZ
> #define VBIOSSMC_MSG_SetMinDeepSleepDcfclk 0x08 ///< Set DCF clock minimum frequency in deep sleep in MHZ
> -#define VBIOSSMC_MSG_SetPhyclkVoltageByFreq 0x09 ///< Set display phy clock frequency in MHZ in case VMIN does not support phy frequency
> -#define VBIOSSMC_MSG_GetFclkFrequency 0x0A ///< Get FCLK frequency, return frequemcy in MHZ
> +#define VBIOSSMC_MSG_GetDtbclkFreq 0x09 ///< Get display dtb clock frequency in MHZ in case VMIN does not support phy frequency
> +#define VBIOSSMC_MSG_SetDtbClk 0x0A ///< Set dtb clock frequency, return frequemcy in MHZ
> #define VBIOSSMC_MSG_SetDisplayCount 0x0B ///< Inform PMFW of number of display connected
> #define VBIOSSMC_MSG_EnableTmdp48MHzRefclkPwrDown 0x0C ///< To ask PMFW turn off TMDP 48MHz refclk during display off to save power
> #define VBIOSSMC_MSG_UpdatePmeRestore 0x0D ///< To ask PMFW to write into Azalia for PME wake up event
> @@ -324,15 +324,26 @@ int dcn315_smu_get_dpref_clk(struct clk_mgr_internal *clk_mgr)
> return (dprefclk_get_mhz * 1000);
> }
>
> -int dcn315_smu_get_smu_fclk(struct clk_mgr_internal *clk_mgr)
> +int dcn315_smu_get_dtbclk(struct clk_mgr_internal *clk_mgr)
> {
> int fclk_get_mhz = -1;
>
> if (clk_mgr->smu_present) {
> fclk_get_mhz = dcn315_smu_send_msg_with_param(
> clk_mgr,
> - VBIOSSMC_MSG_GetFclkFrequency,
> + VBIOSSMC_MSG_GetDtbclkFreq,
> 0);
> }
> return (fclk_get_mhz * 1000);
> }
> +
> +void dcn315_smu_set_dtbclk(struct clk_mgr_internal *clk_mgr, bool enable)
> +{
> + if (!clk_mgr->smu_present)
> + return;
> +
> + dcn315_smu_send_msg_with_param(
> + clk_mgr,
> + VBIOSSMC_MSG_SetDtbClk,
> + enable);
> +}
> diff --git a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.h b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.h
> index 66fa42f8dd18..5aa3275ac7d8 100644
> --- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.h
> +++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.h
> @@ -37,6 +37,7 @@
> #define NUM_SOC_VOLTAGE_LEVELS 4
> #define NUM_DF_PSTATE_LEVELS 4
>
> +
Unrelated.
> typedef struct {
> uint16_t MinClock; // This is either DCFCLK or SOCCLK (in MHz)
> uint16_t MaxClock; // This is either DCFCLK or SOCCLK (in MHz)
> @@ -124,5 +125,6 @@ void dcn315_smu_transfer_wm_table_dram_2_smu(struct clk_mgr_internal *clk_mgr);
> void dcn315_smu_request_voltage_via_phyclk(struct clk_mgr_internal *clk_mgr, int requested_phyclk_khz);
> void dcn315_smu_enable_pme_wa(struct clk_mgr_internal *clk_mgr);
> int dcn315_smu_get_dpref_clk(struct clk_mgr_internal *clk_mgr);
> -int dcn315_smu_get_smu_fclk(struct clk_mgr_internal *clk_mgr);
> +int dcn315_smu_get_dtbclk(struct clk_mgr_internal *clk_mgr);
> +void dcn315_smu_set_dtbclk(struct clk_mgr_internal *clk_mgr, bool enable);
> #endif /* DAL_DC_315_SMU_H_ */
Kind regards,
Paul
More information about the amd-gfx
mailing list