drm/tegra: DPMS off/on in encoder prepare/commit
authorSean Paul <seanpaul@chromium.org>
Wed, 29 Oct 2014 19:33:35 +0000 (15:33 -0400)
committerThierry Reding <treding@nvidia.com>
Thu, 13 Nov 2014 15:12:04 +0000 (16:12 +0100)
Previously the panel and output were only enabled on encoder->dpms(). If
userspace called dpms on before doing a modeset, the driver would get into
a state where the connector had a dpms state of ON, but the encoder and output
were not enabled (because the encoder is not yet attached to the connector).
Subsequent dpms ON calls are ignored b/c the connector's state already matches
the desired state.

This patch enables/disables the panel and output on modeset as well, so we
can catch the above case.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/drm/tegra/output.c

index 6b393cfbb5e7bab2772c17adbd8946506b1b1172..e6cfbde36f97349ced41dbf701571fa2a479ac3c 100644 (file)
@@ -157,10 +157,12 @@ static bool tegra_encoder_mode_fixup(struct drm_encoder *encoder,
 
 static void tegra_encoder_prepare(struct drm_encoder *encoder)
 {
+       tegra_encoder_dpms(encoder, DRM_MODE_DPMS_OFF);
 }
 
 static void tegra_encoder_commit(struct drm_encoder *encoder)
 {
+       tegra_encoder_dpms(encoder, DRM_MODE_DPMS_ON);
 }
 
 static void tegra_encoder_mode_set(struct drm_encoder *encoder,