diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c index 092275d..b2256e5 100644 --- a/drivers/gpu/drm/radeon/atombios_encoders.c +++ b/drivers/gpu/drm/radeon/atombios_encoders.c @@ -1733,6 +1733,8 @@ radeon_atom_encoder_dpms_ext(struct drm_encoder *encoder, } } +extern void rv6xx_reset_lvtm_data_sync(struct radeon_device *rdev); + static void radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode) { @@ -1744,6 +1746,14 @@ radeon_atom_encoder_dpms(struct drm_encoder *encoder, int mode) DRM_DEBUG_KMS("encoder dpms %d to mode %d, devices %08x, active_devices %08x\n", radeon_encoder->encoder_id, mode, radeon_encoder->devices, radeon_encoder->active_device); + + switch (radeon_encoder->encoder_id) { + case ENCODER_OBJECT_ID_INTERNAL_LVTM1: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: + rv6xx_reset_lvtm_data_sync(rdev); + break; + } + switch (radeon_encoder->encoder_id) { case ENCODER_OBJECT_ID_INTERNAL_TMDS1: case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1: diff --git a/drivers/gpu/drm/radeon/rv6xx_dpm.c b/drivers/gpu/drm/radeon/rv6xx_dpm.c index 363018c..e5bcb90 100644 --- a/drivers/gpu/drm/radeon/rv6xx_dpm.c +++ b/drivers/gpu/drm/radeon/rv6xx_dpm.c @@ -1482,7 +1482,7 @@ static void rv6xx_enable_spread_spectrum(struct radeon_device *rdev, } } -static void rv6xx_reset_lvtm_data_sync(struct radeon_device *rdev) +void rv6xx_reset_lvtm_data_sync(struct radeon_device *rdev) { if (ASIC_IS_DCE3(rdev)) WREG32_P(DCE3_LVTMA_DATA_SYNCHRONIZATION, LVTMA_PFREQCHG, ~LVTMA_PFREQCHG);