diff options
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_drv.h')
| -rw-r--r-- | drivers/gpu/drm/omapdrm/omap_drv.h | 24 | 
1 files changed, 24 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h b/drivers/gpu/drm/omapdrm/omap_drv.h index 591d4c273f02..825960fd3ea9 100644 --- a/drivers/gpu/drm/omapdrm/omap_drv.h +++ b/drivers/gpu/drm/omapdrm/omap_drv.h @@ -14,6 +14,7 @@  #include "dss/omapdss.h"  #include "dss/dss.h" +#include <drm/drm_atomic.h>  #include <drm/drm_gem.h>  #include <drm/omap_drm.h> @@ -24,6 +25,7 @@  #include "omap_gem.h"  #include "omap_irq.h"  #include "omap_plane.h" +#include "omap_overlay.h"  #define DBG(fmt, ...) DRM_DEBUG_DRIVER(fmt"\n", ##__VA_ARGS__)  #define VERB(fmt, ...) if (0) DRM_DEBUG_DRIVER(fmt, ##__VA_ARGS__) /* verbose debug */ @@ -40,6 +42,19 @@ struct omap_drm_pipeline {  	unsigned int alias_id;  }; +/* + * Global private object state for tracking resources that are shared across + * multiple kms objects (planes/crtcs/etc). + */ +#define to_omap_global_state(x) container_of(x, struct omap_global_state, base) + +struct omap_global_state { +	struct drm_private_state base; + +	/* global atomic state of assignment between overlays and planes */ +	struct drm_plane *hwoverlay_to_plane[8]; +}; +  struct omap_drm_private {  	struct drm_device *ddev;  	struct device *dev; @@ -57,6 +72,11 @@ struct omap_drm_private {  	unsigned int num_planes;  	struct drm_plane *planes[8]; +	unsigned int num_ovls; +	struct omap_hw_overlay *overlays[8]; + +	struct drm_private_obj glob_obj; +  	struct drm_fb_helper *fbdev;  	struct workqueue_struct *wq; @@ -85,4 +105,8 @@ struct omap_drm_private {  void omap_debugfs_init(struct drm_minor *minor); +struct omap_global_state * __must_check omap_get_global_state(struct drm_atomic_state *s); + +struct omap_global_state *omap_get_existing_global_state(struct omap_drm_private *priv); +  #endif /* __OMAPDRM_DRV_H__ */ |