diff options
-rw-r--r-- | drivers/gpu/drm/omapdrm/dss/base.c | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/dss/dispc.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/dss/dss.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/dss/omapdss.h | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_crtc.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_drv.c | 5 |
6 files changed, 14 insertions, 19 deletions
diff --git a/drivers/gpu/drm/omapdrm/dss/base.c b/drivers/gpu/drm/omapdrm/dss/base.c index 6346bc967a77..c248c3c31904 100644 --- a/drivers/gpu/drm/omapdrm/dss/base.c +++ b/drivers/gpu/drm/omapdrm/dss/base.c | |||
@@ -18,10 +18,11 @@ | |||
18 | #include <linux/of.h> | 18 | #include <linux/of.h> |
19 | #include <linux/of_graph.h> | 19 | #include <linux/of_graph.h> |
20 | #include <linux/list.h> | 20 | #include <linux/list.h> |
21 | |||
22 | #include "dss.h" | ||
21 | #include "omapdss.h" | 23 | #include "omapdss.h" |
22 | 24 | ||
23 | static struct dss_device *dss_device; | 25 | static struct dss_device *dss_device; |
24 | static const struct dispc_ops *ops; | ||
25 | 26 | ||
26 | static struct list_head omapdss_comp_list; | 27 | static struct list_head omapdss_comp_list; |
27 | 28 | ||
@@ -43,15 +44,9 @@ void omapdss_set_dss(struct dss_device *dss) | |||
43 | } | 44 | } |
44 | EXPORT_SYMBOL(omapdss_set_dss); | 45 | EXPORT_SYMBOL(omapdss_set_dss); |
45 | 46 | ||
46 | void dispc_set_ops(const struct dispc_ops *o) | 47 | const struct dispc_ops *dispc_get_ops(struct dss_device *dss) |
47 | { | ||
48 | ops = o; | ||
49 | } | ||
50 | EXPORT_SYMBOL(dispc_set_ops); | ||
51 | |||
52 | const struct dispc_ops *dispc_get_ops(void) | ||
53 | { | 48 | { |
54 | return ops; | 49 | return dss->dispc_ops; |
55 | } | 50 | } |
56 | EXPORT_SYMBOL(dispc_get_ops); | 51 | EXPORT_SYMBOL(dispc_get_ops); |
57 | 52 | ||
diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c index 8019cc9f4f97..aae6037f499f 100644 --- a/drivers/gpu/drm/omapdrm/dss/dispc.c +++ b/drivers/gpu/drm/omapdrm/dss/dispc.c | |||
@@ -4622,7 +4622,7 @@ static int dispc_bind(struct device *dev, struct device *master, void *data) | |||
4622 | 4622 | ||
4623 | dispc_runtime_put(); | 4623 | dispc_runtime_put(); |
4624 | 4624 | ||
4625 | dispc_set_ops(&dispc_ops); | 4625 | dss->dispc_ops = &dispc_ops; |
4626 | 4626 | ||
4627 | dispc.debugfs = dss_debugfs_create_file(dss, "dispc", dispc_dump_regs, | 4627 | dispc.debugfs = dss_debugfs_create_file(dss, "dispc", dispc_dump_regs, |
4628 | &dispc); | 4628 | &dispc); |
@@ -4637,9 +4637,11 @@ err_runtime_get: | |||
4637 | static void dispc_unbind(struct device *dev, struct device *master, | 4637 | static void dispc_unbind(struct device *dev, struct device *master, |
4638 | void *data) | 4638 | void *data) |
4639 | { | 4639 | { |
4640 | struct dss_device *dss = dispc.dss; | ||
4641 | |||
4640 | dss_debugfs_remove_file(dispc.debugfs); | 4642 | dss_debugfs_remove_file(dispc.debugfs); |
4641 | 4643 | ||
4642 | dispc_set_ops(NULL); | 4644 | dss->dispc_ops = NULL; |
4643 | 4645 | ||
4644 | pm_runtime_disable(dev); | 4646 | pm_runtime_disable(dev); |
4645 | 4647 | ||
diff --git a/drivers/gpu/drm/omapdrm/dss/dss.h b/drivers/gpu/drm/omapdrm/dss/dss.h index 764c52025a27..348378f1b5a5 100644 --- a/drivers/gpu/drm/omapdrm/dss/dss.h +++ b/drivers/gpu/drm/omapdrm/dss/dss.h | |||
@@ -271,6 +271,8 @@ struct dss_device { | |||
271 | struct dss_pll *plls[4]; | 271 | struct dss_pll *plls[4]; |
272 | struct dss_pll *video1_pll; | 272 | struct dss_pll *video1_pll; |
273 | struct dss_pll *video2_pll; | 273 | struct dss_pll *video2_pll; |
274 | |||
275 | const struct dispc_ops *dispc_ops; | ||
274 | }; | 276 | }; |
275 | 277 | ||
276 | /* core */ | 278 | /* core */ |
diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h index 312485714703..4bf7843b4aec 100644 --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h | |||
@@ -733,8 +733,7 @@ struct dispc_ops { | |||
733 | const u32 *(*ovl_get_color_modes)(enum omap_plane_id plane); | 733 | const u32 *(*ovl_get_color_modes)(enum omap_plane_id plane); |
734 | }; | 734 | }; |
735 | 735 | ||
736 | void dispc_set_ops(const struct dispc_ops *o); | 736 | const struct dispc_ops *dispc_get_ops(struct dss_device *dss); |
737 | const struct dispc_ops *dispc_get_ops(void); | ||
738 | 737 | ||
739 | bool omapdss_component_is_display(struct device_node *node); | 738 | bool omapdss_component_is_display(struct device_node *node); |
740 | bool omapdss_component_is_output(struct device_node *node); | 739 | bool omapdss_component_is_output(struct device_node *node); |
diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c index 61d8d17a4243..ffe4f698d291 100644 --- a/drivers/gpu/drm/omapdrm/omap_crtc.c +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c | |||
@@ -117,12 +117,10 @@ static int omap_crtc_dss_connect(struct omap_drm_private *priv, | |||
117 | enum omap_channel channel, | 117 | enum omap_channel channel, |
118 | struct omap_dss_device *dst) | 118 | struct omap_dss_device *dst) |
119 | { | 119 | { |
120 | const struct dispc_ops *dispc_ops = dispc_get_ops(); | ||
121 | |||
122 | if (omap_crtc_output[channel]) | 120 | if (omap_crtc_output[channel]) |
123 | return -EINVAL; | 121 | return -EINVAL; |
124 | 122 | ||
125 | if ((dispc_ops->mgr_get_supported_outputs(channel) & dst->id) == 0) | 123 | if (!(priv->dispc_ops->mgr_get_supported_outputs(channel) & dst->id)) |
126 | return -EINVAL; | 124 | return -EINVAL; |
127 | 125 | ||
128 | omap_crtc_output[channel] = dst; | 126 | omap_crtc_output[channel] = dst; |
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c index 003445b70ee7..a93916cd0258 100644 --- a/drivers/gpu/drm/omapdrm/omap_drv.c +++ b/drivers/gpu/drm/omapdrm/omap_drv.c | |||
@@ -520,6 +520,8 @@ static int omapdrm_init(struct omap_drm_private *priv, struct device *dev) | |||
520 | DBG("%s", dev_name(dev)); | 520 | DBG("%s", dev_name(dev)); |
521 | 521 | ||
522 | priv->dev = dev; | 522 | priv->dev = dev; |
523 | priv->dss = omapdss_get_dss(); | ||
524 | priv->dispc_ops = dispc_get_ops(priv->dss); | ||
523 | 525 | ||
524 | omap_crtc_pre_init(priv); | 526 | omap_crtc_pre_init(priv); |
525 | 527 | ||
@@ -527,9 +529,6 @@ static int omapdrm_init(struct omap_drm_private *priv, struct device *dev) | |||
527 | if (ret) | 529 | if (ret) |
528 | goto err_crtc_uninit; | 530 | goto err_crtc_uninit; |
529 | 531 | ||
530 | priv->dss = omapdss_get_dss(); | ||
531 | priv->dispc_ops = dispc_get_ops(); | ||
532 | |||
533 | soc = soc_device_match(omapdrm_soc_devices); | 532 | soc = soc_device_match(omapdrm_soc_devices); |
534 | priv->omaprev = soc ? (unsigned int)soc->data : 0; | 533 | priv->omaprev = soc ? (unsigned int)soc->data : 0; |
535 | priv->wq = alloc_ordered_workqueue("omapdrm", 0); | 534 | priv->wq = alloc_ordered_workqueue("omapdrm", 0); |