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