diff options
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/omapdrm/dss/base.c | 1 | ||||
| -rw-r--r-- | 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 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, | |||
| 208 | } | 208 | } |
| 209 | 209 | ||
| 210 | if (src) { | 210 | if (src) { |
| 211 | WARN_ON(src->dst); | ||
| 211 | dst->src = src; | 212 | dst->src = src; |
| 212 | src->dst = dst; | 213 | src->dst = dst; |
| 213 | } | 214 | } |
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); | |||
| 29 | int omapdss_output_set_device(struct omap_dss_device *out, | 29 | int omapdss_output_set_device(struct omap_dss_device *out, |
| 30 | struct omap_dss_device *dssdev) | 30 | struct omap_dss_device *dssdev) |
| 31 | { | 31 | { |
| 32 | int r; | 32 | int r = 0; |
| 33 | 33 | ||
| 34 | mutex_lock(&output_lock); | 34 | mutex_lock(&output_lock); |
| 35 | 35 | ||
| 36 | if (out->dst) { | ||
| 37 | dev_err(out->dev, | ||
| 38 | "output already has device %s connected to it\n", | ||
| 39 | out->dst->name); | ||
| 40 | r = -EINVAL; | ||
| 41 | goto err; | ||
| 42 | } | ||
| 43 | |||
| 44 | if (out->output_type != dssdev->type) { | 36 | if (out->output_type != dssdev->type) { |
| 45 | dev_err(out->dev, "output type and display type don't match\n"); | 37 | dev_err(out->dev, "output type and display type don't match\n"); |
| 46 | r = -EINVAL; | 38 | r = -EINVAL; |
| 47 | goto err; | ||
| 48 | } | 39 | } |
| 49 | 40 | ||
| 50 | mutex_unlock(&output_lock); | 41 | mutex_unlock(&output_lock); |
| 51 | 42 | ||
| 52 | return 0; | ||
| 53 | err: | ||
| 54 | mutex_unlock(&output_lock); | ||
| 55 | |||
| 56 | return r; | 43 | return r; |
| 57 | } | 44 | } |
| 58 | EXPORT_SYMBOL(omapdss_output_set_device); | 45 | EXPORT_SYMBOL(omapdss_output_set_device); |
| 59 | 46 | ||
| 60 | int omapdss_output_unset_device(struct omap_dss_device *out) | 47 | int omapdss_output_unset_device(struct omap_dss_device *out) |
| 61 | { | 48 | { |
| 62 | int r; | 49 | int r = 0; |
| 63 | 50 | ||
| 64 | mutex_lock(&output_lock); | 51 | mutex_lock(&output_lock); |
| 65 | 52 | ||
| 66 | if (!out->dst) { | ||
| 67 | dev_err(out->dev, | ||
| 68 | "output doesn't have a device connected to it\n"); | ||
| 69 | r = -EINVAL; | ||
| 70 | goto err; | ||
| 71 | } | ||
| 72 | |||
| 73 | if (out->dst->state != OMAP_DSS_DISPLAY_DISABLED) { | 53 | if (out->dst->state != OMAP_DSS_DISPLAY_DISABLED) { |
| 74 | dev_err(out->dev, | 54 | dev_err(out->dev, |
| 75 | "device %s is not disabled, cannot unset device\n", | 55 | "device %s is not disabled, cannot unset device\n", |
| 76 | out->dst->name); | 56 | out->dst->name); |
| 77 | r = -EINVAL; | 57 | r = -EINVAL; |
| 78 | goto err; | ||
| 79 | } | 58 | } |
| 80 | 59 | ||
| 81 | mutex_unlock(&output_lock); | 60 | mutex_unlock(&output_lock); |
| 82 | 61 | ||
| 83 | return 0; | ||
| 84 | err: | ||
| 85 | mutex_unlock(&output_lock); | ||
| 86 | |||
| 87 | return r; | 62 | return r; |
| 88 | } | 63 | } |
| 89 | EXPORT_SYMBOL(omapdss_output_unset_device); | 64 | EXPORT_SYMBOL(omapdss_output_unset_device); |
