Commit 5647b25c authored by Jonathan Liu's avatar Jonathan Liu Committed by Maxime Ripard
Browse files

drm/sun4i: rgb: Enable panel after controller



The panel should be enabled after the controller so that we do not have
visual glitches on the panel while the controller is setup. Similarly,
the panel should be disabled before the controller.

Signed-off-by: default avatarJonathan Liu <net147@gmail.com>
Reviewed-by: default avatarSean Paul <seanpaul@chromium.org>
Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
parent 1001354c
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -152,15 +152,16 @@ static void sun4i_rgb_encoder_enable(struct drm_encoder *encoder)

	DRM_DEBUG_DRIVER("Enabling RGB output\n");

	if (!IS_ERR(tcon->panel)) {
	if (!IS_ERR(tcon->panel))
		drm_panel_prepare(tcon->panel);
		drm_panel_enable(tcon->panel);
	}

	/* encoder->bridge can be NULL; drm_bridge_enable checks for it */
	drm_bridge_enable(encoder->bridge);

	sun4i_tcon_channel_enable(tcon, 0);

	if (!IS_ERR(tcon->panel))
		drm_panel_enable(tcon->panel);
}

static void sun4i_rgb_encoder_disable(struct drm_encoder *encoder)
@@ -171,16 +172,17 @@ static void sun4i_rgb_encoder_disable(struct drm_encoder *encoder)

	DRM_DEBUG_DRIVER("Disabling RGB output\n");

	if (!IS_ERR(tcon->panel))
		drm_panel_disable(tcon->panel);

	sun4i_tcon_channel_disable(tcon, 0);

	/* encoder->bridge can be NULL; drm_bridge_disable checks for it */
	drm_bridge_disable(encoder->bridge);

	if (!IS_ERR(tcon->panel)) {
		drm_panel_disable(tcon->panel);
	if (!IS_ERR(tcon->panel))
		drm_panel_unprepare(tcon->panel);
}
}

static void sun4i_rgb_encoder_mode_set(struct drm_encoder *encoder,
				       struct drm_display_mode *mode,