From 79ddb2f0c348e991edca106a0e5ab414a822ccfc Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Sat, 26 May 2018 20:25:10 +0300 Subject: [PATCH] drm/omap: dss: Move connection checks to omapdss_device_(dis)connect When a DSS output is (dis)connected the omapdss_output_(un)set_device() function performs a sanity check to ensure that the output isn't already (dis)connected. The check is unnecessary as those situations should never happen, but can nonetheless be useful to catch driver bugs. To prepare for removal of the omapdss_output_(un)set_device() functions move the connection check to the omapdss_device_connect() function. The omapdss_device_disconnect() already contains a corresponding check. Signed-off-by: Laurent Pinchart Reviewed-by: Sebastian Reichel Signed-off-by: Tomi Valkeinen --- drivers/gpu/drm/omapdrm/dss/base.c | 1 + drivers/gpu/drm/omapdrm/dss/output.c | 29 ++--------------------------- 2 files changed, 3 insertions(+), 27 deletions(-) diff --git a/drivers/gpu/drm/omapdrm/dss/base.c b/drivers/gpu/drm/omapdrm/dss/base.c index c3e4514..02c6ed9 100644 --- a/drivers/gpu/drm/omapdrm/dss/base.c +++ b/drivers/gpu/drm/omapdrm/dss/base.c @@ -208,6 +208,7 @@ int omapdss_device_connect(struct dss_device *dss, } if (src) { + WARN_ON(src->dst); dst->src = src; src->dst = dst; } diff --git a/drivers/gpu/drm/omapdrm/dss/output.c b/drivers/gpu/drm/omapdrm/dss/output.c index 2f7a019..96d7421 100644 --- a/drivers/gpu/drm/omapdrm/dss/output.c +++ b/drivers/gpu/drm/omapdrm/dss/output.c @@ -29,61 +29,36 @@ static DEFINE_MUTEX(output_lock); int omapdss_output_set_device(struct omap_dss_device *out, struct omap_dss_device *dssdev) { - int r; + int r = 0; mutex_lock(&output_lock); - if (out->dst) { - dev_err(out->dev, - "output already has device %s connected to it\n", - out->dst->name); - r = -EINVAL; - goto err; - } - if (out->output_type != dssdev->type) { dev_err(out->dev, "output type and display type don't match\n"); r = -EINVAL; - goto err; } mutex_unlock(&output_lock); - return 0; -err: - mutex_unlock(&output_lock); - return r; } EXPORT_SYMBOL(omapdss_output_set_device); int omapdss_output_unset_device(struct omap_dss_device *out) { - int r; + int r = 0; mutex_lock(&output_lock); - if (!out->dst) { - dev_err(out->dev, - "output doesn't have a device connected to it\n"); - r = -EINVAL; - goto err; - } - if (out->dst->state != OMAP_DSS_DISPLAY_DISABLED) { dev_err(out->dev, "device %s is not disabled, cannot unset device\n", out->dst->name); r = -EINVAL; - goto err; } mutex_unlock(&output_lock); - return 0; -err: - mutex_unlock(&output_lock); - return r; } EXPORT_SYMBOL(omapdss_output_unset_device); -- 2.7.4