Commit 558de5c1 authored by Sean Paul's avatar Sean Paul Committed by Inki Dae

drm/exynos: Don't keep dpms state in encoder

This patch removes the dpms state tracking in encoder. This
state is at best confusing and at worst incorrect since the display
drivers can turn on and off without propagating the value.
Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
Reviewed-by: default avatarTomasz Figa <t.figa@samsung.com>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
parent 54c40ded
...@@ -28,32 +28,22 @@ ...@@ -28,32 +28,22 @@
* @drm_encoder: encoder object. * @drm_encoder: encoder object.
* @manager: specific encoder has its own manager to control a hardware * @manager: specific encoder has its own manager to control a hardware
* appropriately and we can access a hardware drawing on this manager. * appropriately and we can access a hardware drawing on this manager.
* @dpms: store the encoder dpms value.
*/ */
struct exynos_drm_encoder { struct exynos_drm_encoder {
struct drm_crtc *old_crtc; struct drm_crtc *old_crtc;
struct drm_encoder drm_encoder; struct drm_encoder drm_encoder;
struct exynos_drm_manager *manager; struct exynos_drm_manager *manager;
int dpms;
}; };
static void exynos_drm_encoder_dpms(struct drm_encoder *encoder, int mode) static void exynos_drm_encoder_dpms(struct drm_encoder *encoder, int mode)
{ {
struct exynos_drm_manager *manager = exynos_drm_get_manager(encoder); struct exynos_drm_manager *manager = exynos_drm_get_manager(encoder);
struct exynos_drm_encoder *exynos_encoder = to_exynos_encoder(encoder);
struct exynos_drm_display_ops *display_ops = manager->display_ops; struct exynos_drm_display_ops *display_ops = manager->display_ops;
DRM_DEBUG_KMS("encoder dpms: %d\n", mode); DRM_DEBUG_KMS("encoder dpms: %d\n", mode);
if (exynos_encoder->dpms == mode) {
DRM_DEBUG_KMS("desired dpms mode is same as previous one.\n");
return;
}
if (display_ops && display_ops->dpms) if (display_ops && display_ops->dpms)
display_ops->dpms(manager->ctx, mode); display_ops->dpms(manager->ctx, mode);
exynos_encoder->dpms = mode;
} }
static bool static bool
...@@ -157,12 +147,6 @@ static void exynos_drm_encoder_commit(struct drm_encoder *encoder) ...@@ -157,12 +147,6 @@ static void exynos_drm_encoder_commit(struct drm_encoder *encoder)
if (manager_ops && manager_ops->commit) if (manager_ops && manager_ops->commit)
manager_ops->commit(manager); manager_ops->commit(manager);
/*
* In case of setcrtc, there is no way to update encoder's dpms
* so update it here.
*/
exynos_encoder->dpms = DRM_MODE_DPMS_ON;
} }
void exynos_drm_encoder_complete_scanout(struct drm_framebuffer *fb) void exynos_drm_encoder_complete_scanout(struct drm_framebuffer *fb)
...@@ -281,7 +265,6 @@ exynos_drm_encoder_create(struct drm_device *dev, ...@@ -281,7 +265,6 @@ exynos_drm_encoder_create(struct drm_device *dev,
if (!exynos_encoder) if (!exynos_encoder)
return NULL; return NULL;
exynos_encoder->dpms = DRM_MODE_DPMS_OFF;
exynos_encoder->manager = manager; exynos_encoder->manager = manager;
encoder = &exynos_encoder->drm_encoder; encoder = &exynos_encoder->drm_encoder;
encoder->possible_crtcs = possible_crtcs; encoder->possible_crtcs = possible_crtcs;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment