diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2015-11-05 12:36:02 -0500 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2017-04-03 05:36:40 -0400 |
commit | 8a13398c3f01bc14369b879e9158391c0d447dcc (patch) | |
tree | 44c49655a9a819a135168cb658e5f4f658cd81d2 | |
parent | c283400aa5898279dbae0fe00a2ce8e0f61eb22c (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.c | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/dss/omapdss.h | 50 |
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 | ||
4 | static bool dss_initialized; | 4 | static bool dss_initialized; |
5 | static const struct dispc_ops *ops; | ||
5 | 6 | ||
6 | void omapdss_set_is_initialized(bool set) | 7 | void omapdss_set_is_initialized(bool set) |
7 | { | 8 | { |
@@ -15,6 +16,18 @@ bool omapdss_is_initialized(void) | |||
15 | } | 16 | } |
16 | EXPORT_SYMBOL(omapdss_is_initialized); | 17 | EXPORT_SYMBOL(omapdss_is_initialized); |
17 | 18 | ||
19 | void dispc_set_ops(const struct dispc_ops *o) | ||
20 | { | ||
21 | ops = o; | ||
22 | } | ||
23 | EXPORT_SYMBOL(dispc_set_ops); | ||
24 | |||
25 | const struct dispc_ops *dispc_get_ops(void) | ||
26 | { | ||
27 | return ops; | ||
28 | } | ||
29 | EXPORT_SYMBOL(dispc_get_ops); | ||
30 | |||
18 | MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@ti.com>"); | 31 | MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@ti.com>"); |
19 | MODULE_DESCRIPTION("OMAP Display Subsystem Base"); | 32 | MODULE_DESCRIPTION("OMAP Display Subsystem Base"); |
20 | MODULE_LICENSE("GPL v2"); | 33 | MODULE_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, | |||
929 | void dss_mgr_unregister_framedone_handler(enum omap_channel channel, | 929 | void 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 | |||
934 | struct 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 | |||
979 | void dispc_set_ops(const struct dispc_ops *o); | ||
980 | const struct dispc_ops *dispc_get_ops(void); | ||
981 | |||
932 | #endif /* __OMAP_DRM_DSS_H */ | 982 | #endif /* __OMAP_DRM_DSS_H */ |