diff options
Diffstat (limited to 'drivers/gpu/drm/vc4/vc4_drv.h')
| -rw-r--r-- | drivers/gpu/drm/vc4/vc4_drv.h | 25 | 
1 files changed, 14 insertions, 11 deletions
| diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h index 90b911fd2a7f..c5f2944d5bc6 100644 --- a/drivers/gpu/drm/vc4/vc4_drv.h +++ b/drivers/gpu/drm/vc4/vc4_drv.h @@ -14,6 +14,7 @@  #include <drm/drm_device.h>  #include <drm/drm_encoder.h>  #include <drm/drm_gem_cma_helper.h> +#include <drm/drm_managed.h>  #include <drm/drm_mm.h>  #include <drm/drm_modeset_lock.h> @@ -71,7 +72,7 @@ struct vc4_perfmon {  };  struct vc4_dev { -	struct drm_device *dev; +	struct drm_device base;  	struct vc4_hvs *hvs;  	struct vc4_v3d *v3d; @@ -218,6 +219,7 @@ struct vc4_dev {  	struct drm_modeset_lock ctm_state_lock;  	struct drm_private_obj ctm_manager; +	struct drm_private_obj hvs_channels;  	struct drm_private_obj load_tracker;  	/* List of vc4_debugfs_info_entry for adding to debugfs once @@ -234,7 +236,7 @@ struct vc4_dev {  static inline struct vc4_dev *  to_vc4_dev(struct drm_device *dev)  { -	return (struct vc4_dev *)dev->dev_private; +	return container_of(dev, struct vc4_dev, base);  }  struct vc4_bo { @@ -287,7 +289,7 @@ struct vc4_bo {  static inline struct vc4_bo *  to_vc4_bo(struct drm_gem_object *bo)  { -	return (struct vc4_bo *)bo; +	return container_of(to_drm_gem_cma_obj(bo), struct vc4_bo, base);  }  struct vc4_fence { @@ -300,7 +302,7 @@ struct vc4_fence {  static inline struct vc4_fence *  to_vc4_fence(struct dma_fence *fence)  { -	return (struct vc4_fence *)fence; +	return container_of(fence, struct vc4_fence, base);  }  struct vc4_seqno_cb { @@ -347,7 +349,7 @@ struct vc4_plane {  static inline struct vc4_plane *  to_vc4_plane(struct drm_plane *plane)  { -	return (struct vc4_plane *)plane; +	return container_of(plane, struct vc4_plane, base);  }  enum vc4_scaling_mode { @@ -423,7 +425,7 @@ struct vc4_plane_state {  static inline struct vc4_plane_state *  to_vc4_plane_state(struct drm_plane_state *state)  { -	return (struct vc4_plane_state *)state; +	return container_of(state, struct vc4_plane_state, base);  }  enum vc4_encoder_type { @@ -499,7 +501,7 @@ struct vc4_crtc {  static inline struct vc4_crtc *  to_vc4_crtc(struct drm_crtc *crtc)  { -	return (struct vc4_crtc *)crtc; +	return container_of(crtc, struct vc4_crtc, base);  }  static inline const struct vc4_crtc_data * @@ -530,6 +532,9 @@ struct vc4_crtc_state {  		unsigned int top;  		unsigned int bottom;  	} margins; + +	/* Transitional state below, only valid during atomic commits */ +	bool update_muxing;  };  #define VC4_HVS_CHANNEL_DISABLED ((unsigned int)-1) @@ -537,7 +542,7 @@ struct vc4_crtc_state {  static inline struct vc4_crtc_state *  to_vc4_crtc_state(struct drm_crtc_state *crtc_state)  { -	return (struct vc4_crtc_state *)crtc_state; +	return container_of(crtc_state, struct vc4_crtc_state, base);  }  #define V3D_READ(offset) readl(vc4->v3d->regs + offset) @@ -809,7 +814,6 @@ struct drm_gem_object *vc4_prime_import_sg_table(struct drm_device *dev,  						 struct sg_table *sgt);  void *vc4_prime_vmap(struct drm_gem_object *obj);  int vc4_bo_cache_init(struct drm_device *dev); -void vc4_bo_cache_destroy(struct drm_device *dev);  int vc4_bo_inc_usecnt(struct vc4_bo *bo);  void vc4_bo_dec_usecnt(struct vc4_bo *bo);  void vc4_bo_add_to_purgeable_pool(struct vc4_bo *bo); @@ -874,8 +878,7 @@ extern struct platform_driver vc4_dsi_driver;  extern const struct dma_fence_ops vc4_fence_ops;  /* vc4_gem.c */ -void vc4_gem_init(struct drm_device *dev); -void vc4_gem_destroy(struct drm_device *dev); +int vc4_gem_init(struct drm_device *dev);  int vc4_submit_cl_ioctl(struct drm_device *dev, void *data,  			struct drm_file *file_priv);  int vc4_wait_seqno_ioctl(struct drm_device *dev, void *data, | 
