drm: rcar-du: Clamp DPMS states to on and off
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Tue, 9 Dec 2014 11:19:10 +0000 (13:19 +0200)
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Tue, 23 Dec 2014 10:01:52 +0000 (12:01 +0200)
The intermediate DPMS standby and suspend states are a thing from the
past. They only matter in practice for VGA CRT monitors, and are just a
power saving vs. resume time optimization. Given that they have never
been implemented properly in the rcar-du driver and that the Intel
driver has dropped them on the vga port years ago, it's safe to only
care about the on and off states.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
drivers/gpu/drm/rcar-du/rcar_du_crtc.c
drivers/gpu/drm/rcar-du/rcar_du_encoder.c
drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c

index 25b762b5876502afa2f7874ac2cb3ed5cfacc51d..86766cc6360a09ee1494ab1b85862651f6cc66e6 100644 (file)
@@ -347,6 +347,9 @@ static void rcar_du_crtc_dpms(struct drm_crtc *crtc, int mode)
 {
        struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
 
+       if (mode != DRM_MODE_DPMS_ON)
+               mode = DRM_MODE_DPMS_OFF;
+
        if (rcrtc->dpms == mode)
                return;
 
index 243aba8d4dd270ad74d3d66f52a5c7bc82e7ed9d..279167f783f67857ee3b37cd491419626933399d 100644 (file)
@@ -46,6 +46,9 @@ static void rcar_du_encoder_dpms(struct drm_encoder *encoder, int mode)
 {
        struct rcar_du_encoder *renc = to_rcar_encoder(encoder);
 
+       if (mode != DRM_MODE_DPMS_ON)
+               mode = DRM_MODE_DPMS_OFF;
+
        if (renc->lvds)
                rcar_du_lvdsenc_dpms(renc->lvds, encoder->crtc, mode);
 }
index 0d774a937e7964407f21d987afbab1866a8fba3e..221f0a17fd6a62bbde33950e8529ce371aff9323 100644 (file)
@@ -37,6 +37,9 @@ static void rcar_du_hdmienc_dpms(struct drm_encoder *encoder, int mode)
        struct rcar_du_hdmienc *hdmienc = to_rcar_hdmienc(encoder);
        struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder);
 
+       if (mode != DRM_MODE_DPMS_ON)
+               mode = DRM_MODE_DPMS_OFF;
+
        if (hdmienc->dpms == mode)
                return;