Commit 94ea29b1 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'sunxi-drm-fixes-for-4.9' of...

Merge tag 'sunxi-drm-fixes-for-4.9' of https://git.kernel.org/pub/scm/linux/kernel/git/mripard/linux into drm-fixes

sun4i-drm fixes for 4.9

A few patches to fix our error handling and our panel / bridge calls.

* tag 'sunxi-drm-fixes-for-4.9' of https://git.kernel.org/pub/scm/linux/kernel/git/mripard/linux:
  drm/sun4i: Propagate error to the caller
  drm/sun4i: Fix error handling
  drm/sun4i: rgb: Remove the bridge enable/disable functions
  drm/sun4i: rgb: Enable panel after controller
parents e2384535 4db069a2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -142,9 +142,9 @@ static int sun4i_drv_bind(struct device *dev)

	/* Create our layers */
	drv->layers = sun4i_layers_init(drm);
	if (!drv->layers) {
	if (IS_ERR(drv->layers)) {
		dev_err(drm->dev, "Couldn't create the planes\n");
		ret = -EINVAL;
		ret = PTR_ERR(drv->layers);
		goto free_drm;
	}

+8 −12
Original line number Diff line number Diff line
@@ -152,15 +152,13 @@ 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 +169,14 @@ static void sun4i_rgb_encoder_disable(struct drm_encoder *encoder)

	DRM_DEBUG_DRIVER("Disabling RGB output\n");

	sun4i_tcon_channel_disable(tcon, 0);
	if (!IS_ERR(tcon->panel))
		drm_panel_disable(tcon->panel);

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

	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,