drm/omap: dss: Move display type validation to initialization time

The display type is validated when the display is connected to the DSS
output. We already have all the information we need for validation when
initializing the outputs. Move validation to output initialization to
simplify pipeline connection handling.

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-06 01:25:13 +02:00
committed by Tomi Valkeinen
parent 79ddb2f0c3
commit 713165561b
8 changed files with 72 additions and 98 deletions

View File

@@ -261,24 +261,13 @@ static int sdi_connect(struct omap_dss_device *src,
if (r)
return r;
r = omapdss_output_set_device(dst, dst);
r = omapdss_device_connect(dst->dss, dst, dst->next);
if (r) {
DSSERR("failed to connect output to new device: %s\n",
dst->name);
goto err_mgr_disconnect;
dss_mgr_disconnect(dst);
return r;
}
r = omapdss_device_connect(dst->dss, dst, dst->next);
if (r)
goto err_output_unset;
return 0;
err_output_unset:
omapdss_output_unset_device(dst);
err_mgr_disconnect:
dss_mgr_disconnect(dst);
return r;
}
static void sdi_disconnect(struct omap_dss_device *src,
@@ -304,6 +293,7 @@ static const struct omap_dss_device_ops sdi_ops = {
static int sdi_init_output(struct sdi_device *sdi)
{
struct omap_dss_device *out = &sdi->output;
int r;
out->dev = &sdi->pdev->dev;
out->id = OMAP_DSS_OUTPUT_SDI;
@@ -322,6 +312,13 @@ static int sdi_init_output(struct sdi_device *sdi)
return PTR_ERR(out->next);
}
r = omapdss_output_validate(out);
if (r) {
omapdss_device_put(out->next);
out->next = NULL;
return r;
}
omapdss_device_register(out);
return 0;