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: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -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
|
|||||||
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) {
|
||||||
|
Reference in New Issue
Block a user