mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 23:52:08 +02:00
drm/amd/display: Add trigger FIFO resync path for DCN35
[Why] FIFO error can occur if we don't trigger a DISPCLK change after touching K1/K2 dividers. For 4k144 eDP + hotplug of USB-C DP display we see FIFO underflow. [How] We have the path to trigger the resync as the workaround in DCN314/DCN32, it just needs to be ported over to DCN35. Reviewed-by: Charlene Liu <charlene.liu@amd.com> Acked-by: Wayne Lin <wayne.lin@amd.com> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
9ba971b253
commit
47745acc5e
|
|
@ -41,6 +41,15 @@
|
|||
#define DC_LOGGER \
|
||||
dccg->ctx->logger
|
||||
|
||||
static void dccg35_trigger_dio_fifo_resync(struct dccg *dccg)
|
||||
{
|
||||
struct dcn_dccg *dccg_dcn = TO_DCN_DCCG(dccg);
|
||||
uint32_t dispclk_rdivider_value = 0;
|
||||
|
||||
REG_GET(DENTIST_DISPCLK_CNTL, DENTIST_DISPCLK_RDIVIDER, &dispclk_rdivider_value);
|
||||
REG_UPDATE(DENTIST_DISPCLK_CNTL, DENTIST_DISPCLK_WDIVIDER, dispclk_rdivider_value);
|
||||
}
|
||||
|
||||
static void dcn35_set_dppclk_enable(struct dccg *dccg,
|
||||
uint32_t dpp_inst, uint32_t enable)
|
||||
{
|
||||
|
|
@ -1056,6 +1065,7 @@ static const struct dccg_funcs dccg35_funcs = {
|
|||
.enable_dsc = dccg35_enable_dscclk,
|
||||
.set_pixel_rate_div = dccg35_set_pixel_rate_div,
|
||||
.get_pixel_rate_div = dccg35_get_pixel_rate_div,
|
||||
.trigger_dio_fifo_resync = dccg35_trigger_dio_fifo_resync,
|
||||
.set_valid_pixel_rate = dccg35_set_valid_pixel_rate,
|
||||
.enable_symclk_se = dccg35_enable_symclk_se,
|
||||
.disable_symclk_se = dccg35_disable_symclk_se,
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include "dcn30/dcn30_hwseq.h"
|
||||
#include "dcn301/dcn301_hwseq.h"
|
||||
#include "dcn31/dcn31_hwseq.h"
|
||||
#include "dcn314/dcn314_hwseq.h"
|
||||
#include "dcn32/dcn32_hwseq.h"
|
||||
#include "dcn35/dcn35_hwseq.h"
|
||||
|
||||
|
|
@ -158,6 +159,7 @@ static const struct hwseq_private_funcs dcn35_private_funcs = {
|
|||
.setup_hpo_hw_control = dcn35_setup_hpo_hw_control,
|
||||
.calculate_dccg_k1_k2_values = dcn32_calculate_dccg_k1_k2_values,
|
||||
.set_pixels_per_cycle = dcn32_set_pixels_per_cycle,
|
||||
.resync_fifo_dccg_dio = dcn314_resync_fifo_dccg_dio,
|
||||
.is_dp_dig_pixel_rate_div_policy = dcn32_is_dp_dig_pixel_rate_div_policy,
|
||||
.calculate_pix_rate_divider = dcn32_calculate_pix_rate_divider,
|
||||
.dsc_pg_control = dcn35_dsc_pg_control,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user