aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2015-11-05 12:36:02 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2017-04-03 05:36:40 -0400
commit8a13398c3f01bc14369b879e9158391c0d447dcc (patch)
tree44c49655a9a819a135168cb658e5f4f658cd81d2
parentc283400aa5898279dbae0fe00a2ce8e0f61eb22c (diff)
drm/omap: add dispc_ops
We want to change the dispc API from plain functions to a struct with functions pointers, so that omapdrm can call either omapdss or omapdss6 depending on the platform. This patch adds 'struct dispc_ops' and adds functions to omapdss-base to set and get the ops. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
-rw-r--r--drivers/gpu/drm/omapdrm/dss/base.c13
-rw-r--r--drivers/gpu/drm/omapdrm/dss/omapdss.h50
2 files changed, 63 insertions, 0 deletions
diff --git a/drivers/gpu/drm/omapdrm/dss/base.c b/drivers/gpu/drm/omapdrm/dss/base.c
index 03942097b9f1..7dd447e6c4d7 100644
--- a/drivers/gpu/drm/omapdrm/dss/base.c
+++ b/drivers/gpu/drm/omapdrm/dss/base.c
@@ -2,6 +2,7 @@
2#include <linux/module.h> 2#include <linux/module.h>
3 3
4static bool dss_initialized; 4static bool dss_initialized;
5static const struct dispc_ops *ops;
5 6
6void omapdss_set_is_initialized(bool set) 7void omapdss_set_is_initialized(bool set)
7{ 8{
@@ -15,6 +16,18 @@ bool omapdss_is_initialized(void)
15} 16}
16EXPORT_SYMBOL(omapdss_is_initialized); 17EXPORT_SYMBOL(omapdss_is_initialized);
17 18
19void dispc_set_ops(const struct dispc_ops *o)
20{
21 ops = o;
22}
23EXPORT_SYMBOL(dispc_set_ops);
24
25const struct dispc_ops *dispc_get_ops(void)
26{
27 return ops;
28}
29EXPORT_SYMBOL(dispc_get_ops);
30
18MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@ti.com>"); 31MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@ti.com>");
19MODULE_DESCRIPTION("OMAP Display Subsystem Base"); 32MODULE_DESCRIPTION("OMAP Display Subsystem Base");
20MODULE_LICENSE("GPL v2"); 33MODULE_LICENSE("GPL v2");
diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h
index 4d3999c18fa2..a7c2981fa322 100644
--- a/drivers/gpu/drm/omapdrm/dss/omapdss.h
+++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h
@@ -929,4 +929,54 @@ int dss_mgr_register_framedone_handler(enum omap_channel channel,
929void dss_mgr_unregister_framedone_handler(enum omap_channel channel, 929void dss_mgr_unregister_framedone_handler(enum omap_channel channel,
930 void (*handler)(void *), void *data); 930 void (*handler)(void *), void *data);
931 931
932/* dispc ops */
933
934struct dispc_ops {
935 u32 (*read_irqstatus)(void);
936 void (*clear_irqstatus)(u32 mask);
937 u32 (*read_irqenable)(void);
938 void (*write_irqenable)(u32 mask);
939
940 int (*request_irq)(irq_handler_t handler, void *dev_id);
941 void (*free_irq)(void *dev_id);
942
943 int (*runtime_get)(void);
944 void (*runtime_put)(void);
945
946 int (*get_num_ovls)(void);
947 int (*get_num_mgrs)(void);
948
949 void (*mgr_enable)(enum omap_channel channel, bool enable);
950 bool (*mgr_is_enabled)(enum omap_channel channel);
951 u32 (*mgr_get_vsync_irq)(enum omap_channel channel);
952 u32 (*mgr_get_framedone_irq)(enum omap_channel channel);
953 u32 (*mgr_get_sync_lost_irq)(enum omap_channel channel);
954 bool (*mgr_go_busy)(enum omap_channel channel);
955 void (*mgr_go)(enum omap_channel channel);
956 void (*mgr_set_lcd_config)(enum omap_channel channel,
957 const struct dss_lcd_mgr_config *config);
958 void (*mgr_set_timings)(enum omap_channel channel,
959 const struct videomode *vm);
960 void (*mgr_setup)(enum omap_channel channel,
961 const struct omap_overlay_manager_info *info);
962 enum omap_dss_output_id (*mgr_get_supported_outputs)(enum omap_channel channel);
963 u32 (*mgr_gamma_size)(enum omap_channel channel);
964 void (*mgr_set_gamma)(enum omap_channel channel,
965 const struct drm_color_lut *lut,
966 unsigned int length);
967
968 int (*ovl_enable)(enum omap_plane plane, bool enable);
969 bool (*ovl_enabled)(enum omap_plane plane);
970 void (*ovl_set_channel_out)(enum omap_plane plane,
971 enum omap_channel channel);
972 int (*ovl_setup)(enum omap_plane plane, const struct omap_overlay_info *oi,
973 bool replication, const struct videomode *vm,
974 bool mem_to_mem);
975
976 enum omap_color_mode (*ovl_get_color_modes)(enum omap_plane plane);
977};
978
979void dispc_set_ops(const struct dispc_ops *o);
980const struct dispc_ops *dispc_get_ops(void);
981
932#endif /* __OMAP_DRM_DSS_H */ 982#endif /* __OMAP_DRM_DSS_H */