r = omapdss_device_connect(src, dssdev);
if (r) {
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
omapdss_device_disconnect(src, dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int tvc_enable(struct omap_dss_device *dssdev)
r = omapdss_device_connect(src, dssdev);
if (r) {
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
omapdss_device_disconnect(src, dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int dvic_enable(struct omap_dss_device *dssdev)
r = omapdss_device_connect(src, dssdev);
if (r) {
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
omapdss_device_disconnect(src, dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int hdmic_enable(struct omap_dss_device *dssdev)
r = omapdss_device_connect(src, dssdev);
if (r) {
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
omapdss_device_disconnect(src, &ddata->dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int opa362_enable(struct omap_dss_device *dssdev)
r = omapdss_device_connect(src, dssdev);
if (r) {
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
omapdss_device_disconnect(src, &ddata->dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int tfp410_enable(struct omap_dss_device *dssdev)
r = omapdss_device_connect(src, dssdev);
if (r) {
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
omapdss_device_disconnect(src, &ddata->dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int tpd_enable(struct omap_dss_device *dssdev)
r = omapdss_device_connect(src, dssdev);
if (r) {
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
omapdss_device_disconnect(src, dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int panel_dpi_enable(struct omap_dss_device *dssdev)
err_req_vc:
omapdss_device_disconnect(src, dssdev);
err_connect:
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
src->ops->dsi.release_vc(src, ddata->channel);
omapdss_device_disconnect(src, dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int dsicm_enable(struct omap_dss_device *dssdev)
r = omapdss_device_connect(src, dssdev);
if (r) {
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
omapdss_device_disconnect(src, dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int lb035q02_enable(struct omap_dss_device *dssdev)
r = omapdss_device_connect(src, dssdev);
if (r) {
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
omapdss_device_disconnect(src, dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int nec_8048_enable(struct omap_dss_device *dssdev)
r = omapdss_device_connect(src, dssdev);
if (r) {
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
omapdss_device_disconnect(src, dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int sharp_ls_enable(struct omap_dss_device *dssdev)
r = omapdss_device_connect(src, dssdev);
if (r) {
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
omapdss_device_disconnect(src, dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int acx565akm_panel_power_on(struct omap_dss_device *dssdev)
r = omapdss_device_connect(src, dssdev);
if (r) {
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
omapdss_device_disconnect(src, dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int td028ttec1_panel_enable(struct omap_dss_device *dssdev)
r = omapdss_device_connect(src, dssdev);
if (r) {
- omap_dss_put_device(src);
+ omapdss_device_put(src);
return r;
}
omapdss_device_disconnect(src, dssdev);
- omap_dss_put_device(src);
+ omapdss_device_put(src);
}
static int tpo_td043_enable(struct omap_dss_device *dssdev)
return found;
}
+struct omap_dss_device *omapdss_device_get(struct omap_dss_device *dssdev)
+{
+ if (!try_module_get(dssdev->owner))
+ return NULL;
+
+ if (get_device(dssdev->dev) == NULL) {
+ module_put(dssdev->owner);
+ return NULL;
+ }
+
+ return dssdev;
+}
+EXPORT_SYMBOL(omapdss_device_get);
+
+void omapdss_device_put(struct omap_dss_device *dssdev)
+{
+ put_device(dssdev->dev);
+ module_put(dssdev->owner);
+}
+EXPORT_SYMBOL(omapdss_device_put);
+
struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src,
unsigned int port)
{
list_for_each_entry(dssdev, &omapdss_devices_list, list) {
if (dssdev->dev->of_node == src && dssdev->port_num == port)
- return omap_dss_get_device(dssdev);
+ return omapdss_device_get(dssdev);
}
return NULL;
done:
if (from)
- omap_dss_put_device(from);
+ omapdss_device_put(from);
if (dssdev)
- omap_dss_get_device(dssdev);
+ omapdss_device_get(dssdev);
mutex_unlock(&omapdss_devices_lock);
return dssdev;
#define DSS_SUBSYS_NAME "DISPLAY"
#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/jiffies.h>
-#include <linux/platform_device.h>
#include <linux/of.h>
#include "omapdss.h"
"display%u", id);
}
EXPORT_SYMBOL_GPL(omapdss_display_init);
-
-struct omap_dss_device *omap_dss_get_device(struct omap_dss_device *dssdev)
-{
- if (!try_module_get(dssdev->owner))
- return NULL;
-
- if (get_device(dssdev->dev) == NULL) {
- module_put(dssdev->owner);
- return NULL;
- }
-
- return dssdev;
-}
-EXPORT_SYMBOL(omap_dss_get_device);
-
-void omap_dss_put_device(struct omap_dss_device *dssdev)
-{
- put_device(dssdev->dev);
- module_put(dssdev->owner);
-}
-EXPORT_SYMBOL(omap_dss_put_device);
void omapdss_device_register(struct omap_dss_device *dssdev);
void omapdss_device_unregister(struct omap_dss_device *dssdev);
+struct omap_dss_device *omapdss_device_get(struct omap_dss_device *dssdev);
+void omapdss_device_put(struct omap_dss_device *dssdev);
struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src,
unsigned int port);
struct omap_dss_device *omapdss_device_get_next(struct omap_dss_device *from,
void omapdss_device_disconnect(struct omap_dss_device *src,
struct omap_dss_device *dst);
-struct omap_dss_device *omap_dss_get_device(struct omap_dss_device *dssdev);
-void omap_dss_put_device(struct omap_dss_device *dssdev);
-
int omap_dss_get_num_overlay_managers(void);
int omap_dss_get_num_overlays(void);
dssdev = dssdev->src;
if (dssdev->id != 0)
- return omap_dss_get_device(dssdev);
+ return omapdss_device_get(dssdev);
return NULL;
}
drm_connector_cleanup(connector);
kfree(omap_connector);
- omap_dss_put_device(dssdev);
+ omapdss_device_put(dssdev);
}
#define MAX_EDID 512
DBG("%s", dssdev->name);
- omap_dss_get_device(dssdev);
+ omapdss_device_get(dssdev);
omap_connector = kzalloc(sizeof(*omap_connector), GFP_KERNEL);
if (!omap_connector)
out = omapdss_find_output_from_display(dssdev);
channel = out->dispc_channel;
- omap_dss_put_device(out);
+ omapdss_device_put(out);
DBG("%s", channel_names[channel]);
omapdss_device_disconnect(dssdev, NULL);
priv->dssdevs[i] = NULL;
- omap_dss_put_device(dssdev);
+ omapdss_device_put(dssdev);
}
priv->num_dssdevs = 0;
for_each_dss_display(dssdev) {
r = omapdss_device_connect(dssdev, NULL);
if (r == -EPROBE_DEFER) {
- omap_dss_put_device(dssdev);
+ omapdss_device_put(dssdev);
goto cleanup;
} else if (r) {
dev_warn(dssdev->dev, "could not connect display: %s\n",
dssdev->name);
} else {
- omap_dss_get_device(dssdev);
+ omapdss_device_get(dssdev);
priv->dssdevs[priv->num_dssdevs++] = dssdev;
if (priv->num_dssdevs == ARRAY_SIZE(priv->dssdevs)) {
/* To balance the 'for_each_dss_display' loop */
- omap_dss_put_device(dssdev);
+ omapdss_device_put(dssdev);
break;
}
}