mirror of https://gitee.com/openkylin/linux.git
drm/omap: dss: Merge two disconnection helpers
To simplify the pipeline disconnection handling merge the omapdss_device_disconnect() and omapdss_output_unset_device() functions. The device state check is now called for every device in the pipeline, extending this sanity check coverage. There is no need to return an error from omapdss_device_disconnect() when the check fails, as omapdss_output_unset_device() used to do, given that we can't prevent disconnection due to device unbinding (the return value of omapdss_output_unset_device() is never checked in the current code for that reason). 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:
parent
713165561b
commit
3be0f15bd6
|
@ -235,6 +235,8 @@ void omapdss_device_disconnect(struct omap_dss_device *src,
|
|||
src->dst = NULL;
|
||||
}
|
||||
|
||||
WARN_ON(dst->state != OMAP_DSS_DISPLAY_DISABLED);
|
||||
|
||||
if (dst->driver)
|
||||
dst->driver->disconnect(src, dst);
|
||||
else
|
||||
|
|
|
@ -633,7 +633,6 @@ static void dpi_disconnect(struct omap_dss_device *src,
|
|||
struct omap_dss_device *dst)
|
||||
{
|
||||
omapdss_device_disconnect(dst, dst->next);
|
||||
omapdss_output_unset_device(dst);
|
||||
|
||||
dss_mgr_disconnect(dst);
|
||||
}
|
||||
|
|
|
@ -4903,7 +4903,6 @@ static void dsi_disconnect(struct omap_dss_device *src,
|
|||
struct omap_dss_device *dst)
|
||||
{
|
||||
omapdss_device_disconnect(dst, dst->next);
|
||||
omapdss_output_unset_device(dst);
|
||||
|
||||
dss_mgr_disconnect(dst);
|
||||
}
|
||||
|
|
|
@ -450,7 +450,6 @@ static void hdmi_disconnect(struct omap_dss_device *src,
|
|||
struct omap_dss_device *dst)
|
||||
{
|
||||
omapdss_device_disconnect(dst, dst->next);
|
||||
omapdss_output_unset_device(dst);
|
||||
|
||||
dss_mgr_disconnect(dst);
|
||||
}
|
||||
|
|
|
@ -455,7 +455,6 @@ static void hdmi_disconnect(struct omap_dss_device *src,
|
|||
struct omap_dss_device *dst)
|
||||
{
|
||||
omapdss_device_disconnect(dst, dst->next);
|
||||
omapdss_output_unset_device(dst);
|
||||
|
||||
dss_mgr_disconnect(dst);
|
||||
}
|
||||
|
|
|
@ -522,7 +522,6 @@ int omap_dss_get_num_overlays(void);
|
|||
#define for_each_dss_output(d) \
|
||||
while ((d = omapdss_device_get_next(d, OMAP_DSS_DEVICE_TYPE_OUTPUT)) != NULL)
|
||||
int omapdss_output_validate(struct omap_dss_device *out);
|
||||
int omapdss_output_unset_device(struct omap_dss_device *out);
|
||||
|
||||
typedef void (*omap_dispc_isr_t) (void *arg, u32 mask);
|
||||
int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask);
|
||||
|
|
|
@ -24,8 +24,6 @@
|
|||
#include "dss.h"
|
||||
#include "omapdss.h"
|
||||
|
||||
static DEFINE_MUTEX(output_lock);
|
||||
|
||||
int omapdss_output_validate(struct omap_dss_device *out)
|
||||
{
|
||||
if (out->next && out->output_type != out->next->type) {
|
||||
|
@ -37,25 +35,6 @@ int omapdss_output_validate(struct omap_dss_device *out)
|
|||
}
|
||||
EXPORT_SYMBOL(omapdss_output_validate);
|
||||
|
||||
int omapdss_output_unset_device(struct omap_dss_device *out)
|
||||
{
|
||||
int r = 0;
|
||||
|
||||
mutex_lock(&output_lock);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
mutex_unlock(&output_lock);
|
||||
|
||||
return r;
|
||||
}
|
||||
EXPORT_SYMBOL(omapdss_output_unset_device);
|
||||
|
||||
int dss_install_mgr_ops(struct dss_device *dss,
|
||||
const struct dss_mgr_ops *mgr_ops,
|
||||
struct omap_drm_private *priv)
|
||||
|
|
|
@ -274,7 +274,6 @@ static void sdi_disconnect(struct omap_dss_device *src,
|
|||
struct omap_dss_device *dst)
|
||||
{
|
||||
omapdss_device_disconnect(dst, dst->next);
|
||||
omapdss_output_unset_device(dst);
|
||||
|
||||
dss_mgr_disconnect(dst);
|
||||
}
|
||||
|
|
|
@ -713,7 +713,6 @@ static void venc_disconnect(struct omap_dss_device *src,
|
|||
struct omap_dss_device *dst)
|
||||
{
|
||||
omapdss_device_disconnect(dst, dst->next);
|
||||
omapdss_output_unset_device(dst);
|
||||
|
||||
dss_mgr_disconnect(dst);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue