Commit 0bbbb00b authored by Maxime Ripard's avatar Maxime Ripard

drm/sun4i: defer only if we didn't find our panel

Our code currently defers our probe on any error, even if we were not
expecting to have one at all.

Make sure we return -EPROBE_DEFER only when we were supposed to have a
panel, but it's not probed yet.

Also fix a typo while we're at it.

Fixes: 29e57fab ("drm: sun4i: Add RGB output")
Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
parent bb43d40d
...@@ -425,11 +425,11 @@ static struct drm_panel *sun4i_tcon_find_panel(struct device_node *node) ...@@ -425,11 +425,11 @@ static struct drm_panel *sun4i_tcon_find_panel(struct device_node *node)
remote = of_graph_get_remote_port_parent(end_node); remote = of_graph_get_remote_port_parent(end_node);
if (!remote) { if (!remote) {
DRM_DEBUG_DRIVER("Enable to parse remote node\n"); DRM_DEBUG_DRIVER("Unable to parse remote node\n");
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
} }
return of_drm_find_panel(remote); return of_drm_find_panel(remote) ?: ERR_PTR(-EPROBE_DEFER);
} }
static int sun4i_tcon_bind(struct device *dev, struct device *master, static int sun4i_tcon_bind(struct device *dev, struct device *master,
...@@ -522,11 +522,12 @@ static int sun4i_tcon_probe(struct platform_device *pdev) ...@@ -522,11 +522,12 @@ static int sun4i_tcon_probe(struct platform_device *pdev)
* Defer the probe. * Defer the probe.
*/ */
panel = sun4i_tcon_find_panel(node); panel = sun4i_tcon_find_panel(node);
if (IS_ERR(panel)) {
/* /*
* If we don't have a panel endpoint, just go on * If we don't have a panel endpoint, just go on
*/ */
if (PTR_ERR(panel) != -ENODEV) if (PTR_ERR(panel) == -EPROBE_DEFER) {
DRM_DEBUG_DRIVER("Still waiting for our panel. Deferring...\n");
return -EPROBE_DEFER; return -EPROBE_DEFER;
} }
......
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