Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce227c41 authored by Dave Airlie's avatar Dave Airlie
Browse files

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
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -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,9 +300,12 @@ 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;
		if (dig->coherent_mode != new_coherent_mode) {
			dig->coherent_mode = new_coherent_mode;
			radeon_property_change_mode(&radeon_encoder->base);
			radeon_property_change_mode(&radeon_encoder->base);
		}
		}
	}


	if (property == rdev->mode_info.tv_std_property) {
	if (property == rdev->mode_info.tv_std_property) {
		encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TVDAC);
		encoder = radeon_find_encoder(connector, DRM_MODE_ENCODER_TVDAC);