Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d3541ca8 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Tomi Valkeinen
Browse files

drm: omapdrm: dss: Store dispc ops in dss_device structure



Remove the global dispc ops variable by storing it in the dss_device
structure.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarSebastian Reichel <sebastian.reichel@collabora.co.uk>
parent 72877cf3
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -18,10 +18,11 @@
#include <linux/of.h>
#include <linux/of_graph.h>
#include <linux/list.h>

#include "dss.h"
#include "omapdss.h"

static struct dss_device *dss_device;
static const struct dispc_ops *ops;

static struct list_head omapdss_comp_list;

@@ -43,15 +44,9 @@ void omapdss_set_dss(struct dss_device *dss)
}
EXPORT_SYMBOL(omapdss_set_dss);

void dispc_set_ops(const struct dispc_ops *o)
{
	ops = o;
}
EXPORT_SYMBOL(dispc_set_ops);

const struct dispc_ops *dispc_get_ops(void)
const struct dispc_ops *dispc_get_ops(struct dss_device *dss)
{
	return ops;
	return dss->dispc_ops;
}
EXPORT_SYMBOL(dispc_get_ops);

+4 −2
Original line number Diff line number Diff line
@@ -4622,7 +4622,7 @@ static int dispc_bind(struct device *dev, struct device *master, void *data)

	dispc_runtime_put();

	dispc_set_ops(&dispc_ops);
	dss->dispc_ops = &dispc_ops;

	dispc.debugfs = dss_debugfs_create_file(dss, "dispc", dispc_dump_regs,
						&dispc);
@@ -4637,9 +4637,11 @@ static int dispc_bind(struct device *dev, struct device *master, void *data)
static void dispc_unbind(struct device *dev, struct device *master,
			       void *data)
{
	struct dss_device *dss = dispc.dss;

	dss_debugfs_remove_file(dispc.debugfs);

	dispc_set_ops(NULL);
	dss->dispc_ops = NULL;

	pm_runtime_disable(dev);

+2 −0
Original line number Diff line number Diff line
@@ -271,6 +271,8 @@ struct dss_device {
	struct dss_pll *plls[4];
	struct dss_pll	*video1_pll;
	struct dss_pll	*video2_pll;

	const struct dispc_ops *dispc_ops;
};

/* core */
+1 −2
Original line number Diff line number Diff line
@@ -733,8 +733,7 @@ struct dispc_ops {
	const u32 *(*ovl_get_color_modes)(enum omap_plane_id plane);
};

void dispc_set_ops(const struct dispc_ops *o);
const struct dispc_ops *dispc_get_ops(void);
const struct dispc_ops *dispc_get_ops(struct dss_device *dss);

bool omapdss_component_is_display(struct device_node *node);
bool omapdss_component_is_output(struct device_node *node);
+1 −3
Original line number Diff line number Diff line
@@ -117,12 +117,10 @@ static int omap_crtc_dss_connect(struct omap_drm_private *priv,
		enum omap_channel channel,
		struct omap_dss_device *dst)
{
	const struct dispc_ops *dispc_ops = dispc_get_ops();

	if (omap_crtc_output[channel])
		return -EINVAL;

	if ((dispc_ops->mgr_get_supported_outputs(channel) & dst->id) == 0)
	if (!(priv->dispc_ops->mgr_get_supported_outputs(channel) & dst->id))
		return -EINVAL;

	omap_crtc_output[channel] = dst;
Loading