summaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2018-05-26 20:25:10 +0300
committerTomi Valkeinen <tomi.valkeinen@ti.com>2018-09-03 16:13:28 +0300
commit79ddb2f0c348e991edca106a0e5ab414a822ccfc (patch)
tree2f120c440d6b07294f324d20e5b6b48cb4a63ea4 /drivers/gpu
parent511afb44d72aa7b6b871fa71f829afaaa27e84f0 (diff)
downloadlinux-79ddb2f0c348e991edca106a0e5ab414a822ccfc.tar.bz2
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 <laurent.pinchart@ideasonboard.com> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/omapdrm/dss/base.c1
-rw-r--r--drivers/gpu/drm/omapdrm/dss/output.c29
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 c3e451440d4b..02c6ed97d632 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 2f7a019d059e..96d74218cf91 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);