1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Broadcom BM2835 V4L2 driver
4  *
5  * Copyright © 2013 Raspberry Pi (Trading) Ltd.
6  *
7  * Authors: Vincent Sanders <vincent.sanders@collabora.co.uk>
8  *          Dave Stevenson <dsteve@broadcom.com>
9  *          Simon Mellor <simellor@broadcom.com>
10  *          Luke Diamand <luked@broadcom.com>
11  *
12  * MMAL structures
13  *
14  */
15 
16 #define MMAL_FOURCC(a, b, c, d) ((a) | (b << 8) | (c << 16) | (d << 24))
17 #define MMAL_MAGIC MMAL_FOURCC('m', 'm', 'a', 'l')
18 
19 /** Special value signalling that time is not known */
20 #define MMAL_TIME_UNKNOWN BIT_ULL(63)
21 
22 struct mmal_msg_context;
23 
24 /* mapping between v4l and mmal video modes */
25 struct mmal_fmt {
26 	char  *name;
27 	u32   fourcc;          /* v4l2 format id */
28 	int   flags;           /* v4l2 flags field */
29 	u32   mmal;
30 	int   depth;
31 	u32   mmal_component;  /* MMAL component index to be used to encode */
32 	u32   ybbp;            /* depth of first Y plane for planar formats */
33 	bool  remove_padding;  /* Does the GPU have to remove padding,
34 				* or can we do hide padding via bytesperline.
35 				*/
36 };
37 
38 /* buffer for one video frame */
39 struct mmal_buffer {
40 	/* v4l buffer data -- must be first */
41 	struct vb2_v4l2_buffer	vb;
42 
43 	/* list of buffers available */
44 	struct list_head	list;
45 
46 	void *buffer; /* buffer pointer */
47 	unsigned long buffer_size; /* size of allocated buffer */
48 
49 	struct mmal_msg_context *msg_context;
50 };
51 
52 /* */
53 struct mmal_colourfx {
54 	s32 enable;
55 	u32 u;
56 	u32 v;
57 };
58