diff options
Diffstat (limited to 'drivers/media/platform/vsp1/vsp1_drm.h')
-rw-r--r-- | drivers/media/platform/vsp1/vsp1_drm.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/media/platform/vsp1/vsp1_drm.h b/drivers/media/platform/vsp1/vsp1_drm.h index c8dd75b..c84bc1c 100644 --- a/drivers/media/platform/vsp1/vsp1_drm.h +++ b/drivers/media/platform/vsp1/vsp1_drm.h @@ -13,7 +13,9 @@ #ifndef __VSP1_DRM_H__ #define __VSP1_DRM_H__ +#include <linux/mutex.h> #include <linux/videodev2.h> +#include <linux/wait.h> #include "vsp1_pipe.h" @@ -22,6 +24,8 @@ * @pipe: the VSP1 pipeline used for display * @width: output display width * @height: output display height + * @force_bru_release: when set, release the BRU during the next reconfiguration + * @wait_queue: wait queue to wait for BRU release completion * @du_complete: frame completion callback for the DU driver (optional) * @du_private: data to be passed to the du_complete callback */ @@ -31,6 +35,9 @@ struct vsp1_drm_pipeline { unsigned int width; unsigned int height; + bool force_bru_release; + wait_queue_head_t wait_queue; + /* Frame synchronisation */ void (*du_complete)(void *, bool); void *du_private; @@ -39,11 +46,13 @@ struct vsp1_drm_pipeline { /** * vsp1_drm - State for the API exposed to the DRM driver * @pipe: the VSP1 DRM pipeline used for display + * @lock: protects the BRU and BRS allocation * @inputs: source crop rectangle, destination compose rectangle and z-order * position for every input (indexed by RPF index) */ struct vsp1_drm { struct vsp1_drm_pipeline pipe[VSP1_MAX_LIF]; + struct mutex lock; struct { struct v4l2_rect crop; |