drm/omap: dss: Move connection checks to omapdss_device_(dis)connect
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Sat, 26 May 2018 17:25:10 +0000 (20:25 +0300)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Mon, 3 Sep 2018 13:13:28 +0000 (16:13 +0300)
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 <laurent.pinchart@ideasonboard.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/gpu/drm/omapdrm/dss/base.c
drivers/gpu/drm/omapdrm/dss/output.c

index c3e451440d4b71b10b3d98246a0e13b067cbea02..02c6ed97d63238bcaf3542064272f73913f5055a 100644 (file)
@@ -208,6 +208,7 @@ int omapdss_device_connect(struct dss_device *dss,
        }
 
        if (src) {
+               WARN_ON(src->dst);
                dst->src = src;
                src->dst = dst;
        }
index 2f7a019d059eb4224287344ca720e30a93b28f76..96d74218cf91d0565521f5537c3d3d796b1c8257 100644 (file)
@@ -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);