Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / drivers / staging / vc04_services / bcm2835-camera / mmal-common.h
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 @ 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
25 struct mmal_msg_context;
26
27 /* mapping between v4l and mmal video modes */
28 struct mmal_fmt {
29         char  *name;
30         u32   fourcc;          /* v4l2 format id */
31         int   flags;           /* v4l2 flags field */
32         u32   mmal;
33         int   depth;
34         u32   mmal_component;  /* MMAL component index to be used to encode */
35         u32   ybbp;            /* depth of first Y plane for planar formats */
36         bool  remove_padding;  /* Does the GPU have to remove padding,
37                                 * or can we do hide padding via bytesperline.
38                                 */
39 };
40
41 /* buffer for one video frame */
42 struct mmal_buffer {
43         /* v4l buffer data -- must be first */
44         struct vb2_v4l2_buffer  vb;
45
46         /* list of buffers available */
47         struct list_head        list;
48
49         void *buffer; /* buffer pointer */
50         unsigned long buffer_size; /* size of allocated buffer */
51
52         struct mmal_msg_context *msg_context;
53 };
54
55 /* */
56 struct mmal_colourfx {
57         s32 enable;
58         u32 u;
59         u32 v;
60 };
61 #endif