aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/omapdrm/dss/omapdss.h
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2018-02-13 07:00:42 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2018-03-01 02:18:18 -0500
commit50638ae569dc097a95218eb70140e68aa213b07c (patch)
treeee05794dd9530d70183c7e3f5d649e2a95940e12 /drivers/gpu/drm/omapdrm/dss/omapdss.h
parentd3541ca81dbddeefa0c42df448211a9dbaef0843 (diff)
drm: omapdrm: dispc: Pass DISPC pointer to dispc_ops operations
This removes the need to access the global DISPC private data in those functions (both for the current accesses and the future ones that will be introduced when allocating the DISPC private data dynamically). In order to allow the omapdrm side to call the dispc_ops with a DISPC pointer, we also introduce a new function dss_get_dispc() to retrieve the DISPC corresponding to the DSS. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Diffstat (limited to 'drivers/gpu/drm/omapdrm/dss/omapdss.h')
-rw-r--r--drivers/gpu/drm/omapdrm/dss/omapdss.h95
1 files changed, 56 insertions, 39 deletions
diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h
index 4bf7843b4aec..a4f71e082c1c 100644
--- a/drivers/gpu/drm/omapdrm/dss/omapdss.h
+++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h
@@ -62,6 +62,8 @@
62struct dss_device; 62struct dss_device;
63struct omap_drm_private; 63struct omap_drm_private;
64struct omap_dss_device; 64struct omap_dss_device;
65struct dispc_device;
66struct dss_device;
65struct dss_lcd_mgr_config; 67struct dss_lcd_mgr_config;
66struct snd_aes_iec958; 68struct snd_aes_iec958;
67struct snd_cea_861_aud_if; 69struct snd_cea_861_aud_if;
@@ -690,49 +692,64 @@ void dss_mgr_unregister_framedone_handler(struct omap_dss_device *dssdev,
690/* dispc ops */ 692/* dispc ops */
691 693
692struct dispc_ops { 694struct dispc_ops {
693 u32 (*read_irqstatus)(void); 695 u32 (*read_irqstatus)(struct dispc_device *dispc);
694 void (*clear_irqstatus)(u32 mask); 696 void (*clear_irqstatus)(struct dispc_device *dispc, u32 mask);
695 void (*write_irqenable)(u32 mask); 697 void (*write_irqenable)(struct dispc_device *dispc, u32 mask);
696 698
697 int (*request_irq)(irq_handler_t handler, void *dev_id); 699 int (*request_irq)(struct dispc_device *dispc, irq_handler_t handler,
698 void (*free_irq)(void *dev_id); 700 void *dev_id);
699 701 void (*free_irq)(struct dispc_device *dispc, void *dev_id);
700 int (*runtime_get)(void); 702
701 void (*runtime_put)(void); 703 int (*runtime_get)(struct dispc_device *dispc);
702 704 void (*runtime_put)(struct dispc_device *dispc);
703 int (*get_num_ovls)(void); 705
704 int (*get_num_mgrs)(void); 706 int (*get_num_ovls)(struct dispc_device *dispc);
705 707 int (*get_num_mgrs)(struct dispc_device *dispc);
706 u32 (*get_memory_bandwidth_limit)(void); 708
707 709 u32 (*get_memory_bandwidth_limit)(struct dispc_device *dispc);
708 void (*mgr_enable)(enum omap_channel channel, bool enable); 710
709 bool (*mgr_is_enabled)(enum omap_channel channel); 711 void (*mgr_enable)(struct dispc_device *dispc,
710 u32 (*mgr_get_vsync_irq)(enum omap_channel channel); 712 enum omap_channel channel, bool enable);
711 u32 (*mgr_get_framedone_irq)(enum omap_channel channel); 713 bool (*mgr_is_enabled)(struct dispc_device *dispc,
712 u32 (*mgr_get_sync_lost_irq)(enum omap_channel channel); 714 enum omap_channel channel);
713 bool (*mgr_go_busy)(enum omap_channel channel); 715 u32 (*mgr_get_vsync_irq)(struct dispc_device *dispc,
714 void (*mgr_go)(enum omap_channel channel); 716 enum omap_channel channel);
715 void (*mgr_set_lcd_config)(enum omap_channel channel, 717 u32 (*mgr_get_framedone_irq)(struct dispc_device *dispc,
716 const struct dss_lcd_mgr_config *config); 718 enum omap_channel channel);
717 void (*mgr_set_timings)(enum omap_channel channel, 719 u32 (*mgr_get_sync_lost_irq)(struct dispc_device *dispc,
718 const struct videomode *vm); 720 enum omap_channel channel);
719 void (*mgr_setup)(enum omap_channel channel, 721 bool (*mgr_go_busy)(struct dispc_device *dispc,
720 const struct omap_overlay_manager_info *info); 722 enum omap_channel channel);
721 enum omap_dss_output_id (*mgr_get_supported_outputs)(enum omap_channel channel); 723 void (*mgr_go)(struct dispc_device *dispc, enum omap_channel channel);
722 u32 (*mgr_gamma_size)(enum omap_channel channel); 724 void (*mgr_set_lcd_config)(struct dispc_device *dispc,
723 void (*mgr_set_gamma)(enum omap_channel channel, 725 enum omap_channel channel,
724 const struct drm_color_lut *lut, 726 const struct dss_lcd_mgr_config *config);
725 unsigned int length); 727 void (*mgr_set_timings)(struct dispc_device *dispc,
726 728 enum omap_channel channel,
727 int (*ovl_enable)(enum omap_plane_id plane, bool enable); 729 const struct videomode *vm);
728 int (*ovl_setup)(enum omap_plane_id plane, 730 void (*mgr_setup)(struct dispc_device *dispc, enum omap_channel channel,
731 const struct omap_overlay_manager_info *info);
732 enum omap_dss_output_id (*mgr_get_supported_outputs)(
733 struct dispc_device *dispc, enum omap_channel channel);
734 u32 (*mgr_gamma_size)(struct dispc_device *dispc,
735 enum omap_channel channel);
736 void (*mgr_set_gamma)(struct dispc_device *dispc,
737 enum omap_channel channel,
738 const struct drm_color_lut *lut,
739 unsigned int length);
740
741 int (*ovl_enable)(struct dispc_device *dispc, enum omap_plane_id plane,
742 bool enable);
743 int (*ovl_setup)(struct dispc_device *dispc, enum omap_plane_id plane,
729 const struct omap_overlay_info *oi, 744 const struct omap_overlay_info *oi,
730 const struct videomode *vm, bool mem_to_mem, 745 const struct videomode *vm, bool mem_to_mem,
731 enum omap_channel channel); 746 enum omap_channel channel);
732 747
733 const u32 *(*ovl_get_color_modes)(enum omap_plane_id plane); 748 const u32 *(*ovl_get_color_modes)(struct dispc_device *dispc,
749 enum omap_plane_id plane);
734}; 750};
735 751
752struct dispc_device *dispc_get_dispc(struct dss_device *dss);
736const struct dispc_ops *dispc_get_ops(struct dss_device *dss); 753const struct dispc_ops *dispc_get_ops(struct dss_device *dss);
737 754
738bool omapdss_component_is_display(struct device_node *node); 755bool omapdss_component_is_display(struct device_node *node);