Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3c31760e authored by Brian Starkey's avatar Brian Starkey Committed by Sean Paul
Browse files

drm/arm: mali-dp: Set crtc.port to the port instead of the endpoint



The CRTC's port pointer was being set to the endpoint node instead of
the port. Fix that, and hold a reference on the port node.

Signed-off-by: default avatarBrian Starkey <brian.starkey@arm.com>
Acked-by: default avatarLiviu Dudau <Liviu.Dudau@arm.com>
Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1469549725-19577-1-git-send-email-brian.starkey@arm.com
parent c084c8da
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -257,6 +257,7 @@ static int malidp_bind(struct device *dev)
{
	struct resource *res;
	struct drm_device *drm;
	struct device_node *ep;
	struct malidp_drm *malidp;
	struct malidp_hw_device *hwdev;
	struct platform_device *pdev = to_platform_device(dev);
@@ -360,11 +361,12 @@ static int malidp_bind(struct device *dev)
		goto register_fail;

	/* Set the CRTC's port so that the encoder component can find it */
	malidp->crtc.port = of_graph_get_next_endpoint(dev->of_node, NULL);
	ep = of_graph_get_next_endpoint(dev->of_node, NULL);
	if (!ep)
		goto port_fail;
	malidp->crtc.port = of_get_next_parent(ep);

	ret = component_bind_all(dev, drm);
	of_node_put(malidp->crtc.port);

	if (ret) {
		DRM_ERROR("Failed to bind all components\n");
		goto bind_fail;
@@ -402,6 +404,9 @@ static int malidp_bind(struct device *dev)
irq_init_fail:
	component_unbind_all(dev, drm);
bind_fail:
	of_node_put(malidp->crtc.port);
	malidp->crtc.port = NULL;
port_fail:
	drm_dev_unregister(drm);
register_fail:
	malidp_de_planes_destroy(drm);
@@ -435,6 +440,8 @@ static void malidp_unbind(struct device *dev)
	malidp_de_irq_fini(drm);
	drm_vblank_cleanup(drm);
	component_unbind_all(dev, drm);
	of_node_put(malidp->crtc.port);
	malidp->crtc.port = NULL;
	drm_dev_unregister(drm);
	malidp_de_planes_destroy(drm);
	drm_mode_config_cleanup(drm);