drm/omap: dss: Handle DPI and SDI port initialization failures

The dpi_init_port() and sdi_init_port() functions can return errors but
their return value is ignored. This prevents both probe failures and
probe deferral from working correctly. Propagate the errors up the call
stack.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
Laurent Pinchart 2018-03-07 20:34:42 +02:00 committed by Tomi Valkeinen
parent cc1876ce57
commit 8023651bd3
1 changed files with 10 additions and 3 deletions

View File

@ -1183,7 +1183,8 @@ static int dss_init_ports(struct dss_device *dss)
struct platform_device *pdev = dss->pdev;
struct device_node *parent = pdev->dev.of_node;
struct device_node *port;
int i;
unsigned int i;
int r;
for (i = 0; i < dss->feat->num_ports; i++) {
port = of_graph_get_port_by_id(parent, i);
@ -1192,11 +1193,17 @@ static int dss_init_ports(struct dss_device *dss)
switch (dss->feat->ports[i]) {
case OMAP_DISPLAY_TYPE_DPI:
dpi_init_port(dss, pdev, port, dss->feat->model);
r = dpi_init_port(dss, pdev, port, dss->feat->model);
if (r)
return r;
break;
case OMAP_DISPLAY_TYPE_SDI:
sdi_init_port(dss, pdev, port);
r = sdi_init_port(dss, pdev, port);
if (r)
return r;
break;
default:
break;
}