Commit ce227c41 authored by Dave Airlie's avatar Dave Airlie

drm/radeon/kms: only change mode when coherent value changes.

On X startup we were getting a flicker where there shouldn't have been one.
the X DDX calls the kernel to set the properties to the same values (yes
it could be smarter), however the kernel was doing a pointless modeset then,
making my nice smooth boot ugly.
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 65384a1d
...@@ -287,6 +287,7 @@ int radeon_connector_set_property(struct drm_connector *connector, struct drm_pr ...@@ -287,6 +287,7 @@ int radeon_connector_set_property(struct drm_connector *connector, struct drm_pr
if (property == rdev->mode_info.coherent_mode_property) { if (property == rdev->mode_info.coherent_mode_property) {
struct radeon_encoder_atom_dig *dig; struct radeon_encoder_atom_dig *dig;
bool new_coherent_mode;
/* need to find digital encoder on connector */ /* need to find digital encoder on connector */
encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS); encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TMDS);
...@@ -299,8 +300,11 @@ int radeon_connector_set_property(struct drm_connector *connector, struct drm_pr ...@@ -299,8 +300,11 @@ int radeon_connector_set_property(struct drm_connector *connector, struct drm_pr
return 0; return 0;
dig = radeon_encoder->enc_priv; dig = radeon_encoder->enc_priv;
dig->coherent_mode = val ? true : false; new_coherent_mode = val ? true : false;
radeon_property_change_mode(&radeon_encoder->base); if (dig->coherent_mode != new_coherent_mode) {
dig->coherent_mode = new_coherent_mode;
radeon_property_change_mode(&radeon_encoder->base);
}
} }
if (property == rdev->mode_info.tv_std_property) { if (property == rdev->mode_info.tv_std_property) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment