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

Commit 811aaa55 authored by Keith Packard's avatar Keith Packard Committed by Linus Torvalds
Browse files

drm: Only set DPMS ON when actually configuring a mode

In drm_crtc_helper_set_config, instead of always forcing all outputs
to DRM_MODE_DPMS_ON, only set them if the CRTC is actually getting a
mode set, as any mode set will turn all outputs on.

This fixes https://lkml.org/lkml/2011/1/24/457



Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
Cc: stable@kernel.org (2.6.37)
Reported-and-tested-by: default avatarCarlos R. Mafra <crmafra2@gmail.com>
Tested-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 89840966
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -665,6 +665,12 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
				ret = -EINVAL;
				goto fail;
			}
			DRM_DEBUG_KMS("Setting connector DPMS state to on\n");
			for (i = 0; i < set->num_connectors; i++) {
				DRM_DEBUG_KMS("\t[CONNECTOR:%d:%s] set DPMS on\n", set->connectors[i]->base.id,
					      drm_get_connector_name(set->connectors[i]));
				set->connectors[i]->dpms = DRM_MODE_DPMS_ON;
			}
		}
		drm_helper_disable_unused_functions(dev);
	} else if (fb_changed) {
@@ -681,12 +687,6 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
			goto fail;
		}
	}
	DRM_DEBUG_KMS("Setting connector DPMS state to on\n");
	for (i = 0; i < set->num_connectors; i++) {
		DRM_DEBUG_KMS("\t[CONNECTOR:%d:%s] set DPMS on\n", set->connectors[i]->base.id,
			      drm_get_connector_name(set->connectors[i]));
		set->connectors[i]->dpms = DRM_MODE_DPMS_ON;
	}

	kfree(save_connectors);
	kfree(save_encoders);